mikrocontroller.net

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


Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matthias (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Servus,

also Schaltplan existiert momentan nur auf Papier.

Code kann ich gerne mal reinstellen.

Watchdog hab ich meines Wissens nicht aktiviert.

Danke Mfg

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ist das ueberhaupt fuer ein Controller?

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Um welchen Controller es sich genau handelt ist streng geheim?

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm...

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

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

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...
//--Einstellungen für Drehzahlmessung
DDRD = (DDRD & 0xFD);  //--ICP Freischalten
TCCR1B =  (1<<ICES1)  | (1<<CS12) | (1<<CS10); // Input Capture Edge, PreScale 1024 (ICP)

//--Timer0 für Display Aktualisierung
TCCR0 = (1<<CS02) | (1<<CS00);   //--1024 Vorteiler
  
//--Timer Starten
TIMSK = (1<<TOIE0) | (1<<TICIE1) | (1<<OCIE1A);

Kann mir einer von Euch das erklären?

Autor: Matthias (Gast)
Datum:

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

Autor: Andreas K. (a-k)
Datum:

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

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Thomas O. (kosmos)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Bj (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.