im datenblatt steht, dass wenn USBS=1 ist, zwei stop bits verwendet werden. du möchtest doch nur 1 Stopbit. ändere das mal.
Hallo
Bekomme es mit dem ATtiny2313 einfach nicht hin Daten an den PC zusenden [-(
Es soll eine 8-N-1 Verbindung mit einem 9600 Baud sein.
Hier mein bisheriger Code:
Es kommt einfach garnichts an...Code:#include <avr/io.h> #define F_CPU 7372800 // 7,3728 Mhz #include <util/delay.h> #define UART_BAUD_RATE 9600 #define UART_BAUD_CALC(UART_BAUD_RATE,F_CPU) ((F_CPU)/((UART_BAUD_RATE)*16l)-1) void usart_putc(unsigned char c) { // warten bis UDR bereit ist while(!(UCSRA & (1 << UDRE))); UDR = c; // sende Zeichen } int main(void) { UCSRC = (1<<USBS)|(3<<UCSZ0); UCSRB = (1 << TXEN); UBRRH = (uint8_t)(UART_BAUD_CALC(UART_BAUD_RATE,F_CPU)>>8); UBRRL = (uint8_t)UART_BAUD_CALC(UART_BAUD_RATE,F_CPU); while(1) { usart_putc('M'); _delay_ms(300); } }
Hardware scheint aber ok zu sein, wenn ich den Controller aus dem Sockel entferne und TX/RX Verbinde, empfängt der PC das was er auch sendet...
Schonmal vielen Dank
Gruß
Dirk
im datenblatt steht, dass wenn USBS=1 ist, zwei stop bits verwendet werden. du möchtest doch nur 1 Stopbit. ändere das mal.
Hab nun nur UCSRC = (3<<UCSZ0); passiert aber leider noch immer nichts
Mal ne blöde Frage,
nen Schnittstellenwandler, MAX 232 oder Transistorschaltung hast Du schon zwischen dem Tiny und dem PC ?
schreib anstatt: UCSRC = (1<<USBS)|(3<<UCSZ0);
UCSRB = (1 << TXEN);
dies: UCSRC |= (1<<USBS)|(3<<UCSZ0);
UCSRB |= (1 << TXEN);
bringt leider nichts...
@wkrug:
verwende einen MAX232.
Hab nochmal ein Screenshot von den Fuse Bits angehängt.. kann es evtl auch daran liegen?
weiter oben ist noch ein Haken bei:
"Serial programm downloading"
"Brown-out detection disabled"
"Divide clock by 8 internally"
//EDIT: hatte bei früheren Versuchen bei UBRRH und UBRRL mal irgendetwas reingeschrieben. dann wurde wilder Zeichensalat gesendet.. Evtl die Berechnung falsch?
Es könnte das schuld sein "Divide clock by 8 internally" da wird doch der Takt durch 8 geteilt.
Hubert
YEAH es geht nun
@Hubert.G: es lag wirklich an dem "Divide clock by 8 internally"
VIELEN DANK an euch alle
Lesezeichen