Probleme mit UART - ATMega88 und STK500

Gast #2067527
Lesenswert?

Hallo zusammen,

ich bin dabei mir eine Seriell to SPI Platine zu basteln. Leider habe 
ich schon Probleme beim empfangen der seriellen Daten über die 
Schnittstelle des STK500.

Hier erst mal der Code:
1
#include <stdlib.h>
2
#include <avr/io.h>
3
#include <avr/interrupt.h>
4

5
#define FOSC 8000000//14745600 //Clock Speed
6
#define BAUD 9600
7
#define UBRR ((FOSC / (BAUD * 16L)) - 1)
8

9
volatile unsigned char data;
10

11

12
int main(void)
13
{
14
  /* PD1 als Ausgang */
15
  DDRD = 0x02;
16

17
  /* Aktivieren des Empfängers und des Daten leer-Interrupts */
18
  UCSR0B = (1<<RXCIE0) | (1<<RXEN0);
19

20
  /* baud rate*/
21
  UBRR0H = (unsigned char) (UBRR>>8);
22
  UBRR0L = (unsigned char) UBRR;
23

24
  /* frame format: 8data, 1stop bit*/
25
  UCSR0C = (1 << UCSZ01) | (1 << UCSZ00);
26

27
  sei();
28

29

30
  while(1)
31
  {
32
    ;
33
  }
34
   
35
}
36

37

38
ISR(USART_RX_vect)
39
{
40
  data = UDR0;
41
}


Es werden einfach keine Daten empfangen. Die Hardware und die 
Verbindungen sind in Ordnung, habe sie gerade mit einer anderen UART 
Software getestet. Was merkwürdig ist, wenn ich das TXEN0 und das UDRIE0 
Bit im UCSR0B Register setze und den UDRE Interrupt wie folgt in das 
obige Programm einsetze, funktioniert auch der Datenempfang.
1
ISR(USART_UDRE_vect)
2
{
3
  UDR0 = 'h';
4
}

Kann mir jemand sagen warum das so ist?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren