Forum: Mikrocontroller und Digitale Elektronik MC startet immer wieder neu.


von Matthias (Gast)


Lesenswert?

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

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

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

von Matthias (Gast)


Angehängte Dateien:

Lesenswert?

Servus,

also Schaltplan existiert momentan nur auf Papier.

Code kann ich gerne mal reinstellen.

Watchdog hab ich meines Wissens nicht aktiviert.

Danke Mfg

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

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.

von Matthias (Gast)


Lesenswert?

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.

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

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.

von Matthias (Gast)


Lesenswert?

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

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Was ist das ueberhaupt fuer ein Controller?

von Andreas K. (a-k)


Lesenswert?

Um welchen Controller es sich genau handelt ist streng geheim?

von Matthias (Gast)


Lesenswert?

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.

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

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.

von Matthias (Gast)


Lesenswert?

Hmm...

Auf der anderen Plantine tut er es jedenfalls so wie ers sollte.

Kein Reset...bleibt schön in seiner Hautproutine.

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

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.

von Matthias (Gast)


Lesenswert?

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?

von Matthias (Gast)


Lesenswert?

Tut er auch noch nur mit dem einen Timer1 wenn ich den Timer0 fürs 
Display Updaten weglass.

von Andreas K. (a-k)


Lesenswert?

Im Code sehe ich ISRs für Timer 1 Overflow und Input Capture.
Eingeschaltet werden hingegen Output Compare A und Input Capture.

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

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.

von Thomas (kosmos)


Lesenswert?

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.

von Bj (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.