Gast
#432325
Hi,
ich fange gerade erst an mich mit C zu befassen und wollte nun mal etwas
mit UART probieren, dazu habe ich im Internet folgenden Quellcode
gefunden:
/***********************************************************************
*****
UART.c
------
Übungsprojekt zum Empfang von Daten mit dem UART.
Eine LED an Pin 0 von Port B soll gesteuert werden beim Empfang
folgender
Zeichen:
'1' - LED ein.
'0' - LED aus.
Autor: Christian Schifferle
Datum: November 2002
Software: AVR-GCC
needed
************************************************************************
****/
#include <io.h> // Wir brauchen Zugriff auf die I/O's des Controllers
#define F_CPU 8000000 /* 8Mhz */
#define UART_BAUD_RATE 9600 /* 9600 baud */
// Berechnung des Inhalts des UBBR-Registers
#define UART_BAUD_SELECT (F_CPU/(UART_BAUD_RATE*16l)-1)
// Datentypdefinitionen
typedef unsigned char BYTE;
typedef unsigned short WORD;
int main (void)
/***********************************************************************
*****
Hier ist der Programmeinstiegspunkt.
*/
{
/* UART Control Register laden. Wir verwenden (noch)
keine Interrupts. Hier wollen wir nur empfangen, also wird
nur das Receiver Enable Flag gesetzt. */
outp ((1 << RXEN), UCR);
/* Baudrate einstellen */
outp ((BYTE) UART_BAUD_SELECT, UBRR);
// Port B als Ausgang konfigurieren
outp (0xff, DDRB);
// Hier machen wir einmal etwas anderes zur Realisierung der
// Endlosschleife. Wir setzen zu Beginn der Schleife ein Label.
// Am Schleifenende springen wir direkt zu diesem Label.
// Nicht schön, aber unheimlich schnell.
LOOP:
// Prüfen, ob ein Zeichen empfangen wurde.
if (inp (USR) & (1 << RXC)) { // Bit RXC im USR gesetzt ?
switch (inp (UDR)) { // Datenregister auslesen
case '1': // LED einschalten
sbi (PORTB, PINB0);
break;
case '0': // LED ausschalten
cbi (PORTB, PINB0);
break;
default: // Bei allen anderen Zeichen nichts tun
break;
}
}
goto LOOP;
} /* end of main */
Leider kriege ich wenn ich auf Build klicke folgende Meldungen:
rm -rf uart.o uart.elf dep/ uart.hex uart.eep
Build succeeded with 0 Warnings...
avr-gcc -mmcu=atmega8 -Wall -gdwarf-2 -DF_CPU=8000000000 -O0
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
-Wp,-M,-MP,-MT,uart.o,-MF,dep/uart.o.d -c ../uart.c
../uart.c:17:70: io.h: No such file or directory
../uart.c: In function `main':
../uart.c:39: warning: implicit declaration of function `outp'
../uart.c:39: error: `RXEN' undeclared (first use in this function)
../uart.c:39: error: (Each undeclared identifier is reported only once
../uart.c:39: error: for each function it appears in.)
../uart.c:39: error: `UCR' undeclared (first use in this function)
../uart.c:42: error: `UBRR' undeclared (first use in this function)
../uart.c:46: error: `DDRB' undeclared (first use in this function)
../uart.c:55: warning: implicit declaration of function `inp'
../uart.c:55: error: `USR' undeclared (first use in this function)
../uart.c:55: error: `RXC' undeclared (first use in this function)
../uart.c:56: error: `UDR' undeclared (first use in this function)
../uart.c:58: warning: implicit declaration of function `sbi'
../uart.c:58: error: `PORTB' undeclared (first use in this function)
../uart.c:58: error: `PINB0' undeclared (first use in this function)
../uart.c:61: warning: implicit declaration of function `cbi'
make: *** [uart.o] Error 1
Build failed with 12 errors and 4 warnings...
Leider weiß ich nicht woran das liegt...hat evtl. jemand einen Tipp für
mich?