ATTiny: RX Interrupt wird nicht erreicht

Gast #4906556
Lesenswert?
• ▲
▼
Hallo,

ich verzweifle gerade an dem RX-Interrupt meiner USART0.
Ich nutze bei einem ATTiny841 die USART0 (RXD0 an PB2 und TXD0 an PA7).

Initialisierung:
#define F_CPU 8000000UL

#define BAUD 9600UL
#define UBRR_VAL ((F_CPU+BAUD*8)/(BAUD*16)-1)
#define BAUD_REAL (F_CPU/(16*(UBRR_VAL+1)))
#define BAUD_ERROR ((BAUD_REAL*1000)/BAUD)

#if ((BAUD_ERROR<990) || (BAUD_ERROR>1010))
#error Systematischer Fehler der Baudrate groesser 1% und damit zu hoch!
#endif

void UART_init(void)
{
  UBRR0H = UBRR_VAL >> 8;
  UBRR0L = UBRR_VAL & 0xFF;
  UCSR0C = (1<<UCSZ00) | (1<<UCSZ01); 8N1
  UCSR0B |= (1<<RXEN0) | (1<<TXEN0) | (1<<RXCIE0);
}

meine Main:
int main(void)
{
        DDRB = 0b00000101;
  PORTB = 0b00000101;

  DDRA  = 0b00111111;
  PORTA = 0b00100000;

  UART_init();
  sei();
        while(1)
        {...}
}

ISR:
ISR(USART0_RX_vect)
{
  PORTA = 0b00000000;
}

Mittlerweile möchte ich in meiner ISR nur noch eine LED ausschalten um 
zu schauen ob der µC noch da rein springt. Tut er nicht, und ich 
verstehe nicht warum. Hab mit nem Oszi nachgemessen, die Daten liegen 
definitiv an. Zusätzlich hab ich mal den INT0 getestet, da funktioniert 
alles wie gewünscht. Weiß jemand Rat?
(Firma: matzetronics) #4906612
Lesenswert?
• ▲
▼
> (RXD0 an PB2 und TXD0 an PA7).
In diesem Fall solltest du noch das REMAP Register beschreiben, da der 
Normalfall PA2 (RXD0) und PA1(TXD0) benutzt. Also
1
REMAP |= (1 << U0MAP);

Siehe Abschnitt 18.12.7 im Datenblatt.
Ob es sinnvoll ist, RXD vorher als Ausgang zu definieren, bleibt die 
Frage. Das Freigeben des Empfänger überschreibt die normale I/O Funktion 
des Portes, aber sinnvoll ist es m.E. nicht.

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.