Witam,
oczywiscie na wstepie zaznacze, ze szukalem informacji na ten konkretny temat, jednak nic czego bym nie wiedzial juz wczesniej nie znalazlem.
Sytuacja jest nastepujaca: mam zaprojektowany i wykonany uklad sterujacy, posiada przekazniki, wejscia logiczne etc. Nic szczegolnego. Mikrokontrolerem jest atmega168 smd zasilany z lm1117 5V. Do tego konwerter rs232<->USB MCP2200 zasilany osobno z portu USB (i tylko on jest zasilany z tego portu).
Do programowania uzywam USBasp samorobki (dziala z innymi uC bez problemow), avrdude z konsoli. Fuse bity ze stronki engebedded fuse bit calculator, czyli na pewno dobre.
Problem jest taki, ze programowanie flasha przebiega bez problemow, natomiast co ktoras zmiane fuse'ow zaczynaja sie cuda. Na poczatku kilka razy zaprogramowalem uklad na standardowych fuse bitach, potem wylaczylem we fusach dzielenie clocka przez 8 CKDIV8, wszystko dzialalo. Nastepnie po jakims czasie dolozylem wylaczenie watchdoga i zdaje sie EESAVE, w kazdym razie nieszkodliwe zmiany. Odlaczylem uklad od programatora i kiedy po kilku dniach chcialem wrocic do pracy zonk - uC nie odpowiada. Sprawdzilem po raz n-ty polaczenia - byly ok. Desperackim rzutem na tasme wlutowalem kabelki z zewnetrznym kwarcem - viola, ruszylo -_-. Wniosek - fuse bity przestawily sie bez mojej wiedzy.
Ok, wrocilem do poprzednich ustawien i wesolo kodzilem sobie dalej starajac sie zapomniec o calej sytuacji. Nie na dlugo jednak pozwolono mi cieszyc sie tymi chwilami. Otoz w pewnym momencie potrzebowalem w kodzie miec watchdoga, no wiec zaprogramowalem odpowiedni fuse bit i co? Wynik taki, ze uklad zaczal sie stale restartowac co kilkanascie ms (w kodzie bylo wyslanie stringa na uart i potem while(1){} - string lecial bez przerwy zalewajac terminal). Niemozliwe, pomyslalem, poniewaz watchdog byl wylaczony programowo na czas testow. No ale nic - wylacze go sprzetowo znowu, jak pomyslalem, tak uczynilem. Wynik? Totalny brak komunikacji w ogole po tej operacji. Standardowy 'target doesn't answer' w avrdude. Nawet podpiecie generatora zrobionego z innej atmegi nic nie daje.
Zaobserwowalem jednak dziwna rzecz. Na samym poczatku, kiedy slonce swiecilo i wszystko gralo, po podlaczeniu kabla usb i NIE podlaczeniu zasilacza, dioda sygnalizujaca zasilanie swiecila sie (napiecie ok. 3V na lini Tx MCP2200, ktora wchodzila do Rx atmegi i stamtad wychodzila gdzies na nogi VCC). Teraz po takim zabiegu dioda wyraznie pulsuje. Nie mam pojecia co to moze powodowac, moge sie tylko domyslac.
I jak koledzy? Ktos ma pomysl? Juz pewnikiem robie druga plytke, ale po prostu ciekawi mnie coz to moze byc.
oczywiscie na wstepie zaznacze, ze szukalem informacji na ten konkretny temat, jednak nic czego bym nie wiedzial juz wczesniej nie znalazlem.
Sytuacja jest nastepujaca: mam zaprojektowany i wykonany uklad sterujacy, posiada przekazniki, wejscia logiczne etc. Nic szczegolnego. Mikrokontrolerem jest atmega168 smd zasilany z lm1117 5V. Do tego konwerter rs232<->USB MCP2200 zasilany osobno z portu USB (i tylko on jest zasilany z tego portu).
Do programowania uzywam USBasp samorobki (dziala z innymi uC bez problemow), avrdude z konsoli. Fuse bity ze stronki engebedded fuse bit calculator, czyli na pewno dobre.
Problem jest taki, ze programowanie flasha przebiega bez problemow, natomiast co ktoras zmiane fuse'ow zaczynaja sie cuda. Na poczatku kilka razy zaprogramowalem uklad na standardowych fuse bitach, potem wylaczylem we fusach dzielenie clocka przez 8 CKDIV8, wszystko dzialalo. Nastepnie po jakims czasie dolozylem wylaczenie watchdoga i zdaje sie EESAVE, w kazdym razie nieszkodliwe zmiany. Odlaczylem uklad od programatora i kiedy po kilku dniach chcialem wrocic do pracy zonk - uC nie odpowiada. Sprawdzilem po raz n-ty polaczenia - byly ok. Desperackim rzutem na tasme wlutowalem kabelki z zewnetrznym kwarcem - viola, ruszylo -_-. Wniosek - fuse bity przestawily sie bez mojej wiedzy.
Ok, wrocilem do poprzednich ustawien i wesolo kodzilem sobie dalej starajac sie zapomniec o calej sytuacji. Nie na dlugo jednak pozwolono mi cieszyc sie tymi chwilami. Otoz w pewnym momencie potrzebowalem w kodzie miec watchdoga, no wiec zaprogramowalem odpowiedni fuse bit i co? Wynik taki, ze uklad zaczal sie stale restartowac co kilkanascie ms (w kodzie bylo wyslanie stringa na uart i potem while(1){} - string lecial bez przerwy zalewajac terminal). Niemozliwe, pomyslalem, poniewaz watchdog byl wylaczony programowo na czas testow. No ale nic - wylacze go sprzetowo znowu, jak pomyslalem, tak uczynilem. Wynik? Totalny brak komunikacji w ogole po tej operacji. Standardowy 'target doesn't answer' w avrdude. Nawet podpiecie generatora zrobionego z innej atmegi nic nie daje.
Zaobserwowalem jednak dziwna rzecz. Na samym poczatku, kiedy slonce swiecilo i wszystko gralo, po podlaczeniu kabla usb i NIE podlaczeniu zasilacza, dioda sygnalizujaca zasilanie swiecila sie (napiecie ok. 3V na lini Tx MCP2200, ktora wchodzila do Rx atmegi i stamtad wychodzila gdzies na nogi VCC). Teraz po takim zabiegu dioda wyraznie pulsuje. Nie mam pojecia co to moze powodowac, moge sie tylko domyslac.
I jak koledzy? Ktos ma pomysl? Juz pewnikiem robie druga plytke, ale po prostu ciekawi mnie coz to moze byc.