Hallo! Jetzt muss ich euch nochmals nerve - aber ich verspreche, es war das lezte Mal vorm Wochenende g Für alle die's noch nicht wissen: Ich arbeite mit dem Mega8515 und dem IAR Workbench AVR C Compiler. Ich initialisiere das USART so: UCSRA = 0x00; UCSRC = (1 << URSEL) | (1 << UCSZ1) | (1 << UCSZ0) ; UBRRH = 0x00; UBRRL = 0x19; UCSRB = (1 << TXEN); Also: - asynkron - keine Parität - 1 Stoppbit - 8 Datenbits - Baudrate: 38400 (25 in das Baudratenregister) Wenn ich nun mit puts("F"); oder printf("F"); versuche etwas auszugeben, meldet sich weder am PC was noch kann ich mit dem Oszi was am TXD Pin messen. Ich habe alle Registereinstellungen mehrfach kontrolliert - aber ich finde den Fehler nicht ... Viele Grüße Ralf
So ich nochmal ... Wenn ich das UDR Register von Hand setze funktioniert es einwandfrei. Mir reicht das so, aber rein aus Interesse wüsste ich nun schon gerne, warum die anderen Funktionen (Printf und puts) nicht funktionieren ... Grüße Ralf
bit 6 von UCSRB muß noch gesetzt werden und der gener. Interrupt Enable SREG |= 128; Michael
hm - also ich hab die Interrupts jetzt aktiviert und es funktioniert dennoch noch nicht ... #include <stdio.h> UCSRA = 0x00; UCSRC = (1 << URSEL) | (1 << UCSZ1) | (1 << UCSZ0); UBRRH = 0x00; UBRRL = 0x19; UCSRB = (1 << TXEN) | (1 << RXEN) | (1 << TXCIE) | (1 << RXCIE) | (1 << UDRIE); __enable_interrupt(); printf("t"); oder puts("t"); Grüße Ralf
Ach ja: ich habs auch versucht von Hand zu machen. Setze uch das UDR Register, so geht das auch: UDR = 0x20; Mit zwei funktioniert er auch noch UDR = 0x20; UDR = 0x30; aber alles was drüber ist funktioniert nicht korrekt. So habe ich versucht zwischen den einzelnen UDR immer zu warten, bis das USART Transmit Complete Bit gesetzt ist (und hab es anschließend durch setzen auf 1 wieder auf 0 zurück gesetzt). Wo liegt jetzt schon wieder das Problem? Ralf
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.