Forum: Compiler & IDEs Mega8 UART, stürzt beim Empfangen ab


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Levin (Gast)


Lesenswert?

Hi,

Ich weiß nicht mehr weiter. Ich versuche meinen Mega8 via UART Daten
vom PC empfangen zu lassen. Jedoch scheint er "abzustürzen" (*)
sobald ich ein einziges Zeichen sende.

(*) Externe Interrupts funktionieren nicht mehr und der Main-Loop wird
nicht weiter ausgeführt. PWMs arbeiten aber weiter (testweise
angeschlossene LEDs bleiben gedimmt)

Es sieht so aus, als würde der Recieve-Interrupt nicht gefunden werden
(wenn ich ihn weglasse gibt es die gleichen Symptome) aber ich finde
meinen Fehler nicht. Argh!

Ich benutze einen avr-gcc (3.3 20030512) auf Debian Linux.

Danke für alle Hinweise,
Levin

Das sind die wesentlichen Codeschnipsel:
---------------------
INTERRUPT(SIG_UART_RECV)
{
  sbi(PORTB, PINB0); //Debug: LED anschalten (wird nie ausgeführt)
  unsigned char b = UDR; //Byte aus RX-Buffer lesen
}

void init(void)
{
  sbi(PORTB, PINB0); //B0 als Ausgang definieren
  //ein paar weggeschnittene PWM-Definitionen, (funktionieren)
  //externe Interrupts aktiviert (funktioniert einwandfrei)

  //UART
  outb(UBRRH, UART_SPEED>>8); //Baudrate
  outb(UBBRL, UART_SPEED);
  sbi(UCSRB, RXEN); //Recieve Enable
  //Wenn die folgende Zeile fehlt stürzt nix ab
  sbi(UCSRB, RXCIE); //Recieve Interrupt Enable
}

int main(void)
{
  init();
  while(1)
  {
    //PWM-Ausgänge blinken lassen und ein paar Delays
  }
}

von Levin (Gast)


Lesenswert?

vergessen:
ganz am anfang hab' ich noch ein:

//4 Mhz (interner Takt) -> 19200 Baud
#define UART_SPEED 12

von Malte Marwedel (Gast)


Lesenswert?

>INTERRUPT(SIG_UART_RECV)

Versuch es mal, indem du INTERRUPT durch SIGNAL ersetzt.
also SIGNAL(SIG_UART_RECV)

von Levin (Gast)


Lesenswert?

Ah, das war zu einfach.
Dankeschön!
Jetzt gehts.

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]
  • [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.