Mahlzeit, Hab hier ein Versuchsaufbau mit einem ATMEGA128. Der Controller resetet sich nach ca. 2 Sekunden Automatisch, obwohl er mitten in einer Schleife steckt. Hier das Bascom-Programm: $baud = 9600 $regfile = "m128def.dat" Config Serialin = Buffered , Size = 20 $crystal = 16000000 Enable Serial Config Pinb.6 = Output stop watchdog print "Start" Do print "Test" Loop end Weiß jemand Rat? Gruss Jan
>Wozu das?
ich dachte zuerst der Watchdog sei dafür verantwortlich dass der uC
sind ständig selbst resettet....
Gruss
Jan
Resettet er sich auch, wenn du das print aus der Schleife rausnimmst?
Hallo Thorsten, Ja, dann resettet er sich weiterhin :((( Gruss Jan
stacküberlauf? watchdog per fuses ausgeschaltet? spannungszusammenbruch?
Hallo Denis, Watchdog per Fuses? Seh ich in Ponyprog gar nicht, dass man den direkt deaktivieren kann... Spannung ist stabil Woran erkenne ich ein Stacküberlauf? Gruss Jan
Gibt Bascom sowas wie ein Hex-File aus? Wenn ja, kannst du das ja mal ins AVR Studio laden und durch simulieren. Vielleicht hilft das weiter. Oder wenn du dich mit Assembler schwer tust, poste doch mal das Hex-File. Ich kanns mir mal ansehen.
Hi, du kannst auch direkt in Bascom simulieren. Der Simulator zeigt ein Stackoverflow an , aber bei diesem kleinen Prg wird es nicht am STack liegen. Der 103er Mode ist nicht aktiv? Probier doch mal ein anderes kleines Prg. ohne Serial. Blockkondensatoren befinden sich an VCC und GND? Pullup am Reset Pin? Kann man die Hardware ausschliessen? Mfg Dirk
Er führt möglicherweise die Schleife nur genau einmal durch, obwohl es eine Endlosschleife ist. Das Problem ist bei mir mal aufgetreten als ich eine do{}while(1) Schleife gemacht habe. Das Schlüsselwort volatile hat das Problem gelöst. mfg Chris ;)
@christian
> Das Schlüsselwort volatile hat das Problem gelöst.
was meinst du damit?
Im Anhang das Hex-File was bascom produziert hat.
@Dirk
M103 Mode ist in PonyProg unchecked (unprogrammiert) = logisch eins.
werd mal ein anderes Prog testen...
Pullup ist am Reset dran, dort auch 47 pico Farad gegen Masse, am
Festspannungsregler 1x 10 uF, 2 x 100 nF, und heute hab ich direkt vor
alle GND und V+ Eingänge am Controller noch jeweils 1x 100 nF gehängt
(ich glaube dadurch wurde der Abstand ein wenig größer bis zum nächstes
Reboot, kann aber auch Zufall gewesen sein...)
Es ist zum verweifeln :((((((((
Gruss
Jan
So hab mal das ganze ohne Serielle Schnittstelle getestet, also nur einen Port getoggelt (an, aus)... Meine fuses sehen so aus: Programmiert sind (logisch null): Bootz1, Bootz0, BootRst, SUT0, WDTON und genau WDTON mal fix im Datenblatt nachgeschaut, deaktiviert, und schon läufts perfekt!!!!! Da sitzt mal fast n Tag dran, nur wegen so einem blöden Fusebit ;) hehe Danke aber für eure Hilfe! Gruss Jan
volatile : Sagt dem Compiler das eine Variable außerhalb des normalen Programmablaufs geändert wird bzw das er hier nichts wegoptimieren soll. Endlosschleifen werden oft vom Compiler rausgeschmissen weil er erkennt das der durchlauf "überflüssig" ist.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.