Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

PIC16F648A - flowcode 4 i pickit3

siwo78 10 Lut 2013 20:49 4710 16
  • #1 10 Lut 2013 20:49
    siwo78
    Poziom 6  

    Witam

    Mam problem z konfiguracja i programowaniem przez PICkit3 w programie flowcode 4.
    Jak ustawić w tym oprogramowaniu żeby np PIC16F648A używał wewnetrznego generatora.

    Ustawiam typ uP:

    PIC16F648A - flowcode 4 i pickit3

    według pdf z flowcode ta konfiguracja wystarcza aby uP pracował na wewnetrznym kwarcu.

    "maluje" prosty program:
    PIC16F648A - flowcode 4 i pickit3


    przechodzę do kompilacji: (program generuje HEX- też)
    PIC16F648A - flowcode 4 i pickit3


    I tu zaczyna się problem. Programowanie bezpośrednie z flowcode, pomimo odpowiedniego ustawienia typu programatora i parametrów (zgodnie z instr. z strony http://www.matrixmultimedia.com/support/viewtopic.php?t=565 ) kończy się fiaskiem.
    PIC16F648A - flowcode 4 i pickit3


    Po zaprogramowaniu uP programem w PICkit programer - uP nie działa. Procesor przechodzi weryfikacje w na zawartość programu w pamięci w PICkit programer.

    PIC16F648A - flowcode 4 i pickit3

    Tak wygląda kod programu w C wygenerowany przez flowcode i HEX.

    Kod: c
    Zaloguj się, aby zobaczyć kod


    :02000000432893
    :08000800FF00030E8312031335
    :10001000B4000A0EB500040EB6008A110A126B284D
    :10002000C208031D14280800F930FF3E031D1528DF
    :100030000000C20B142808000730831203139F002E
    :10004000C030831681007F308316060586007F301E
    :1000500083120605C200803042048600FF30C200D1
    :100060001020F530C20010207F3083160605860070
    :100070007F30831206058600FF30C2001020F53065
    :10008000C20010202328D53083120313A000C430EF
    :10009000A100BB30A200DC30A300A401A501A60191
    :1000A000A701A801A901AA01AB01AC01AD01AE01F4
    :1000B000AF01BC01BD01B701B801BE01BF01C00164
    :1000C000C101B001B101B201B301BA01BB01B90173
    :1000D0008A110A121C2883120313360E8400350E6F
    :0C00E0008A00340E8300FF0E7F0E090022
    :02400E00383F39
    :00000001FF


    Można prosić o pomoc.

    0 16
  • #3 11 Lut 2013 10:56
    siwo78
    Poziom 6  

    Witam

    Znaczy się że flowcode generuje złe pliki HEX?

    Sytuacja jest taka że po załadowaniu pliku HEX z flowcode do real pic simulator. Program uP zachowuje się zgodnie z oczekiwaniem. Sprawdzałem zawartość uP po zaprogramowaniu przez opcję Veryfi program potwierdza zgodność pliku z zawartością. Teraz zwątpiłem w moje małe umiejętności.

    0
  • #5 11 Lut 2013 12:31
    siwo78
    Poziom 6  

    Witam

    Możliwe, sprawdzę. MPLAB nie widzi mojego PiCkit3 (nie jest to oryginał - polski odpowiednik firmy Telwis). Zrobiłem mały eksperyment, "namalowałem" w Great Cow Graphical BASIC krótki progam, PIC16F648A - flowcode 4 i pickit3

    z takimi ustawieniami

    PIC16F648A - flowcode 4 i pickit3

    jeszcze Boren - OFF i CP - OFF

    wygenerowałem Hex i po zaprogramowaniu przez PICkit3 uP. Ten zadziałał w docelowej płytce.

    A sprawdzałem po zaprogramowaniu nie mam samych FF.

    Możliwe że nie ustawiam flowcode tak jak należy?

    Dodano po 49 [minuty]:

    Witam

    Taką odpowiedz dostaję z MPLAB.

    PIC16F648A - flowcode 4 i pickit3

    0
  • #7 11 Lut 2013 16:49
    siwo78
    Poziom 6  

    Witam

    Jak to ustawić. Bo dostaje coś takiego:

    PIC16F648A - flowcode 4 i pickit3
    i
    PIC16F648A - flowcode 4 i pickit3

    Może to wina programatora?

    Dodano po 3 [godziny] 43 [minuty]:

    Witam

    Problem prawdopodobnie leży po stronie flowcode, to znalazłem:

    "Issues and troubleshooting guide for the 16F627A / 16F628A / 16F648A devices.
    Note that extra information for the non A suffixed 16F627 and 16F628 chips at the bottom.

    In user's programs:

    This has a comparator module on by default - turn it off if you want to use portA as digital i/o.

    In the config words:

    "Watchdog Timer" - disable this unless specifically required.
    "Master Clear Enable" - best to enable this (see "RA5/MCLR Pin Function Select" above)
    "Low Voltage Program" - disable this unless specifically required, or if using the "lite programmer Eblock".
    Extra information for the 16F627 / 16F628

    See comments for their 'A' variety counterparts above.
    Note that these devices do not have an external RC clock mode, so these devices can only operate with crystal clocks or internal oscillators when used in our programmer boards. "



    Już nie wiem. Chyba zrozumiałem dlaczego Kol. Urgon mówił o Mlab. Jest tam możliwość podglądu ustawień uP?


    Poddaje się. Może ktoś życzliwy skompiluje mi ten program (źródło flowcode) do pliku HEX aby można było zaprogramować uP. Dołączam też plik HEX wygenerowany przez flowcode, i pozostałe pliki. Może one pomogą w analizie przyczyny nie działania.

    0
  • #9 11 Lut 2013 19:58
    siwo78
    Poziom 6  

    Witam

    Tak. To odpowiedź programu.
    PIC16F648A - flowcode 4 i pickit3

    Moim zdaniem problem tkwi nie w tym miejscu. Problemem będzie generowany plik Hex. Nie tyle plik, co ustawienia uP w nim zapisane. Nie mam na tyle doświadczenia, a moja znajomość angielskiego wspomagana Google tłumaczem, żeby dojść sedna sprawy gdzie tkwi problem jest zbyt mała. Jak już pisałem wcześniej programuje uP plikiem Hex generowanym przez flowcode - PicKit3, programem dołączonym do programatora. Weryfikacja zaprogramowanego uP - pozytywna. O dziwo w symulatorze (Real Pic Simulator) działa program zgodnie z oczekiwanien. Tylko w realnym układzie nie działa uP. Robiłem kilka prób, z innym programem CowBasic Pic na prostych programach. Pliki Hex wygenerowane przez ten program, działają bez żadnych problemów. Więc wniosek dla mnie jest jeden, jak ustawić flowcode aby odpowiednio generował plik Hex dla PIC16F648A. Spróbuję zrobić próby na innym uP z innej seri.

    0
  • #10 12 Lut 2013 12:28
    kato76
    Specjalista Automatyk

    Może się mylę ale mnie to wygląda tak jakby prądu nie było! Czy ten PIC podczas programowania napewno jest zasilany?
    Ja używam MPLaba i jeśli programuję PICa w podstawce muszę włączyć zasilanie z PICKITa. Jak to jest u Ciebie? Nie używałem nigdy FlowCode ale z tego co słychać ten program działa.

    0
  • #11 12 Lut 2013 14:08
    siwo78
    Poziom 6  

    Witam

    To była pierwsza rzecz która sprawdziłem, gdyby tak było to odczyt wcześniej zaprogramowanego układu by była nie możliwa, a nawet gdyby to by były same FFFF.
    uP programuję poza układem. na płytce zgodnie z tym:

    PIC16F648A - flowcode 4 i pickit3 .


    uP zaprogramowany plikiem HeX z innego oprogramowania niż flowcode działa bez żadnego problemu. Tylko pliki HeX wygenerowane przez flowcode mają problem.


    To może inaczej Real Pic Simulator generuje plik asm, jakim kompilatorem oprócz MLAB (przerósł mie), zamienić go na HEX. I czy w ogóle się tak da?

    0
  • #12 12 Lut 2013 20:35
    siwo78
    Poziom 6  

    Witam

    Skompilowałem plik asm, do hex (w MLAB udało sie - pogrzebałem w Google), zaprogramowałem uP, jest mały sukces, procesor zaczął reagować, jednak działanie nie jest zgodne z wersja w flowcode. Drążę dalej.

    0
  • #13 12 Lut 2013 20:46
    kato76
    Specjalista Automatyk

    Podejżałem właśnie __CONFIG w pliku automat9d.c, jest 0x3f38 i według moich obliczeń jest to ustawienie na zewnętrzny kwarc - choć mogę się oczywiście mylić. Czy tak ma być ?

    0x3F3C spróbuj.

    Sprawdziłem dzisiaj jeszcze raz i 0x3f38 jest ok. Sorry za zamieszanie.

    0
  • #14 13 Lut 2013 17:07
    siwo78
    Poziom 6  

    Witam

    To jednak wina złego ustawienia bitów konfiguracyjnych dla konkretnego uP, znalazłem odpowiedź dzięki Waszym sugesti/om/ą, rozczarowałem się chwilowo flowcode, a miało być tak fajnie plik hex i już, a tu jeszcze długa droga. Pomocna było użycie MPlab w starszej wersji i dłuuuugie ślęczenie przed monitorem z wujkiem Google. Nie zapeszam dalej się uczę, że uP to nie TTL i Cmos. Zobaczymy czy teraz odpali.

    Dodano po 38 [minuty]:

    Witam

    Próby wypadły pozytywnie, im więcej wiem, tym wiem mniej :), sprawdzę teraz na konkretnym pliku z flowcode dla mojego układu z PIC16F648A - który przyprawił mnie o ból głowy.

    Dodano po 3 [godziny] 50 [minuty]:

    Witam

    No i nie udało się, dla prostych programików typu "zapal LED i zgaś LED" działa, ale już bardziej złożone odpadają, coraz bardziej zawodzi mnie flowcode. Spróbuje CowBasicPiC zamienić mój program z flowcode, może wtedy uda się.

    0
  • #15 14 Lut 2013 00:25
    siwo78
    Poziom 6  

    Witam

    O ile w Mlab i nawet w samym programie załaczonym do PICkit3 wiem gdzie już ustawić bity odpowiedzialne za OSC i WDT itp, to tego wpisu w flowcode nie rozumiem:

    "Issues and troubleshooting guide for the 16F627A / 16F628A / 16F648A devices.
    Note that extra information for the non A suffixed 16F627 and 16F628 chips at the bottom.

    In user's programs:

    This has a comparator module on by default - turn it off if you want to use portA as digital i/o.

    In the config words:

    "Watchdog Timer" - disable this unless specifically required.
    "Master Clear Enable" - best to enable this (see "RA5/MCLR Pin Function Select" above)
    "Low Voltage Program" - disable this unless specifically required, or if using the "lite programmer Eblock".
    Extra information for the 16F627 / 16F628

    See comments for their 'A' variety counterparts above.
    Note that these devices do not have an external RC clock mode, so these devices can only operate with crystal clocks or internal oscillators when used in our programmer boards. "


    O ile dobrze zrozumiałem ten zapis to:

    Watchdog Timer - off , ustawiam
    Master Clear Enable - on
    Low Voltage Program - off
    To wtedy PortA działa jako wejścia cyfrowe? Czy jeszcze gdzieś coś ustawić?

    0
  • #16 14 Lut 2013 01:26
    dondu
    Moderator Mikrokontrolery Projektowanie

    Moja dobra rada trochę na uboczu Twojego głównego problemu - daj sobie czym prędzej spokój z FlowCode, który w tak prostym kodzie generuje instrukcje Goto. Nauczysz się używać tej instrukcji, a później będziesz miał problemy z większymi programami: http://mikrokontrolery.blogspot.com/2011/02/instrukcja-goto.html

    Masz porządny programator z możliwością debugowania, narzędzia i kompilatory darmowe (choć z ograniczeniami) ... po prostu zacznij pisać w C.

    0
  • #17 14 Lut 2013 03:27
    siwo78
    Poziom 6  

    Witam

    Udało się. Wszystko przez "default" - domyślne ustawienia. Flowcode ustawiało sobie coś , programator też, oczywiście mowa o "default" i wychodzi kaszana. No niestety trzeba wszystko sprawdzać po trzy razy i jeszcze raz. Jak Koledzy wcześniej wspominali wszystko się rozbiło o ustawienia bitów konfiguracyjnych dla uP. W moim przypadku dla mojego programu miało być 3F18, niestety programator za każdym razem wstawiał 3F38 ponieważ tak było w "default".

    Dziękuję Wszystkim za pomoc, i udzielone rady. Z mojej strony temat uważam za zamknięty.

    Dodano po 33 [minuty]:

    Witam

    dondu - masz rację, C - jest OK i ta nieszczęsna instrukcja GOTO (skok do przepaści).
    W moim wypadku uP i tak pracują wykorzystując ułamek swoich możliwości - traktuję to jako hobby. W pracy zawodowej nie jest mi to potrzebne. Gdyby było mi to potrzebne wierz mi MPLAB i C były by podstawą. A programator wiem "armata", w 99% nie wykorzystane będą jego możliwości.

    0