UART überträgt nach Interrupt=enable nichts mehr

OP #5969739
Lesenswert?
• ▲
▼
Guten Abend,

auf einem ATMega8, der mit 1 Mhz internem Clock läuft, habe ich einen 
UART konfiguriert, welcher soweit sogut läuft bis ich das RX-Interrupt 
Bit setze:
UCSRB |= (1<<RXCIE);

Sobald dies gesetzt ist, erfasse ich in hterm keinerlei Lebenszeichen 
mehr vom UART. Kommentiere ich die o.g. Registerbeschreibung für den 
Interrupt aus, so läuft alles wunderbar.

Hier mein VOLLSTÄNDIGES Test-Programm:

Ich kann mir das Verhalten nicht erklären, hat jemand einen 
Lösungsansatz für mich?
1
/*
2
 * test_loeschen.c
3
 *
4
 * Created: 11.09.2019 22:29:37
5
 *
6
 */ 
7

8
#define F_CPU 1000000UL
9
#include <avr/io.h>
10
#include <avr/interrupt.h>
11
#include <util/delay.h>
12

13
void uart_putc( unsigned char data )
14
{
15
  while ( !( UCSRA & (1<<UDRE)) )
16
  ;
17
  UDR = data;
18
}
19

20
int main(void)
21
{
22
  #define BAUD 9600
23
  unsigned int ubbr =  F_CPU/8/BAUD-1; 
24

25
  UBRRH = (unsigned char)(ubbr>>8);
26
  UBRRL = (unsigned char)ubbr;
27
  UCSRB |= (1<<RXEN)|(1<<TXEN);
28
  UCSRB |= (1<<RXCIE);
29
  UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
30
  UCSRA |= (1<<U2X);
31
  
32
  sei();
33
  
34
    /* Replace with your application code */
35
    while (1) 
36
    {
37
    uart_putc(5);      
38
    }
39
}
Angehängte Dateien:
Gast #5970361
Lesenswert?
• ▲
▼
War wohl eher die völlig fehlende Interruptroutine.
Der Compiler schreibt auf alle Interruptvektoren, für die Du keine 
Funktion bereit stellst die Adresse einer Verlegenheitsfunktion. Die 
bewirkt einen Neustart.

Siehe Doku interrupt.h :
"If an unexpected interrupt occurs (interrupt is enabled and no handler 
is installed, which usually indicates a bug), then the default action is 
to reset the device by jumping to the reset vector."

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.