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

Programator pamięci flash, AVR

29 Sty 2007 17:00 1598 4
  • Poziom 11  
    Witam,
    jestem w trakcie pisania programu do programowania pamięci flash mikrokontrolerów AVR. Programowanie szeregowe przez port LPT. Synchronizacja ok, zapis do pamięci również działa poprawnie, sprawdzałem programem ISPprog. Problem jest z odczytem czy to bitów sygnatury (odczytuje same FF), czy też pamięci flash.

    Istrukcja odczytu wygląda następująco: 0010 H000 00 aa aaaa bbbb bbbb oooo oooo
    H-który bit odczytujemy (młodszy, starszy), a-adres starsze bity,b-adres mlodsze bity, o-dane odczytane. Dane odczytuje przed zboczem opadającym SCK. Odczytane dane są identyczne jak wysłana wcześniej młodsza część adresu.
    Czym może to być spowodowane?

    Pozdrawiam musias
  • Poziom 30  
    Zapytam o resztę gdyż taki jeden ciąg to za mało.

    Generalnie musi być tak:
    - załączenie reset uC i trzymanie
    - wysłanie 3 bajtów komendy PE
    - odebranie 4 bajtu PE - i jeżeli nie równy 3 bajtowi wysłanemu to juz tu masz błąd.
    - wysłanie 3 bajtów zapytania o zerowy bajt sygnatury
    - odebranie 4 bajtu jako zerowego sygnatury
    - odczytać pozostałe 3 bajty sygnatury w sposób identyczny
    - odpuścić reset.

    1: wystawienie bitu danych
    2: opóźnienie
    3: zbocze narastające sck
    4: opóźnienie
    5: odebranie bitu
    6: zbocze opadające sck
  • Poziom 11  
    Wystawiam i odbieram bity w taki sposób jak napisałeś. Tylko co do wysyłania instrukcji zrobiłem troche inaczej:
    - SCK na 0, reset przez chwile na 1
    - dwa bajty PE a podczas wysylania trzeciego odebranie (ten bit powinien być równy drugiemu wysłanemu czyli $53 i tak właśnie jest u mnie, czyli wnioskuje z tego, że zapis i odczyt działają poprawnie)
    - wysyłam 3 bajty instukcji do odczytu sygnatury a na czwartym dostaje $FF dla wszytkich adresów (nie wiem czy powinno sie coś wysyłać podczas odczytywania 4 bajtu ?, ale nawet jak coś wysyłam to i tak jest to samo)
    - z odczytem jest tak jak napisałem wyżej
    - instrukcja chip erase oraz instukcje do zapisu flasha działają poprawnie
  • Pomocny post
    Poziom 30  
    masz źle PE zrobione.

    Wysyłasz 0xAC, 0x53, 0x34(przykład)
    i teraz wysyłasz dowolny bajt (ja zwykle 0xff) i podczas niego dopiero odczytujesz bajt z układu. Bo to jest transmisja 4 bajtowa a nie 3 jak w starych s8252,s53.
  • Poziom 11  
    Wszystko zaczeło działać poprawnie. Błąd był w instrukcji.