Hi!
Leider lag das Wekzeug brach übers lange Wochenende...
Hier ist einer der Codes mit denen ichs versucht hab:
Ich bin mir nicht sicher ob die Register alle korrekt benannt sind. Ansonsten hab ich kein Plan warums net läuft...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 */
thx schonmal
gruz ciruz







Zitieren

Lesezeichen