Servus...ich bins nochmal, langsam frag ich mich ob ich blöd bin. Und zwar bootet mein Controller etwa alle 4 Sekunden neu. Seh ich eindeutig am Display. Reset liegt aber auf seinen 5 Volt. Genauso wie der Rest (Da wos halt in sollte) Es ist zwar am Oszi ein kleinerer Brumm zu sehen, aber der ist unter 20mV. Reset ist zwischen 10k R und einem 10µ Farad Kondi. Kennt einer von euch das Problem? Denn auf meinen anderen Controllern und Platinen hatte ich das Problem nicht. Hautpprogramm läuft in einer While(1) Schleife...wie immer bisher. For(;;) hatte auch keine Wirkung. MfG Matthias
Huhu Matthias, haeng mal den Programmcode und Schaltplan an. Kann es sein, dass Du den Watchdog aktiviert hast, wenn er exakt alle 4 Sekunden neu startet liegt die Vermutung nahe... ;) lg, Michael
Servus, also Schaltplan existiert momentan nur auf Papier. Code kann ich gerne mal reinstellen. Watchdog hab ich meines Wissens nicht aktiviert. Danke Mfg
Matthias wrote:
> Watchdog hab ich meines Wissens nicht aktiviert.
Was heisst "meines Wissens"? Tatsache oder Spekulation? Moeglicherweise
das WDTON-Fuse programmiert? Ach ja, nochwas: der ganze Signal-Kram ist
ueberholt, nicht mehr verwenden.
Also ich programmier alles mit AVR Studio. Die Einstellungen der Fuses sind: Lockbits stehn auf "no lock Features" SPI Enable und Full amplitudes haben ein Häckchen. BOOTRST EESAVE OCD Enable JTAG Enable ohne Häckchen. Ext XTAL High Frequ. Startup 64ms + 1k CK Boot block 1024 Word BOD Enable 4,0 V das hab ich grad mal auf "No BOD function" gestellt und er startet noch schneller neu. Langsam bin ich am Verzweifeln. Meines Wissens heisst das ich jedenfalls nirgends was mit der WDTON- Fuse zu tun hatte.
Jetzt haste mir aber immernoch nicht gesagt ob das Bit programmiert ist oder nicht. Und ohne Schaltplan kann man weiter nichts dazu sagen. Mess mal mit nem Oszi am Versorgungspin des Controllers und schaue ob das DC-Signal evt. Schwankungen aufweist.
Tjo ich kann dir nur das sagen was mit AVR Studio rausspuckt. Hab auch meinen 2ten C-Compiler angeschmissen...und da steht auch nix vom dem WDTON- Fuse Ich kann dir höchstens noch die Fusebytes geben. Low Fuse = 11001111 High Fuse = 11001001 Lockbits = 11111111 MfG
UPPS Sorry vergessen ich dacht ich hätts dazugeschrieben. Ist ein Atmega 16. Hab ihn jetzt mal auf ne andere Platine gepackt. Und test ihn grad...bin mal gespannt.
Also ausser dass Du die Brown-Out-Detection verwenden solltest seh ich jetzt erstmal nichts. Schaltplan und messen... moeglicherweise ist es aber auch ein Softwarefehler.
Hmm... Auf der anderen Plantine tut er es jedenfalls so wie ers sollte. Kein Reset...bleibt schön in seiner Hautproutine.
Ja dann such den Fehler in der Schaltung, der ja offensichtlich dort sein muss... und am besten indem Du den Gutfall mit dem Schlechtfall vergleichst, also die Unterschiede zwischen der funktionierenden und nicht-funktionierenden Schaltung herausarbeitest. Dort muss dann der Fehler liegen.
Tjo... Ich hab jetzt der Reihe nach den Code zurückgebaut... Die Reseterrei geht los sobald ich den Timer1 für den IC Pin dazuschalt. Ohne diesen Timer gehts ohne irgendwelche Resets. Config...
1 | //--Einstellungen für Drehzahlmessung
|
2 | DDRD = (DDRD & 0xFD); //--ICP Freischalten |
3 | TCCR1B = (1<<ICES1) | (1<<CS12) | (1<<CS10); // Input Capture Edge, PreScale 1024 (ICP) |
4 | |
5 | //--Timer0 für Display Aktualisierung
|
6 | TCCR0 = (1<<CS02) | (1<<CS00); //--1024 Vorteiler |
7 | |
8 | //--Timer Starten
|
9 | TIMSK = (1<<TOIE0) | (1<<TICIE1) | (1<<OCIE1A); |
Kann mir einer von Euch das erklären?
Tut er auch noch nur mit dem einen Timer1 wenn ich den Timer0 fürs Display Updaten weglass.
Im Code sehe ich ISRs für Timer 1 Overflow und Input Capture. Eingeschaltet werden hingegen Output Compare A und Input Capture.
Junge Du musst mal nen bissel gezielter Arbeiten. Was Du sagst macht keinen Sinn, denn wenn das Programm die Fehlerquelle ist funktioniert das in keiner Schaltung korrekt. Ausserdem hab ich ja schon gesagt dass das SIG*-Zeug veraltet ist, wobei ich jetzt natuerlich nicht den ganzen Code geprueft hab.
fehlt vielleicht irgendwo ein Rücksprungbefehl nach nach einer Interruptroutine z.B. reti Ich denke das sich dein Programm verrennt aber jetzt sagst du auf dem einen Board gehts auf dem anderen nicht oder hattest du zwischenzeitlich die Timerfunktion ausgeschalten. Simuliere im Studio mal ob auch die richtige Interruptroutine angesprungen wird nicht das du da was in der Reichenfolge verdreht hast. Hast du den Interruptvektor komplett aufgefüllt also alle nicht verwendeten Interrups mit reti beendet falls da doch mal was angesprungen wird, wenn du einen Interrupt aktiviert hast den du garnicht benötigst.
Hallo, willkommen im Club. Mein Mega16 prodiziert auch zyklische Watchdog-Reset's ohne sichtbaren Grund. Schalte den Mist aus und der Controller läuft. Leider konnte bisher keiner der Forum-Experten helfen oder wenigstens ein vernünftiges Statement abliefern :-( Bj
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.