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

18F4585 - jest wykrywany, nie programuje się

barto128 25 Lis 2016 12:33 2925 14
  • #1 25 Lis 2016 12:33
    barto128
    Poziom 9  

    Witam.
    Od dwóch dni walczę z wymienionym mikrokontrolerem i przyznam że zupełnie nie wiem o co chodzi. PIC wlutowany w układ i programowany jest przez ICSP, złożyłem prosty programator COM84. PicPgm poprawnie wykrywa programator jako JDM oraz identyfikuje procka. Przy próbie zapisu dostaje błąd weryfikacji i pisze że zapis nie udany. W WinPic ta sama sytuacja. Dodam że procesor kasuje się bez problemu, gdy próbuję odczytać jego pamięć po próbie zapisu otrzymuje same 0. Czy ktoś ma pomysł o co tu chodzi?

    Poniżej log z PicPgm i w załączniku plik .hex który próbuję zapisać:

    Code:

    Autodetecting Programmer ...
    JDM Programmer connected and initialized!
    Autodetecting PIC ...
    Using QueryPerformanceCounter function for microseconds delay.
    Testing delay: 100us delay took 105us (loop counter = 100)
    Detected PIC18F4585, device ID 0x0EA7!
    Configuration bits found in HEX file (config memory length = 14 bytes)!
    JDM Programmer connected and initialized!
    Detected PIC18F4585, device ID 0x0EA7!
    Erasing Device ...
    Erasing finished!
    Programming started ...
    Verify Error: Cfg Mem 0x00000D: PIC=0x0040 Buf=0x0000
    Programming finished with verify errors!
    Finished in 9.0 seconds!

    0 14
  • Mitronik
  • #2 26 Lis 2016 10:54
    szymonjg
    Poziom 15  

    Może wsad hex być zabezpieczony przed odczytem i wtedy też program nie jest w stanie zweryfikować zapisu.

    Spróbuj napisać i wgrać prosty program do migania diodą i sprawdź czy zaprogramuje się właściwie a procesor na nim ruszy.

    0
  • Mitronik
  • #3 26 Lis 2016 12:12
    viayner
    Poziom 34  

    Witam,
    blad weryfikacji mialem czesto gdy np. zasilanie jest "zbyt slabe".
    Czy JDM zasila tylko PIC'a ? czy sa jakies dodatkowe elementy dolaczone do PIC'a w szczegolnosci na linjach PGC, PGM, Vdd, Vcc, MCLR ?
    Blad weryfikacji wystepuje na ktorym adresie - pierwsza komorka czy dalej ? widze ze pierwsza komorka = zasilanie lub obdciazone linje programujace !
    Programujesz w ukladzie - czy zasilanie reszty jest odlaczone ?
    Pozdrawiam

    0
  • #4 29 Lis 2016 00:59
    barto128
    Poziom 9  

    Witam.

    Co do wgrania prostego programu to niestety efekt jest ten sam.

    PIC zasilany jest oddzielnie na płytce w układzie w którym docelowo ma działać. Na liniach PGC, PGD, MCLR nie ma żadnych dodatkowych elementów - wyprowadzone są na goldpiny, PGM jest połączona z masą żeby kontroler nie przechodził w LVP. W czasie programowania zasilanie jest normalnie podawane dla całej płytki i wszystkich elementów. Na porcie COM jest około 11 - 12 V. Udało mi się dzisiaj zmieniając bity konfiguracyjne pozbyć się błędów weryfikacji i niby wszystko się wgrywa i otrzymuje komunikat Programming success ale chyba w rzeczywistości kontroler się nie programuje...

    Pozdrawiam

    0
  • #5 29 Lis 2016 02:06
    szymonjg
    Poziom 15  

    Zrób odczyt flasha i wtedy sprawdź czy to co odczytane = to co zapisane.
    LVP możesz wyłączyć w bitach konfiguracyjnych.
    Sprawdź też w bitach konfiguracyjnych ustawienia oscylatora i WDT bo przez to procesor też może nie działać tak jak trzeba.

    0
  • #6 30 Lis 2016 09:24
    viayner
    Poziom 34  

    Witam,
    nie do konca rozumiem, twoj JDM zasila caly uklad z przyleglosciami ? przeciez jego wydajnosc pradowa jest za mala i bedzie generowac bledy. W notach microchipa znajdziesz jak powinny byc podpiete odpowiednei linje do programowania w ukladzie.
    To ze procesor nie wstaje moze oznaczac bledy w towim programie, moze na wstepie zaprogramuj za pomoca super prostego programu typu miganie diody led na jednym porcie aby upewnic sie co do ustawien i konfiguracji procesora.
    Pozdrawiam

    0
  • #7 30 Lis 2016 16:48
    szymonjg
    Poziom 15  

    W załączniku masz spakowany projekt w MPLAB 8.9 pod ten procesor z wyłączonymi wszystkimi zabezpieczeniami odczytu i zapisu, z wyłączonym MCLR, LVP, WDT i BOR. Program nie wymaga zewnętrznego oscylatora. Plik *.hex jest już wersją po kompilacji.
    Po wgraniu powinien migać diodą podłączoną do dowolnego pinu I/O. Jeśli Ci nadal nie będzie to działało to masz coś z programatorem nie tak.
    Test.zip Download (26.24 kB)

    0
  • #8 30 Lis 2016 23:27
    barto128
    Poziom 9  

    JDM nie zasila całego układu, jest on zasilany oddzielnie z innego źródła.

    Hex z paczki wgrał się bez problemu i diody led które są na układzie faktycznie zaczęły świecić więc kontroler jednak daje się zaprogramować.

    Pojawił się teraz inny problem - po wgraniu tego hex'a z paczki "Test" PicPgm przestał wykrywać mikrokontroler i teraz za cholerę nie mogę nic na niego wrzucić...

    0
  • #9 01 Gru 2016 01:13
    szymonjg
    Poziom 15  

    Jeśli nie programujesz przez pin LVP to pewnie dzieje się tak dlatego, że dla pewności, że nic nie będzie przeszkadzało w działaniu programu wyłączyłem w bitach konfiguracyjnych reset przez MCLR. Nie powinno to jednak stanowić problemu przy ponownym zaprogramowaniu mikrokontrolera, a przynajmniej ja nie miałem żadnych problemów programują pic'i PICkitem2. Spróbuj przerobić swój programator tak by napięcie VPP było doprowadzane tranzystorem z zewnętrznego i stabilnego źródła.
    Jeśli to też nie pomoże a wiesz już, że programator masz sprawny to możesz sobie zaprogramować nim PIC18F2550 potrzebnego do budowy PICKIT2. Zbudowanie tego programatora powinno rozwiązać masę twoich problemów z programowaniem mikrokontrolera którym teraz się zajmujesz i wszystkich innych które ten programator obsługuje.

    W załączniku masz archiwum z bardzo uproszczonym schematem wciąż działającego programatora, który bez trudu można złożyć na płytce uniwersalnej, oraz oryginalny wsad do mikrokontrolera PIC18F2550 wchodzącego w skład elementów programatora. Ewentualnie na elektrodzie są jeszcze bardziej rozbudowane schematy do w pełni funkcjonalnego PICKITa2, a nawet są gotowe projekty z klonem ICD2.
    pickit..zip Download (106.82 kB)

    0
  • #10 01 Gru 2016 10:22
    viayner
    Poziom 34  

    Witam,
    a czy mozesz sprobowac inaczej,
    podlaczasz programator tylko do PICa odlaczone jest wszystko zewnetrzne, nie ma zadnego dodatkowego zasilania itp.
    Czyli masz jakby uklad JDM -> ICSP -> PIC i sprawdz czy teraz widzi. Obawiam sie ze zewnetrzne elementy cos blokuja, a mozesz podeslac schemat, nie musi byc dokladny chodzi o otoczenie PICa.
    Pozdrawiam

    0
  • #11 01 Gru 2016 13:29
    barto128
    Poziom 9  

    Przede wszystkim to dzięki za wyrozumiałość ale z elektroniką miałem ostatni raz do czynienia na studiach i to też nie za wiele :P

    Analizując dotychczasowe poczynania stwierdzam że mikrokontroler działał prawidłowo i programował się także prawidłowo. Błędy przy odczycie i weryfikacji to chyba wynik Code Protection.

    Głównym problemem było to że po wgraniu Bootloadera PIC nie komunikował się z PC przez USB za pomocą chipu FT232RL i to w połączeniu z błędnymi odczytami zaprogramowanego PIC'a wprowadziło mnie w błąd...

    szymonjg rozumiem że po wgraniu Twojego hex'a PIC traktuje piny MCRL, PGC i PGD jako zwykłe piny I/O. W związku z tym czy jednak gdy na pin MCRL programator poda 12V nie powinien on przejść w tryb programowania?

    viayner próbowałem także sposobem o którym mówisz i PIC też był prawidłowo wykrywany. W załączniku podsyłam schemat ideowy.

    Jeszcze jedno pytanie czy FT232 wymaga jakiejś konfiguracji aby prawidłowo przesyłać dane z PIC'em przez linie TX/RX ?

    0
  • #12 01 Gru 2016 14:18
    szymonjg
    Poziom 15  

    Piny PGD i PGC zawsze są jako z zwykłe piny I/O. W opcję pinów służących do programowania wprowadza je podanie około 12V (w dokumentacji jest napisanie dokładnie jaką wartość powinno mieć to napięcie) na pin MCLR, bowiem pin MCLR/VPP właśnie nie jest takim zwykłym pinem, bo jego zadaniem jest właśnie wprowadzenie mikrokontrolera w stan umożliwiający programowanie. Jedyne co było wyłączone z zewnętrznych pinów to programowanie mikrokontrolera przez pin PGM (RB5) przez co ten pin stał się zwykłym pinem I/O i już nie trzeba tam żadnych rezystorów dawać. Poza tym, z tego co doczytałem, to programator COM84 i tak nie korzysta z tej opcji i zakładam, że go tam nie podłączałeś. Oraz wyłączyłem możliwość resetu mikrokontrolera przez podanie niskiego stanu na pin MCLR, przez co ten pin stał się teraz zwykłym pinem Input (bo opcji output to on nie ma sprzętowo), ale możliwość programowania przez podanie nań wysokiego napięcia VPP powinna być dalej zachowana.

    Tak jak napisał kolega viayner, spróbuj wyjąć mikroprocesor z układu tak aby do jego pinów nie było podłączonych dosłownie nic poza kondensatorami filtrującymi na nóżkach zasilania. Jeśli to nie pomoże to spróbuj rozbudować swój programator według schematu i podpowiedzi z tego tematu. A jak nie to czeka Cię budowa albo zakup jakiegoś bardziej rozbudowanego programatora.

    0
  • #13 02 Gru 2016 08:28
    viayner
    Poziom 34  

    Witam,
    FT232 nie wymaga inicjacji ze strony PICa to taki konwerter USB/RS232 ale po pierwsze ,usi go wykryc twoj PC i to on go inicjuje.
    Pozdrawiam

    0
  • #14 02 Gru 2016 10:46
    Urgon
    Poziom 36  

    AVE...

    Najlepszym rozwiązaniem problemu programatora z rodziny JDM/COM84 jest zakup PICKita 2/3. Na alledrogo klony są po 80 złotych, na ebaju po coś koło 50 złotych z darmową wysyłką.
    Drugą opcją dla autora jest poprosić kogoś o wgranie bootloadera lub potrzebnego programu.
    Możesz też programować PICi z użyciem Arduino:
    https://sites.google.com/site/thehighspark/arduino-pic18f
    http://pleasantlyclueless.blogspot.com/2013/11/using-arduino-as-pic-programmer.html
    https://forum.arduino.cc/index.php?topic=92929.0
    http://hackaday.com/2011/12/25/using-an-atmega8-to-program-pic24fj-chips/

    1
  • #15 06 Gru 2016 23:34
    barto128
    Poziom 9  

    Panowie dziękuje za wszelką pomoc, problem został rozwiązany :) Po pierwsze pin MCLR podpiąłem bezpośrednio pod COM a nie jak wcześniej przez rezystor. Druga sprawa to jeden z kondensatorów na skonstruowanej płytce zamiast ceramicznego zastosowałem tantalowy bo jak się okazało właśnie taki powinien być. uC zaprogramował się w końcu prawidłowo i trwało to znacznie dłużej niż poprzednio. Po podłączeniu przez USB prawidłowo komunikuje się z dedykowanymi aplikacjami i daje się programować przez USB. Jeszcze raz wielkie dzięki ;)

    1