Hallo, ich möchte für den Timer1 (Controller stm8s103f3, 16MHz,in c) einen Prescaler wählen. Ich hab aber 2 Register : -> Prescaler high(TIM1_PSCRH) -> Prescaler low(TIM1_PSCRL) fCK_PSC / (PSCR[15:0]+1). wenn ich zum Beispiel den Prescaler 1024 wählen möchte, wie teile ich das in den beiden Bytes? würde mich sehr freuen wenn ich Hilfe bekomme. Danke
Sebastian Pringal schrieb: > Hallo, > > ich möchte für den Timer1 (Controller stm8s103f3, 16MHz,in c) einen > Prescaler wählen. Ich hab aber 2 Register : > -> Prescaler high(TIM1_PSCRH) > -> Prescaler low(TIM1_PSCRL) > > fCK_PSC / (PSCR[15:0]+1). > > wenn ich zum Beispiel den Prescaler 1024 wählen möchte, wie teile ich > das in den beiden Bytes? Dem Prinzip nach: Stell es dir als 16 Bit Zahl binär dar 0000010000000000 jetzt teilst du das bei 8 Bit 00000100 00000000 und hast damit die beiden Bytes für das High und das Low Register High wäre also 0x04 (dezimal 4) und Low wäre 0 In der Praxis entspricht dieser Aufteilung ganz einfach einer Division durch 256 1024 / 256 -> 4 1024 % 256 -> 0 (256 deshalb, weil man mit 8 Bit 256 verschiedene Zahlen darstellen kann) Dazu equivalent ist Für das Highbyte: einfach die 16 Bits um 8 Bits nach rechts verschieben. Für dasLowbyte: einfach alle Bits über den 8 Bits auf 0 setzen High = Wert >> 8; Low = Wert & 0xFF;
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.