Automatischer reset nach Systemstart

Markus

BASCOM-Experte
11. Jan. 2008
1.190
6
38
Lonsee
Sprachen
Guten Morgen AVR-Gemeinde,

ich packe das Thema mal hier zum Thema "IO-Ports". Es hat aber nur indirekt damit zu tun.

Und zwar geht es mir gerade um das RESET-Verhalten des ATmegas welches mir aktuell Rätsel aufgibt zu dessen Lösung ich gerade Knoten in den Kopf bekomme.

Und zwar stelle ich fest, dass der ATmega nach dem Einschalten der Betriebspannung hochläuft, auch schon beginnt sein schönes Programm abzuarbeiten und nach einer Zeit x < 1 Sekunde macht er nochmals einen Reset. Nicht immer aber manchmal.
Das Programm läuft aber ohne Probleme und es ist auch nur dieser eine Reset.

Aktuell vermute ich, dass es mit der externen Beschaltung des ATmegas zusammenhängt und mit der internen Spannungsüberwachung. Ich kann nur noch keinen Zusammenhang herstellen.

Also, fangen wir Schritt für Schritt an....

Im Anhang findet Ihr meine Beschaltung für den ATmega wie ich den Reset beschaltet habe. RESET geht direkt auf den ATmega und ISP-RESET kommt von dem ISP-Stecker. Bei der Schaltung handelt es sich üblicher Weise um die Standardbeschaltung. Nix außergewöhnliches also.
Weiter habe ich die Fuses wie im Bild dargestellt gesetzt. BODLEVEL auf 4.0V und BODEN = OFF.

Soweit mein Verständnis....

Ich kann mir nicht erklären, warum der ATmega gelegentlich unmittelbar nach dem Starten und dem Einschalten der Spannung in den Reset läuft?!?!?! Das habe ich übrigens auch schon mal mit dem STK500 beobachtet welches an einem stabilisierten Netzteil hängt. Bisher habe ich das Thema verdrängt aber gerade stört es mich bei meiner Lichtsteuerung.

Kennt Ihr den Effekt? Gibt es jemand der ihn erklären kann?
@Dirk; ich glaube hier bist Du als HW-ler gefragt.....

Ich werde jetzt mal mein Oszi bemühen und mal schauen ob mir nicht doch die externe Beschaltung bedingt durch den C hier einen Streich spielt.

Betrachte ich jedoch die Formel T=R*C = 4k7 * 47nF so sollte 1Tau bereits nach 220 µsec erreicht sein. Hmmmmmm.....

Grüße,
Markus
 

Anhänge

  • resetlogik.gif
    resetlogik.gif
    3,8 KB · Aufrufe: 23
  • fuses.gif
    fuses.gif
    16,1 KB · Aufrufe: 12
Hi Markus,

RESET geht direkt auf den ATmega und ISP-RESET kommt von dem ISP-Stecker. Bei der Schaltung handelt es sich üblicher Weise um die Standardbeschaltung. Nix außergewöhnliches also.
Weiter habe ich die Fuses wie im Bild dargestellt gesetzt. BODLEVEL auf 4.0V und BODEN = OFF.
komische Angelegenheit. Hab ich bei mir (soweit ich mich erinnern kann) noch
nicht gehabt. Ich weiß nur das der AVRISPmk2 den Atmel zurücksetzt wenn er
vom USB noch nicht richtig initialisiert ist oder grad mal drangesteckt wird.
Hast du das schonmal ohne den ISP probiert?

Gruß
Dino
 
Hallo Markus!

Ich weiß nicht, ob bei meinem 128er auch nach dem Start ein weiterer Reset folgt, aber ein ähnliches Verhalten habe ich auch mal beobachtet.

Nach dem der Mega128 gestartet war und der Header mit allen Einstellungen abgearbeitet wurde, folgt vor dem Beginn der Hauptschleife lediglich die Terminalausgabe:
Print #1 , "Start..."

Irgendwann ist mir mal aufgefallen, dass dieses "Start..." regelmäßig gleich zweimal nacheinander übertragen wurde. :hmmmm:

Ich habe mich zwar gewundert und auch keine Erklärung gefunden....... habe es dann aber auch nicht weiter verfolgt, da das Programm fehlerfrei arbeitet.


Grüße,
Cassio
 
Hallo,

Ich weiß nicht, ob bei meinem 128er auch nach dem Start ein weiterer Reset folgt, aber ein ähnliches Verhalten habe ich auch mal beobachtet.
also ich hab grad mal schnell mein selbstgebautes m128-Testdingens mal
an Saft gehängt. Er hat bei mehreren Versuchen ohne Probleme sauber
gestartet.

Könnte es sein das bei euch irgendwelche unsauber kompilierten
Interuptvektoren existieren ? Ich hab im Moment noch Bascom 1.11.9.8 Demo
auf dem Laptop mit dem ich rumdaddel. Ich benutze bei dem Mega128 aber
auch beide UART, I2C, 4Bit-LCD, Softclock. Also auch einiges an Interrupts.

Gruß
Dino
 
Ich hatte das gleiche Symptom, nachdem ich mir für den XMega den AVRISP MK2 besorgt hatte. Kurz nach dem Einschalten des AVR kam ein 2. Reset. Grund war der AVRISP. Der testet nach dem Anlegen der Spannung im Zielsystem den korrekten Anschluß mit der Reset-Leitung. Dazu wird Reset auch mal kurz auf low geschaltet. Ohne den angeschlossenen AVRISP gibt es keinen 2. Reset mehr. Dieses Verhalten steht auch in der Doku des AVRIP MK2.
 
Hallo,

Ich hatte das gleiche Symptom, nachdem ich mir für den XMega den AVRISP MK2 besorgt hatte. Kurz nach dem Einschalten des AVR kam ein 2. Reset. Grund war der AVRISP. Der testet nach dem Anlegen der Spannung im Zielsystem den korrekten Anschluß mit der Reset-Leitung. Dazu wird Reset auch mal kurz auf low geschaltet. Ohne den angeschlossenen AVRISP gibt es keinen 2. Reset mehr. Dieses Verhalten steht auch in der Doku des AVRIP MK2.
kann ich bestätigen. Mit AVRISPmk2 macht er beim anschließen der Spannung
an das Zielsystem nen 2ten Reset. Also ist der Schuldige gefunden ;)

Da ich den Reset der Zielschaltung eigentlich immer über nen Taster
auf dem Zielsystem auslöse hab ich das nie gehabt.

Gruß
Dino
 
Hallo Jungs,

also....

.... an dem mkII liegt es nicht den den habe ich nicht angesteckt. Dort weiß ich dass er immer wieder mal "unmotiviert" an der Leitung zieht.

.... unsaubere Interrupts kann ich mir auch nicht vorstellen denn der Effekt tritt auch bei ganz simplen Programmen auf die nur ein START auf LCD oder RS232 ausgeben.

.... das Verhalten ist BASCOM unabhängig. Ich mache die Beobachtungen schon lange und mit unterschiedlichen Versionen.

Irgendwann ist mir mal aufgefallen, dass dieses "Start..." regelmäßig gleich zweimal nacheinander übertragen wurde.
Ich habe mich zwar gewundert und auch keine Erklärung gefunden....... habe es dann aber auch nicht weiter verfolgt, da das Programm fehlerfrei arbeitet.

..... joooo, genau das isses. Schon immer mal wieder beobachtet und bisher immer liegen gelassen. Nun habe ich mir aber in den Kopd gesetzt, dass ich wissen will woher es kommt.


Das lustige ist ja, es gibt nur einen Interrupt nach dem Systemstart und das Programm arbeitet ansonsten Fehlerfrei.

Aber nun werde ich mal folgende Dinge beobachten...

[1] Oszi an Reset-Leitung mit aufzeichnen, mal sehen
[2] Schauen ob auch ein Reset auftritt wenn ich das System über Reset-Taste bzw. mkII resette.

..... to be continued!

Grüße,
Markus

PS: ist es bei Euch auch so neblig wie hier bei mir? pfui kuckuck!
 
Hallo Marcus,
hast du dir mal nach dem Reset das MCUCSR (bzw MCUSR) Register angesehen? Dort ist ein Bit für den jeweiligen Reset gesetzt.

Hast du mal den BODEN weggenommen und geschaut, ob es dann immer noch auftritt?

Edit: Ich sehe gerade, dass du BODEN schon aus hast.

HBA
 
Hallo HBA,

analysen laufen noch, aber danke für den Tip. Daran hätte ich jetzt im Eifer nicht gedacht.

Grüße,
Ma
 
Hallo Markus,

ich weiß nicht, ob du die Ursache für den Reset nach PowerOn schon gefunden hast, aber trotzdem nochmal ein paar Gedanken dazu.

Es gibt ja bei den AVRs (ich glaube du setzt den ATmega128 ein) 5 Reset-Quellen:
  • Power-on Reset
  • External Reset
  • Watchdog Reset
  • Brown-out Reset
  • JTAG AVR Reset
Du hast ja den BOD und den Watchdog nicht aktiviert, JTAG Reset erreicht man nur über Kommando, diese Quellen fallen also weg. Es bleiben also nur die beiden ersten Resetquellen übrig. Wie HBA schon geschrieben hat, kannst du die Quelle des letzten Resets herausfinden, indem du das Register MCUCSR untersuchst.

Die Reset-Leitung ist relativ empfindlich, gerade wenn du da eine längere Leiterbahn zum ISP Connector hast. Es kann dann direkt nach dem Einschalten der Betriebsspannung nocheinmal zu einem Reset kommen, oft merkt man es nicht. Eine LED blitzt 2ms auf, die Initialisierung eines LCD wird bei 10% abgebrochen und dann neu gestartet, usw. Ein Usart ist ja schnell initialisiert und wenn man dann gleich ein Byte sendet, kann es dazu kommen, dass man ein zweites mal sendet.

Ich würde folgendes probieren: Die Reset-Leitung so kurz wie möglich machen, wenn die Platine bereits fertig ist, erst einmal mit einem Widerstand 1kOhm Pullup (nah am Mikrocontroller nach VCC) probieren und schauen, ob das Problem immer noch vorhanden ist. Kleinere Pullup-Widerstände (zB 270Ohm) gehen auch, wenn du mit AVRISPmkII programmierst. Im Notfall auch mal an geeigneter Stelle trennen :eek: :D Nach meiner Erfahrung bringt hier ein aktiver BOD nichts, du kannst es ja trotzdem mal mit dem höheren Level austesten.

Grüße,
Dirk
 
Hallo Drik,

danke für die Ideen und Anregungen. Habe das Oszi schon bereitstehen und will auch mal auf die Leitungen schauen. Komme aktuell jedoch nicht dazu und habe mir das ganz fest für das Wochenende vorgenommen.

Ich werde dann berichten, das ich gefunden habe.

Grüße,
Markus
 
Hallöli, guten Abend,

es ist mal wieder klassisch .... kaum hängt man ein OSZI an Spannung und RESET-Pin, schon tritt der sonst reproduzierbare Effekt nicht mehr auf :bawling:

Habe aber den Code mal so abgeändert, dass ich sofort nach Systemstart unmittelbar so als ungefähr erste Anweisung das MCUCSR-Register in eine Variable1 schreibe, das Register anschließend lösche und dann nach dem ganzen StartUp Variable2 mit dem Registerinhalt befülle.

Nach ca. 100 Versuchen habe ich folgendes Ergebnis:

Variable1 = 0b00000101 = Brown-Out Reset und Power-On Reset
Variable2 = 0b00000000

Nach manuellem Reset via Reset-Taster

Variable1 = 0b00000010 = External Reset
Variable2 = 0b00000000

Damit tut alles so wie es soll und auch die Oszibilder verraten mir nix:confused:

Hmmmm, jage ich schon ein Gespenst?

Für alle welche das MCUCSR interessiert habe ich im Anhang ein Bildle passen zum ATmega128 angehängt.

Grüße,
Markus
 

Anhänge

  • reset.gif
    reset.gif
    60,7 KB · Aufrufe: 11
Hi Markus,

also dann würde ich doch das Oszi dran lassen und mit der Elektronik hinter die Holzdecke bauen :D ;)

Wie verhält es sich denn ohne angeschlossenes Oszi, tritt der Fehler dann wieder auf? Vielleicht tritt der Fehler durch die Erdung des Oszis nicht mehr auf.

Gruß,
Dirk
 
Hallo,

also zu den Angaben am Anfang ... 4,7k und 47nF ...
ich hab bei mir eigentlich immer 22k und 47-100nF am Reset-Pin.
eventuell hilfts ja was ...

Gruß
Dino
 
Lass doch mal die Diode und Kondensator am Reset weg. Vielleicht macht das schon einen Unterschied.
 
Automatischer Reset

Damit keine Probleme gibt, kann man doch nen Chip an den Reset Eingang klemmen. Nach erreichen einer bestimmten Betriebspannung löst der einen Reset aus, und damit einen Neustart.
Z.B. der MCP809 macht sowas.

Have fun

Ben
 
Bin nicht mehr weiter gekommen. Seit ich ein Oszi dranhängen hatte und versucht habe den Fehler zu finden tauchte er bisher nicht wieder auf :(
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)