www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik STM32 resetet Atmega8: und das war's


Autor: Mehmet Kendi (mkmk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Servus allerseits

Als Neueinsteiger in die STM32-Welt habe ich mich bei meinem jetzigen 
Projekt nicht getraut, nur auf die STM32-Karte zu setzen. Ich gestehe: 
pure Feigheit.
Deshalb habe ich alles was hardware-nah war, einem Atmega8 anvertraut, 
der seine Anweisungen vom STM32 via UART empfaengt.
Ueber eine Leitung kann der STM32 den Atmega8 reseten.

Alles laeuft reibungslos. Bis ich via STM32 den Atmega8 resete. Nach 
diesem Reset laeuft auf dem Atmega nichts mehr.
Wenn am Atmega ein Debugger angeschlossen ist, kann ich nach dem Reset 
mit "continue" weiterfahren. Aber wenn kein Debugger angeschlossen ist, 
gibt der Atmega kein Lebenszeichen mehr von sich.

Die Spannung ist sauber, das Resetsignal ebenfalls. Weiss jemand Rat?

MfG aus Istanbul

Autor: chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schaltplan?
wie lange ist der Resetimpuls der vom STM an den Atmega geht?

Autor: Mehmet Kendi (mkmk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit der Dauer des Resetimpulses habe ich weidlich herumgespielt. Daran 
dürfte es nicht liegen. Selbst mit Einzellschritt beim Debuggen gibt es 
diesen Blackout beim Atmega.
Ausser ich habe die Reset-Spezification falsch interpretiert. Dort 
heisst es Minimum pulse width on RESET Pin: Max 2.5us
Ich gehe davon aus, dass der Reset-Impuls min. 2.5us betragen muss; nach 
oben keine Beschraenkung.

Schaltplan: ein Pullup 10k Widerstand haengt am Reseteingang, wo auch 
die Drain eines N-Mosfet angeschlossen ist. Die Gate, mit einem Pulldown 
Widerstand von 47k ist mit der STM32-Leitung verbunden. Und die Source 
natürlich am Ground.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der AVR rennt mit Sicherheit los.
Aber irgendein Fehler in Deinem Programm bewirkt, daß ne Bedingung 
ständig falsch ist und er dann ewig in einer Schleife rumhängt.

Vielleicht setzt Du aber auch den Watchdog und das Init dauert zu lange, 
so daß er ständig neu resettet.

Es wird also irgendwas in Deiner SW sein.


Mehmet Kendi schrieb:
> Wenn am Atmega ein Debugger angeschlossen ist, kann ich nach dem Reset
> mit "continue" weiterfahren.

?
Der ATmega8 hat doch weder JTAG noch DW.


Peter

Autor: Mehmet Kendi (mkmk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
:) Pardon! Sollte natürlich Atmega88 heissen.

Autor: nur n Vermutung (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bei einem reset wird der atmega zwar zurück gesetzt aber die variablen 
im ram bleiben auf dem alten wert.
kann es sein dass irgendeine (globale) variable beim start nicht 
initialisiert wird nun eben beim zweiten hochlauf nicht auf "0" ist!?

Autor: Mehmet Kendi (mkmk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nur n Vermutung schrieb:
> aber die variablen im ram bleiben auf dem alten wert.

Hmmm, daran habe ich gar nicht gedacht. Aber ich greif mal Peter's 
Gedanke auf und lass mal bei jedem Step die Led leuchten und verbleibe 
im Endlosloop.
Mal schauen, ob ich durch die Initialisierung komme.

Autor: Mehmet Kendi (mkmk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe die Atmega-main zu Testzwecken wie folgt geaendert:
int main(void)
{
  LED_RED_OFF;
  LED_GREEN_OFF;
  LED_RED_DDR   |= (1 << LED_RED_PIN);
  LED_GREEN_DDR |= (1 << LED_GREEN_PIN);

  LED_GREEN_ON;
  my_delay_100ms(10);
  LED_GREEN_OFF;
  LED_RED_ON;
  while(1);
}

Ich schalte das Geraet ein, die güne LED geht für 1 Sekunde an, erlischt 
und dann geht die rote LED an.
Nun starte ich den STM32-Debugger, die die Reset-Line auf LOW zieht: es 
passiert nichts. Dann hight: es passiert nichts. Die rote LED bleibt an.
Und auf dem Multimeter, der am Reset angeschlossen ist, sehe ich diesen 
Reset weil ich step by step debuggern tue.

Autor: Mehmet Kendi (mkmk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab den Fehler gefunden.
Der Reset-Pin wird ja beim Atmega88 waehrend dem Debuggen als DebugWire 
benutzt!
Nachdem ich die DebugFunktion verlassen hatte, war der Spuk vorbei.

Sorry! Mea culpa.

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.