Hallo!
Ich versuche mich gerad ein wenig an C und möchte gern Bytes vom PC empfangen und am PortC durch eine LED-Leiste anzeigen lassen. Hier mein Code (Aus verschiedensten Tutorials zusammenkopiert):
Code:
#include <inttypes.h>
#include <avr/io.h>
#define F_CPU 7372800L
#define BAUD 9600L
#define UBRR_VAL ((F_CPU+BAUD*8)/(BAUD*16)-1) // clever runden
#define BAUD_REAL (F_CPU/(16*(UBRR_VAL+1))) // Reale Baudrate
#define BAUD_ERROR ((BAUD_REAL*1000)/BAUD-1000) // Fehler in Promille
int main(void)
{
UCSRB |= (1<<RXEN); // UART RX einschalten
UCSRC |= (1<<URSEL)|(3<<UCSZ0); // Asynchron 8N1
UBRRH = UBRR_VAL >> 8;
UBRRL = UBRR_VAL & 0xFF;
DDRC = 0xFF;
PORTC = 255;
while (!(UCSRA & (1<<RXC))) // warten bis Zeichen verfuegbar
;
{
PORTC = UDR;
};
}
Was passiert ist dass die LED-Leiste GANZ kurz leuchtet (programmstart) und dann aus ist. Ich habe schon geschaut, ob es vllt mit 1200 Baud (im Terminal-Prog eingestellt) läuft, wegen des /8-Fuses, aber ist nicht. Hab den Ausgang (TXD) der USB-Uart-Bridge an RXD am Mega8 angeschlossen.
Kann mir wer sagen, was ich falsch mache? Hab schon hier im Forum viel rumgelesen, aber dabei keine neuen Erkenntnisse gewonnen.
Lesezeichen