Ich habe eine generelle Frage. ich habe zb eine c zeile die lautet: void isr_AD(void) interrupt 0x28 { cc23 = (ADDAT & 0x03C0) << 6; } wie bestimme ich den wert = 0x03C0. Nach welche Kriterien bestimme ich diesn Wert. Gruß Hans
Hi >wie bestimme ich den wert = 0x03C0. >Nach welche Kriterien bestimme ich diesn Wert. $3C0 = 0b1111000000 Das bedeutet, das nur die oberen 4 Bit des Ergebnisses verwendet werden. Bei mehr Bits: 0b1111100000 = $3E0 0b1111110000 = $3F0 0b1111111000 = $3F8 0b1111111100 = $3FC 0b1111111110 = $3FE MfG Spess
also was die zahl in hex und bin ist des ist mir klar. Mir stellt sich die Frage warum ich 0x03C0 verwende und dann noch nach links 6 mal verschiebe. Das ist mein problem. Woher weis ich dass ich die 0x03C0 verwenden muss. MfG Hans
> Woher weis ich dass ich die 0x03C0 verwenden muss.
Müssen ist relativ und ohne Speck kann man nur raten. Ich vermute mal
dass der (unbenannte) ADC eine Auflösung von 10 Bit hat und der
Programmierer obigen Kunstwerks eine Auflösung von 4Bit will - im
viertniedrigsten Nibbel der (undeklarierten) Zielvariable.
HTH
Hi >Mir stellt sich die Frage warum ich 0x03C0 verwende Die Frage solltest du beantworten können (wenn es dein Code ist). >und dann noch nach links 6 mal verschiebe. >Das ist mein problem. Woher weis ich dass ich die 0x03C0 >verwenden muss. Das ADC-Ergebnis deines unbekannten Controllers ist offensichtlich 12-Bittig. Mit ADC & $3C0 bleiben nur die oberen 4 Bit übrig. << 6 schiebt die 4 Bit um 6 Stellen nach links. Damit wären sie die oberen 4 Stellen eines Bytes. Wie ist cc23 deklariert? MfG Spess
Hi >Das ADC-Ergebnis deines unbekannten Controllers ist offensichtlich >12-Bittig. Natürlich 10 Bittig. MfG Spess
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.