UART - ATMEGA32 empfängt nicht richtig

Gast #3607775
Lesenswert?

Hallo,
ich weiß das das ein leidiges Thema ist aber mittlerweile bin ich echt 
am Verzweifeln.
Ich bekomme kein Senden und Empfangen mit dem UART des ATMEGA32 hin.

Hardwaretechnisch müsste es in Ordnung sein, denn wenn ich den Mega aus 
dem Sockel nehme und RXD und TXD verbinde, bekomme ich auf meinem 
Terminalprogramm das Zeichen als Echo wieder.

In dem unteren Programm versuche ich ein Zeichen an den Mega zu senden, 
und dieses dann binär an den PORTA, an welchem 8 LEDs angeschlossen 
sind, auszugeben. Sobald ich allerdings das erste Zeichen mit dem PC 
sende, leuchten alle LED's bis der Controller resettet wird.

Für Hilfe wäre ich sehr dankbar.
1
/*
2
 *
3
 *
4
 * Created: 28.03.2014 15:42:50
5
 * 
6
 */ 
7
#ifndef F_CPU
8
#define F_CPU 16000000UL
9
#endif
10

11
#define BAUD 9600UL
12

13
//UBRR Berechnung
14
#define UBRR_Val ((F_CPU/(16*BAUD))-1)
15

16

17
#include <avr/io.h>
18
#include <util/delay.h>
19
#include <stdint.h>
20
#include <stdlib.h>
21
#include <avr/interrupt.h>
22
#include <inttypes.h>
23

24
void UARTinit(void);
25
uint8_t uart_getc(void);
26

27

28
int main(void)
29
{
30
  //UART Initialisieren
31
  UARTinit();
32
  //PORTA Ausgang
33
  DDRA=0xff;
34
  
35
    while(1)
36
    {
37
     uint8_t c;
38
     c = uart_getc();
39

40
     PORTA = c;
41
    }
42
}
43

44
void UARTinit(void)
45
  {
46
    //UBRR set
47
    UBRRH=UBRR_Val >> 8;
48
    UBRRL=UBRR_Val  & 0xFF;
49
    //Transmitter Enable
50
    UCSRB|=(1<<TXEN);
51
    //Receiver Enable
52
    UCSRB|=(1<<RXEN);
53
    //8bit,1Stop,No Parity
54
    UCSRC|=(1<<UCSZ1)|(1<<UCSZ0);
55
  }
56
  
57
uint8_t uart_getc(void)
58
{
59
  while (!(UCSRA & (1<<RXC)));
60
  return UDR;                  
61
}
Gast #3607815
Lesenswert?

Ich verstehe nichts von C, denke aber, daß es daran liegt, daß man
über das Bit RXC im Register UCSRA abfragen sollte, ob ein neues Zeichen
im Empfangsregister liegt und man das dann dort holen kann.

Vielleicht wartet diese "Uart_get_C" ja auch auf eine neues Zeichen und
daraufhin hängt der ganze Ablauf?

MfG Paul

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