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

[Rozwiązano] Odczytanie programu z PIC16F818 za pomocą arduino

30 Mar 2019 14:47 369 2
  • Poziom 17  
    Witam!

    Long story short: chciałbym sprawdzić czy działa i zgrać z PIC16F818 program. Ponieważ jest to moje pierwsze i pewnie ostatnie doświadczenie z PIC'ami kupowanie programatora nie wchodzi w grę.
    Duuuużo czytałem i szukałem programatorów na arduino - raz były na wysokie napięcie, raz uniwersalne, ale zazwyczaj „niekompatybilne” z 818 (w cudzysłowiu, ponieważ te komendy zazwyczaj są podobne, ale jednak bywają różne.

    Więc do rzeczy:
    W nocie katalogowej widnieje:
    Cytat:
    The following LVP steps assume the
    LVP bit is set in the Configuration register.
    1. Apply VDD to the VDD pin.
    2. Drive MCLR low.
    3. Apply VDD to the RB3/PGM pin.
    4. Apply VDD to the MCLR pin.
    All other specifications for high-voltage ICSP apply.


    Zakładam, że LVP jest nieustawiony, ponieważ... nie mam wyboru (przez łikend brak dostępu do 12V), stąd:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Dalej (komendy ICSP):
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Stąd:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Zaś loop 2k razy robi:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    I wysyła to na konsolę.

    Reszta programu poniżej:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Program zwraca na konsolę wyłącznie jedynki.
    Czy gdzieś popełniam błąd czy też mój PIC jest martwy?

    Pozdrawiam!

    Dodano po 11 [minuty]:

    Szybka poprawka:
    do komend send_data_low/high dołożyłem na początku: pinMode(PIC_PGD, INPUT);

    i teraz zwraca:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Dodano po 19 [minuty]:

    Powtórzenie daje pobobne wyniki ale nie takie same.
  • Poziom 17  
    W tym wypadku jestem zmuszony, bo po prostu nie opłaca mi się kupować programatora. Stąd ta niezręczna kombinacja.
    Jeśli chodzi o lock fuse, to nie mam na szczęście wiele do stracenia - odczytam wtedy po prostu zera, czy FF jeśli dobrze kojarzę. Ale w tego typu urządzeniach (to nie jest coś co produkowane jest w setkach tysięcy) nie spodziewam się aż takiej dbałości, program do tego urządzenia, to nie jest jakaś genialna rzecz i pewnie sam bym był w stanie coś takiego napisać. Cena urządzenia jest raczej wynikiem hardware'u.

    Okazuje się, że przegapiłem czas jaki trzeba odczekać między wysłaniem komendy a odczytaniem danych (bodaj 1mS), jak wrócę do domu, to sprawdzę. Podejrzewam, że stąd pojawiają się te "dziwne" rzeczy na wyjściu (przerzutniki nie zdążają się ustawić?).

    Dodano po 8 [godziny] 55 [minuty]:

    Teraz są same jedynki.
    Ale, skoro zaczynam od PC = 0, to coś powinno się pojawić - nawet jeśli program jest zablokowany (choćby ID układu), prawda?

    Dodano po 14 [godziny] 57 [minuty]:

    Wygląda na to, że PIC jest padnięty, bo nie pobiera prądu nawet.