Odczyt stanu bitów: SPIEN, FSTRT oraz Lock Bits w ATMELach AT90S8515

        Aby odczytać stan bitów SPIEN, FSTRT oraz Lock Bits w ATMELach AT90S8515 należy zbudować układ jaki przedstawiłem na stronie poświęconej jego budowie

        Układ trzeba tak zbudować aby na piny: PD1, PD2, PD3, PD4, PD5, PD6, PB7-0, XTAL1 można podawać sygnały "0" lub "1". A więc w tym przypadku raczej trzeba zastosować pełną wersję mojego układu. Ten opis zamieszczam tylko dla tych osób, które już zbudowały powyższy układ i chcą się upewnić czy poprawnie owe bity zostały ustawione. Oczywiście istnieją inne metody sprawdzenia ustawienia SPIEN, FSTRT. Jeśli SPIEN jest nie zaprogramowany/uaktywniony to układu nie udaje się zaprogramować w trybie szeregowym a jeśli  FSTRT jest nie uaktywniony to oczywiście nic "nie ruszy" :-)

        Poniższy opis w dużej mierze opiera się na treści ze strony z odpowiednimi zmianami. 

Jak odczytujemy ?
1. Początkowa konfiguracja. 
 

Zanim włączymy układ (podamy odpowiednie napięcia) proponuję ustawić początkową konfigurację

- na pin ( PD2 ) OE ustawiamy "1", bo inaczej można uszkodzić porty PB7-0 - w przeciwieństwie do opisu ze strony, na ten pin w późniejszym etapie podamy "0".

- pin ( PD1 ) RDY/BSY zostawiamy "w spokoju" - ja go podłączyłem przez LEDa i opornik 471ohm do masy, podczas programowania pojawia się tu "1" logiczna.

- na pin [nr. 19] XTAL1 dajemy "0" - w czasie programowania będziemy tu podawać impuls "1",

- na pin (PD3) WR dajemy "1" - tak zostawiamy do końca naszej zabawy.,

- na pin (PD4) BS ustawiamy "0" - w przeciwieństwie do opisu ze strony, na ten pin w późniejszym etapie podamy "1".

W zasadzie przed włączeniem układu można przygotować sobie ustawienia do wydania pierwszej komendy (... po co "grzebać" gdy układ jest pod napięciem :-) ), czyli: 

- na pin (PD5) XA0 = "0",  na pin (PD6) XA1 = "1" - odpowiedzialne za uaktywnienie wprowadzanie komend,

- na piny PB0-7 dajemy odpowiednio:

  • PB0 = "0"
  • PB1 = "0"
  • PB2 = "1"
  • PB3 = "0"
  • PB4 = "0"
  • PB5 = "0"
  • PB6 = "0"
  • PB7 = "0"

   Teraz po włączeniu układu wystarczy podać na pin [nr. 19] XTAL1 impuls "1" - i już wydaliśmy układowi pierwszą  komendę.

2. Włączamy układ  
 

- na początek podajemy +5V (pin [nr. 40] VCC, masa pin [nr. 20] GND).

- następnie na RESET dajemy napięcie z zakresu od +11.5 do +12.5 V. W tym momencie na wyjściu ( PD1 ) RDY/BSY powinien zmienić się stan z "0" na "1" logiczną - oznacza to poprawne wprowadzenie układu w tryb programowania.

      Tu należy się mała uwaga: RESET przed załączeniem 5V według mnie może być w "powietrzu", potem (czyli po podaniu 5V na VCC) według dokumentacji dajemy mu "0" -> masa, następnie czekamy co najmniej 100 ns i w końcu dajemy napięcie z zakresu od +11.5 do +12.5 V. Jednak ja pominąłem podłączenie do masy -> "0" i od razu z "powietrza" przeszedłem na 12V.  I chyba można postąpić też tak, że w konfiguracji początkowej dajemy mu "0", potem przechodzimy na 12V.

W tej chwili układ jest ustawiony w tryb programowania.  (opis powyższych czynności -> dokumentacja str. 71 dół )    

     Jeszcze jedna mała uwaga: u mnie włączenie układu do 5V jest równoznaczne z podaniem sygnałów na wejścia z konfiguracji początkowej ->  wszystko jest sterowane z jednego źródła zasilania bez żadnego pierwszeństwa jednego nad drugim.

3. Podanie komendy 0000 0100 (Read Lock and Fuse Bits).
 

[Uwaga !!!  Pin OE = "1" ]

Jeśli ustawiliśmy wszystko tak jak w konfiguracji początkowej, to teraz wystarczy podać na pin [nr. 19] XTAL1 impuls "1" - i już wydaliśmy układowi pierwszą  komendę. Jeśli nie, to robimy to co poniżej:

- na pin (PD5) XA0 = "0",  na pin (PD6) XA1 = "1" - uaktywniliśmy wprowadzanie komend,

- na piny PB0-7 dajemy odpowiednio:

  • PB0 = "0"
  • PB1 = "0"
  • PB2 = "1"
  • PB3 = "0"
  • PB4 = "0"
  • PB5 = "0"
  • PB6 = "0"
  • PB7 = "0"

- na pin [nr. 19] XTAL1 podajemy impuls "1" - w tej chwili wydaliśmy układowi powyższą komendę.

4. Odczytanie stanu bitów: SPIEN, FSTRT oraz Lock Bits
 

- teraz rzecz najważniejsza, piny PB0-7 powinny być podłączone przez LEDa i opornik 471ohm do masy. W ten sposób odczytamy stan na tych wyjściach - tak, teraz to będą wyjścia. W moim układzie wystarczyło wyjąć wszystkie zworki odpowiedzialne za stan na wejściach PB0-7 by automatycznie piny te były podłączone tylko do masy właśnie przez LEDy.

- gdy już PB0-7 "przerobiliśmy" na wyjścia to możemy dopiero teraz na pin ( PD2 ) OE podać "0",

- następnie na pin (PD4) BS ustawiamy "1",

- w tej chwili na pinach PB0-7 możemy odczytać status interesujących nas bitów ("0" oznacza stan zaprogramowany - w naszym przypadku to oznacza nie świecenie LEDa). A dokładnie odpowiednie bity (nr. pina) oznaczają:

  • Bit 7 = Lock Bit 1 
  • Bit 6 = Lock Bit 2
  • Bit 5 = SPIEN Fuse bit 
  • Bit 0 = FSTRT Fuse bit 

Ważne jest, że aby móc obserwować stan tych bitów, to BS musi być ustawiony na "1".  

 

        I to już koniec .... w ten sposób można się upewnić co do stanu tych bitów. Powyższa metoda sprawdzania tych bitów nie jest może najszybsza i przyjemna ale jeśli po wielu próbach (nieudanych) dalej nie wiemy dlaczego FunCard nie działa to możemy dzięki temu sprawdzić, co jest temu winne.

Strona umieszczona na http://www.ksw-funcard.civ.pl/

 

Wróć

 wersja. 1.0