Forum: Mikrocontroller und Digitale Elektronik ATMEGA128 ungewollter reset


von phill (Gast)


Lesenswert?

hallo

mein problem ist das atmega128 wahrscheinlich ungewollt resetet. das 
programm schaut folgendermassen aus


#include <avr/io.h>
#include <avr/signal.h>
#include <stdlib.h>
#include <util/delay.h>

void uart_init_0 (void) {
  UBRR0H = 0;
  UBRR0L = 25;
  UCSR0B=(1<<RXEN0)|(1<<TXEN0); /* enable send and recieve */
  UCSR0C=(1<<UCSZ01)|(1<<UCSZ00);
}

int main(void) {
  uart_init_0();
  UDR0=0x20;
  while(1) {
    /* Wait for empty transmit buffer */
    while ( !( UCSR0A & (1<<UDRE)) )
      ;
    /* Put data into buffer, sends the data */
    UDR0 = 0x74;

  }
   UDR0=0x21;
  return 0;

}

ueber sie serielle empfange ich folgende daten:
ttttttttttttttttttô ttttttttttttttttttttttttttttô 
tttttttttttttttttttttttttttô ttttttttttttttttttttttttttttô 
ttttttttttttttttttttttttttttô ttttttttttttttttttttttttttttô 
ttttttttttttttttttttttttttttô ttttttttttttttttttttttttttttô ...

und so weiter. eigentlich sollte ich ja nur "ttttt" empfangen da 
leerzeichen (0x20) nur vor der while schleife ausgegeben wird? hat von 
euch einer ne idee??? bin hier echt am verzweifeln.




von johnny.m (Gast)


Lesenswert?

Ist der Watchdog-Timer ausgeschaltet?

von Axel (Gast)


Lesenswert?

Muss da nicht ein return() in uart_init_0 ?

Gruss
Axel

von johnny.m (Gast)


Lesenswert?

@Axel:
Eine Funktion vom Typ "void" kann keinen Wert zurückgeben, also darf da 
auch kein return hin.

von unsichtbarer WM-Rahul (Gast)


Lesenswert?

Versorgungsspannung?
Ist die stabil genug?

Lass dir doch mal die letzte Reset-Quelle ausgeben.

von Till Z. (phill)


Lesenswert?

danke erstmal fuer die schnellen antworten. bin leider kein profi 
deshalb weiss ich nicht ob ich alle loesungsvorschlaege richtig 
verstanden habe.

VM-Rauhl hast du mit letzter resetquelle das MCUCSR register gemeint. 
habe es zuerst mal komplett auf null gesetzt und dann nochmal starten 
lassen.

BIT 1 External Reset und BIT3 Watchdog Reset sind high.

External Reset kommt wahrscheinlich vom Programmieren oder ??
Aber watchdog duerfte nicht high sein oder ???

also hattest du johnny.m wahrscheinlich den richtigen riecher. aber 
wieso ist der an, da muss ich doch in der Firmware register setzen oder 
???

ist der vielleicht standartmässig eingeschaltet ???

auf jeden fall schonmal vielen dank bin jetzt schon ein gutes stueck 
schlauer

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.