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:
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:
- 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ą:
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/
wersja. 1.0 |