Gast
#3858280
Hallo Forum, ich habe eine Programm, das Manchester-Code auswertet. Dazu benutze ich Zeitkonstanten zur Erkennung von langen und kurzen Bits. Diese Zeiten möchte ich je nach CPU-Takt berechen: #define _Counts(a) (a*F_CPU/(1000000*8)) #define SHORT_MIN 200 #define SHORT_MAX 300 #define LONG_MIN 380 #define LONG_MAX 600 F_CPU ist bei mir 1Mz, d.h. _Counts(a) sollte alle Werte durch 8 teilen. Zum Test habe ich mir mal alle 4 Zeiten ausgeben lassen: uart_putc(_Counts(SHORT_MIN)); uart_putc(_Counts(SHORT_MAX)); uart_putc(_Counts(LONG_MIN)); uart_putc(_Counts(LONG_MAX)); Ich erwarte: 25 37 47 203 Das Ergebnis sieht im Terminal so aus: 025 037 047 203 Die ersten 3 Werte werden richtig berechnet, der letzte Wert Falsch, müßte eigentlich 75 sein.(Bit 7 ist zuviel gesetzt). Was mache ich falsch, habe ich ein Vorzeichenproblem oder muss ich irgendwo Casten?