Witam,
Otó¿ szukam sposobu na programowy reset procesora... Mo¿e kto¶ wie jak?? :)
Witam,
Otó¿ szukam sposobu na programowy reset procesora... Mo¿e kto¶ wie jak?? :)
Załaczyć WDT na minimalny czas i wejść w pętlę nieskończoną.
antek napisał(a):
jest prostsza metoda jmp 0 :D
Raven napisał(a):
To nie jest programowy reset, to jest rozpoczecie wykonywania programu od poczatku. Przy resecie sa jeszcze zerowane rejestry procesora (hardwarowo)
BartekK napisał(a):
dokladnie i nie wiem jak u ciebie ale umnie wiaze sie to z wyzerowaniem calej pamieci procesora i ustawieniem wszystkich rejestrow w stan poczatkowy zadeklarowany w kodzie programu
Ale chyba ³adniej da³o by siê to zrobiæ w asm?? Tylko ¿e tego nie znam jêzyka :/ Zreszt± dziaj± mi siê jaja :/ procesor ci±gle siê resetuje w kó³ko :/ (attiny2313 )
Nie ¿ebym testowa³ i nie jest to sposób w pe³ni programowy, ale mo¿e gdyby pod³±czyæ jaki¶ port IO do pinu reset i wymusiæ na nim niski stan to procek by siê zresetowa³.
O jaki procek pytasz?
a dokladniej czym sie to objawia i w jakim ukladzie to pracuje
Spinacz biurowy, Saper/nolin11 <nolin11_USUNT snipped-for-privacy@interia.pl!
To trzeba poznać. W datasheecie są wszystkie mnemoniki. Spokojnie, ja po pół nocy napisałem pierwszy program na ATtiny15 (fakt że znałem już assemblera x86).
Pierwsza zasada, jeżeli nie mamy debuggera (bo zakładam że nie masz jtaga): Sprowadzić problem do minimalnej postaci. Jeżeli się resetuje, to sprawdzić czy w najprostszej wersji programu też się resetuje (tak
- problem sprzętowy, nie - programowy). Jeżeli nie, to wyłączyć wszystko, co może zakłócić deterministyczny przebieg programu (przerwania, timery etc.) i wyłączać kolejne bloki programu zgodnie z jego przebiegiem od początku (lub momentu, w którym działa prawidłowo) do głównej pętli. Drogą eliminacji błąd się pokaże.
Spinacz biurowy, Raven snipped-for-privacy@too2.pl!
A dokładniej co miałeś na myśli pytając? :)
Czym się objawia już napisał - resetami. W jakim układzie - nie bardzo rozumiem pytanie. Chodzi o niestabilność zasilania?
Ja też tak miałem niedawno - po pierwszym zadziałaniu watchdoga - następne były dużo szybsze (attiny2313), ale poradziłem sobie z tym (jednak nie jestem zadowolony, bo nie rozumiem tego do końca).
Saper/nolin11 napisał(a):
Pewnie w fusebitach masz ustawione "wdton" - dzieki czemu watchdog jest startowany razem z procesorem, a ty go nie konfigurujesz ani nie resetujesz - to nic dziwnego ze sie procesor nie zresetuje
Nie s±dze (Fusebit: H =1 (always disabled)), zreszt± jak go raz uruchomiê to mi procesor sam siê resetuje mimo ¿e na samym pocz±tku programu ustawiam rejestr wdt na "0" :/ pomaga tylko zwarcie zasilania :/
A odno¶nie posta Raven'a w attiny2313 nie ma "jmp" i "ijmp" bez parametru i ma to operacjê: "PC <- Z" (nie bardzo rozumiem to Z ale dzia³a :) )...
heh przecie¿ mog³em napisaæ: " main(); " :/ G³owy wam zaracam....
Spinacz biurowy, Saper/nolin11 <nolin11_USUNT snipped-for-privacy@interia.pl!
To jest bardzo zły pomysł.
Saper/nolin11 <nolin11_USUNT snipped-for-privacy@interia.pl pisze:
?eby by?o to identycznie jak zapodanie zera na nozke RESET to chyba sie nie da.
Najszybciej to skoczyc pod adres 0 czyli:
cli(); asm("ldi r30,0"); asm("ldi r31,0"); asm("ijmp");
ale pamietaj, ze liczniki dalej Ci chodza, ewentualne PWM tez itd.
oczywi?cie lepszy sposób z watchdogiem, bo on chyba zeruje wszystkie liczniki, przerwania i takie tam
reset nie zeruje pamieci procesora
Greg(G.Kasprowicz) napisał(a):
reset nie ale procedury tak
Nie wiem, ju¿ mnie to nie interesuje "bu" dzia³a :D tak jak chcê :))
In the darkest hour on Thu, 1 Mar 2007 18:29:10 +0100, Saper/nolin11 <nolin11_USUNT snipped-for-privacy@interia.pl screamed:
A robisz coś ze stosem na początku main() czy nie? (-:
Niet, bo pewnie masz na myśli operacje pisane w asm to już mówię iż z asm mam tyle co piernik do wiatraka :) Działa ,a o stos się nie przejmuję gdyż można zawsze procesr zresetować wył i zał zasil. A pozatym się nie przejmuje tym tak bardzo gdyż attiny2313 nie ma pamięci samoprogramującej...
Have something to add? Share your thoughts — no account required.
Ask the community — no account required