gib mach das ganze casting dazu, auch wenn's bescheuert aussieht.Code:uint16_t ubrr = (uint16_t) ((uint32_t) F_CPU/(16*BAUDRATE) - 1);
gib mach das ganze casting dazu, auch wenn's bescheuert aussieht.Code:uint16_t ubrr = (uint16_t) ((uint32_t) F_CPU/(16*BAUDRATE) - 1);
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Ne hat leider auch nicht geklappt, es kommt jedes Zeichen an, nur nicht das was ankommen soll... So ein kurzer Code, was kann man denn da übersehen haben.
hab den auf extern 16.000 64 ms gestellt, und noch die Optimierung auf das unterste.
Gruß David
Ich kam, sah und alles funktionierte **** doch dann klingelte mein Wecker!!!
Du setzt UPM1 (Parity even enabled)
Weiss das Terminal auch was davon ?
Probier mal ohne
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Ja hatte schon einmal mit und einmal ohne ausprobiert...
Ich kam, sah und alles funktionierte **** doch dann klingelte mein Wecker!!!
Hartnäckig.
Also stelle das Terminal auf 8-Bit 1 Stop no parity, no handshake, 9600 Baud
Das UPM1 lass also aus.
Setze mal UBRR Wert "zu Fuß" (9600 bei 16 MHZ) #define USART_BAUD_SELECT 0x67
Check nochmal die Fuses wegen der Clock=16 MHZ
Statt "Hallo, Weilt" schicke "AAAAAAAA" ( 8 mal "A")
sag dann, welche Art Schmierzeichen zu kriegst und ob es 8 sind oder mehr oder weniger
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Also es kommt Dezimal="01011111" und als zeichen 8 mal = "_"
Hoffe man kann damit was anfangen
Ich kam, sah und alles funktionierte **** doch dann klingelte mein Wecker!!!
Hallo,
sowas hatte ich auch schon mal. Benutzt du einen Quarz? Ohne habe ich nie eine stabile UART-Kommunikation hinbekommen. Das Ergebnis so so ähnlich aus wie bei dir.
Es könnte auch an deiner Verkabelung liegen. A = 65dez = 01000001bin. Bei dir scheints genau invertiert anzukommen. (Ich habe jetzt nicht genau die Start-/Stop-Bits im Kopf, sieht aber tatsächlich komplett invertiert sein)
Viele Grüße
Andreas
Lesezeichen