ATtiny2313 + USART = am verzweifeln :-(
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:
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);
}
}
Es kommt einfach garnichts an...
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
Liste der Anhänge anzeigen (Anzahl: 1)
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?