ATmega1284P, USART1 und Rec_Interrupt

OP #2055392
Lesenswert?
• ▲
▼
Hallo,

ich habe zwar schon ein paar USART-Schnittstellen auf nem AVR 
programmiert, jedoch funzt mein Receive-Interrupt diesmal nicht, also 
der Interrupt wird nicht aufgerufen.

Hier mal der relevante Code:
1
#define UBRR_19k2  129 //für Baudrate 19,231k
2

3
int main(void)
4
{
5
  [...]
6
  USART1_init(UBRR_19k2); //USART1 intialisieren
7
  PORTD &= ~(1<<PD7);
8
  sei();   
9
  [...]                                               
10
}
11

12
void USART1_init(unsigned int ubrr1)
13
{
14
  UBRR1H = (unsigned char) (ubrr1>>8); 
15
  UBRR1L = (unsigned char) ubrr1;
16
  
17
  UCSR1C = (1<<UCSZ11) | (1<<UCSZ10); //frame format: 8data, 1stop bit, asynchronous USART, No parity
18
  UCSR1B = (RXCIE1)    | (1<<TXEN1)  | (1<<RXEN1); //Enable receiver & transmitter and receiver interrupt
19
  UCSR1A = (1<<U2X1);                 //Double speed mode
20
}
21

22

23
ISR(USART1_RX_vect)
24
{
25
  static unsigned char uc_zaehler_RXD_Bytes = 0;
26

27
  PORTD |= (1<<PD7); 
28

29
  uc_Receive_RX1[uc_zaehler_RXD_Bytes] = UDR1;
30

31
  if (uc_Receive_RX1[uc_zaehler_RXD_Bytes] == 0x0D) //Ende der Übertragung
32
  {
33
    uc_zaehler_RXD_Bytes = 0;
34
    f120_Flag.O2_Sensorkommunikation_komplett = 1;
35
  }
36
  else
37
    uc_zaehler_RXD_Bytes++;
38
}

PD7 geht nicht auf high, weswegen ich annheme, dass der Interrupt nicht 
aufgerufen wird.
Ich benutze nen ATmega1284P mit 20MHz
OP #2056695
Lesenswert?
• ▲
▼
Ich habe trotzdem noch ein Frage:

Wenn ich den Receive-Interrupt aktiviere, dann ist es nur eine Frage der 
Zeit, bis mein uC abstürzt, was sich darin bemerkbar macht, dass die 
Peripherie rundherum ausfällt (Display, Tasten).

Wenn ich nun einen C=15pF an den PIN des RXD1 gegen Masse hänge, dann 
stürzt er nicht ab. Wieso ist das so?

Es liegt auf jeden Fall an der Aktivierung des Receive-Interrupts, denn 
wenn ich diesen nicht aktiviere, dann habe ich das Problem nicht, auch 
ohne Kondensator.

Dabei ist es egal, ob ein Signal an RXD anhängt oder 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.