Gast
#5316195
Hallöchen, ich habe da ein Problem. Ich hab mal wieder die AVRs ausgegraben und wollt ein paar alte projekte weitermachen. Nun habe ich ein problem, das ich früher nie hatte... der UART will nicht. Ich hab mal meinen Code hier. es geht um einen ATmega32. Wenn ich mir im Osci das Ausgabesignal am TX anschaue, dann sehe ich das der 50ms Delay prima funktioniert und auch passt - sind 50ms. Dagegen sind die einzelnen Bits 7ms lang! Was erheblich zu viel ist. (bei korrekten 19200baud sollte ich die auf meinem alten röhren teil garnicht richtig auflösen können) [c] int main (void) { // uart_init(19200,8,2); uint16_t baudVal = 25; //(F_CPU / (baud * 16UL) - 1); UBRRH = (unsigned char)(baudVal >> 8); UBRRL = (unsigned char) baudVal; UCSRB = (1<<RXEN) | (1<<TXEN); UCSRC = (1<<USBS) | (3<<UCSZ0); while(1) { // uart_putc(0b10101010); while(!(UCSRA & (1<<UDRE))); // Warte, bis Transmitter bereit. UDR = 0b10101010; _delay_ms(50); } } [c/] Hat jemand ne Idee? meine Fuse sind 0xD4 und 0xE4 (laut AtmelStudio) also sollte 8MHz sein Könnte es am AtmelStudio liegen? - früher hab ich mim AVRdude gearbeitet und da tat alles... Ich danke für eure Mühen!