STM32 resetet Atmega8: und das war's

OP #1970612
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
OP #1970635
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.
#1970658
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
Gast #1970669
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!?
OP #1970738
Lesenswert?

Ich habe die Atmega-main zu Testzwecken wie folgt geaendert:
1
int main(void)
2
{
3
  LED_RED_OFF;
4
  LED_GREEN_OFF;
5
  LED_RED_DDR   |= (1 << LED_RED_PIN);
6
  LED_GREEN_DDR |= (1 << LED_GREEN_PIN);
7

8
  LED_GREEN_ON;
9
  my_delay_100ms(10);
10
  LED_GREEN_OFF;
11
  LED_RED_ON;
12
  while(1);
13
}

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren