Hi zusammen,

nachdem ich nun nen funktionierenden LCD-Schirm habe *freu*
Hab ich mich direkt ans nächste Thema gewagt - dem USART... Ich hab vorhin alles fertig zusammengelötet und angeschlossen, basierend auf der Schaltung von http://www.mikrocontroller.net/tutorial/uart.htm

Als Terminal benutze ich dieses hier: http://bray.velenje.cx/avr/terminal/

Wenn ich das Programm starte erkennt es automatisch die Baudrate, daher gehe ich mal davon aus, das ich alles richtig zusammengelötet habe, da auch kein Teil heiß wurde und die Elkos noch heile sind
Natürlich kann das auch nur Zufall sein mit der Baudrate, wenn das Programm zB 9600 als Defaultwert hat...

Naja, jedenfalls passiert gar nix, weder receive noch transmit funktioniert... Nachdem ich erstmal selber versucht habe, dass zu coden und es nicht ging, hab ich die Lib von www.mc-project.de genommen, aber auch diese scheint nicht zu arbeiten:

Code:
#define F_CPU 8000000
#define USART_BAUD_RATE 9600
#define USART_BAUD_SELECT (F_CPU/(USART_BAUD_RATE*16l)-1)

void USART_Init(void) {
    //UCSRB = (1<<RXCIE) | (1<<TXCIE) | (1<<RXEN) | (1<<TXEN);
	UCSRB =  (1<<RXEN) | (1<<TXEN);
    UBRRL = (unsigned char) USART_BAUD_SELECT;
}

void USART_transmit (unsigned char c) {
	while (!(UCSRA & (1<<UDRE))) {}
	UDR = c;
}

unsigned char USART_receive (void) {
    while(!(UCSRA & (1<<RXC))) {}
    return UDR;
}

void USART_transmit_string (unsigned char *string) {
    while (!(UCSRA & (1<<UDRE))) {}
	while ( *string)
		USART_transmit (*string++);
}

int main (void)
 {
 USART_Init();

 while (1)
  {
   USART_transmit_string("Hello World");
  }
 }
Ich weiß jetzt nicht, ob ich anstatt F_CPU 8 * 10^6 nicht 1 * 10^6 nehmen müsste, weil ich nen ATmega16 habe und gelesen hab, dass man dort die Oszilatorfrequenz nehmen muss...

Außerdem kann ich mich noch dunkel an die Zeiten erinnern, als man noch mit seriellen Mäusen gearbeitet hat... Diese mussten doch immer vor dem Hochfahren des Systems angeschloßen sein - Kann das daran liegen?

Irgendwelche Vorschläge?

ThxInAdv
Alex