Hallo, ich habe einen ATmega48 gekauft. Ich habe einen IC angeschlossen, der dann mit 19200bps Daten an den Atmel schickt. Diese leite ich dann zum PC weiter. Nun kommen aber immer nur Hex Zahlen mit den Werten 80 oder 00 an. Wenn ich z.B. einen ATtiny2313 einbaue, funktioniert es einwandfrei. Kann mir mal jemand ein kleines Testprogramm für die serielle Schnittstelle schicken das mit dem ATmega48 funktioniert. Danke MfG Alex
Funktioniert denn das Senden vom µC zum PC alleine? Möglicherweise ist der USART falsch eingestellt...Poste doch mal den Code. Gruß Andreas
Hallo, das ist mein Code der PC empfängt Hex: 80 00 80 F_CPU steht im Makefile und hat den Wert 8000000 #include <stdlib.h> #include <avr/io.h> #define UART_BAUD_RATE 19200 void uart_init(unsigned int baudrate) { UBRR0H = ((unsigned char)(baudrate>>8))&0x80; UBRR0L = (unsigned char) baudrate; UCSR0B = _BV(RXCIE0)|(1<<RXEN0)|(1<<TXEN0); UCSR0C = (3<<UCSZ00); } void uart_putc(unsigned char data) { while ( !(UCSR0A & (1<<UDRE0))) { asm("nop"); } UDR0=data; } int main(void) { uart_init(F_CPU/UART_BAUD_RATE/16-1); uart_putc('A'); }
> F_CPU steht im Makefile und hat den Wert 8000000
Und mit welcher Taktfrequenz läuft dein ATmega48?
(Hinweis: guck dir die Fuses an...)
Habe den Fehler gefunden Dieses Fuse war gesetzt. Divide clock by 8 internally Danke für die Hilfe MfG Alex
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.