UART Fehlermeldung

Gast #598335
Lesenswert?

Hi,
Möchte ein Zeichen "x" an die RS232 Schnittstelle senden und es mit 
einen Programm auslesen. Dass Programm auf dem PC geht zu 100%. Ich habe 
laut Toturial folgenden Quellcode für meinen ATMega16 geschrieben:
1
#include <avr/io.h>
2

3
#ifndef F_CPU
4
#define F_CPU 8000000UL  //Einstellen der Oszillator - Frequenz in Hz 
5
#endif              
6

7

8
#define UART_UBRR_CALC(BAUD_,FREQ_) )((FREQ_)/((BAUD_)*16L)-1
9

10
#define UART_BAUD_RATE 9600 //Einstellen der Baudrate 
11

12

13
int main (void)
14
{
15
//Initialisieren des UART´s 
16

17

18
UCSRB  |=  (1<<TXEN); //UART TX einschalten
19
UCSRC  |=  (1<<URSEL)  |  (3<<UCSZ0); //Asynchron 8N1
20

21
//Einstellen der Baudregister
22

23
UBRRH  =  (uint8_t)(UART_UBRR_CALC(UART_BAUD_RATE, F_CPU) >> 8);
24
UBRRL  =  (uint8_t)  UART_UBRR_CALC(UART_BAUD_RATE, F_CPU);
25

26
//Senden einzelner Zeichen
27

28
while (!(UCSRA & (1<<UDRE)))  //Warten, bis das Senden möglich ist
29
{
30

31
}
32

33

34

35
UDR    =  'x'; //Schreiben des Zeichens 'x' auf die RS232 - Schnittstelle
36

37
return (0);
38

39
}

Ich kann ihn aber nicht übersetzten. Bekomme immer Fehlermeldungen. Was 
mache ich falsch?
Gast #598345
Lesenswert?

Hallo,

immer diese C-Übungen für mich (nur ASM-Programmierer...) ;)

Zähle und sortiere mal Deine Klammern
#define UART_UBRR_CALC(BAUD_,FREQ_) )((FREQ_)/((BAUD_)*16L)-1

und auch hier mit der Ersetzung:
UBRRH  =  (uint8_t)(UART_UBRR_CALC(UART_BAUD_RATE, F_CPU) >> 8);

zumindest mault der Compiler bei mir darüber.

Gruß aus Berlin
Michael

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