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

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.