Hi!
Leider lag das Wekzeug brach übers lange Wochenende...
Hier ist einer der Codes mit denen ichs versucht hab:
Code:
/****************************************************************************
UART.c
------
Übungsprojekt zum Empfang von Daten mit dem UART.
Eine LED an Pin 0 von Port C 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), UCSRB);
/* Baudrate einstellen */
outp ((BYTE) 0x00, UBRRH);
outp ((BYTE) UART_BAUD_SELECT, UBRRL);
// Port B als Ausgang konfigurieren
outp (0xff, DDRC);
PORTC=0xff;
// 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 (UCSRA) & (1 << RXC)) { // Bit RXC im USR gesetzt ?
switch (inp (UDR)) { // Datenregister auslesen
case '0': // LED einschalten
sbi (PORTC, PINC0);
break;
case '1': // LED ausschalten
cbi (PORTC, PINC0);
break;
default: // Bei allen anderen Zeichen nichts tun
break;
}
}
goto LOOP;
} /* end of main */
Ich bin mir nicht sicher ob die Register alle korrekt benannt sind. Ansonsten hab ich kein Plan warums net läuft...
thx schonmal
gruz ciruz
Lesezeichen