Witam,
Mam problem z moim układem na ATMEGA8. Po n'tym programowaniu przez ISP układ się zablokował i nijak go nie można ruszyć. Przeglądając archiwum grupy natknąłem się na posty z podobnym problemem z rozwiązaniem w postaci programatora równoległego. Ponieważ takiego nie posiadam, zbudowałem prosty układ na at90s2313 który ma mi tylko ustawić fusy do wartości domyślnych. Mikrokontroler ten nie ma odpowiedniej ilości wyjść, więc dla lini DATA zastosowałem układ ekspandera PCF8574A. Napisałem program w c który ma to wykonać, niestety (jeszcze) nie działa. Może czegoś w nocie katalogowej nie wyczytałem, może źle podłączyłem.
Na początku połączenia (wg noty):
- PAGEL do PD7
- XTAL do XTAL1
- BS2 do PC2
- XA1 do PD6
- XA0 do PD5
- BS1 do PD4
- WR do PD3
- OE do PD2
- RDY do PD1
- DATA7 do PC1
- DATA6 do PC0
- DATA5 do PB5
- DATA4 do PB4
- DATA3 do PB3
- DATA2 do PB2
- DATA1 do PB1
- DATA0 do PB0
A teraz co robię w programie:
- Na początku ustawiam wartości początkowe: OE=1 (stan wysoki), WR=1, BS1=0, BS2=0, XA0=0, XA1=0, XTAL=0, PAGEL=0, RESET=0, DATA=0x00
- Zakładam że reset w ATMEGA8 jest zablokowany, więc ustawiam: PAGEL=0, XA1=0, XA0=0, BS1=0, XTAL=0, WR=1. Podaję 12V na RESET i czekam przez ~1ms.
- Kasuję chip: XA1=1, XA0=0, BS1=0, DATA=0x80, XTAL=1, czekam ~1ms, XTAL=0, WR=0, czekam aż na RDY pojawi się stan wysoki, WR=1.
- Ustawiam fusy: XA1=1, XA0=0, BS1=0, DATA=0x40, XTAL=1, czekam ~1ms, XTAL=0, XA1=0, XA0=1, DATA=0xE1, XTAL=1, czekam ~1ms, XTAL=0, BS1=0, BS2=0, WR=0, czekam aż na RDY pojawi się stan wysoki, WR=1, RESET=0.
Wszystkie wyjścia 2313 działają, 12V jest, ekspander też działa. Może ktoś z grupowiczów zetknął się z podobnym problemem i może wskazać miejsce gdzie popełniłem błąd?
Pozdrawiam, Krzysiek