www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATMEGA128 ungewollter reset


Autor: phill (Gast)
Datum:

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




Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist der Watchdog-Timer ausgeschaltet?

Autor: Axel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Muss da nicht ein return() in uart_init_0 ?

Gruss
Axel

Autor: johnny.m (Gast)
Datum:

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

Autor: unsichtbarer WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Versorgungsspannung?
Ist die stabil genug?

Lass dir doch mal die letzte Reset-Quelle ausgeben.

Autor: Till Zirkelbach (phill)
Datum:

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

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.