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?
Gast #2067605
Lesenswert?

Ist nicht gesetzt. Sonst würde die Variante mit dem Senden ja auch nicht 
funktionieren.....

Versteh nur nicht was das Empfangen mit dem Senden zu tun hat, doch 
eigentlich nix..... sind doch zwei paar Schuhe..... Aber wenn ich sende 
klappt auch das empfangen.......

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