Forum: Mikrocontroller und Digitale Elektronik CCR0 Überlauf


von MSP430 (Gast)


Lesenswert?

Hallo,

wenn ich immer wieder einen konstanten Wert auf mein 
Capture-Compare-Register drauf addiere, was passiert beim Überlauf?

Startbedingung CCR0-Inhalt: 65000 im 16 bit Register

CCR0 += 1000;

was steht nun drin?

CCR0 == 65535 == 0xFFFF

oder

CCR0 == 465

mfg

von Karl H. (kbuchegg)


Lesenswert?

MSP430 schrieb im Beitrag #2740546:
> Hallo,
>
> wenn ich immer wieder einen konstanten Wert auf mein
> Capture-Compare-Register drauf addiere, was passiert beim Überlauf?
>
> Startbedingung CCR0-Inhalt: 65000 im 16 bit Register
>
> CCR0 += 1000;
>
> was steht nun drin?
>
> CCR0 == 65535 == 0xFFFF
>
> oder
>
> CCR0 == 465

Da das unsigned Arithmetik ist, funktioniert das wie bei einer Uhr.
Wenn der Sekundenzeiger auf 50 steht, dann steht er 25 Sekunden später 
auf der 15. Denn um Dunstkreis der Sekundenberechnung auf einem 
Zifferblatt gilt nun mal 50 + 25 -> 15


> was steht nun drin?
> CCR0 == 65535 == 0xFFFF

Das wäre ein bischen viel Aufwand, wenn der µC jede Berechnung 
dahingehend überwachen müsste.
Der addiert einfach und was nicht mehr (durch den Overflow) in die 
Ergebnisvariable passt, das passt einfach nicht und geht verloren.

So wie wenn du auf einem Papierblock rechnest und die Zahlen so groß 
werden, dass sie nicht mehr aufs Papier passen. Alles was du links vom 
Papier 'in die Luft' schreibst, hast du 'in die Luft' geschrieben.

von MSP430 (Gast)


Lesenswert?

...kann man das auf alle Befehle übertragen, die mit "physikalisch" 
existenten Registern arbeiten?

mfg

von Karl H. (kbuchegg)


Lesenswert?

MSP430 schrieb im Beitrag #2740566:
> ...kann man das auf alle Befehle übertragen, die mit "physikalisch"
> existenten Registern arbeiten?

Das kannst du auf alles übertragen, was sich in C "unsigned" schimpft.

Bei 'unsigned' ist dieses Verhalten garantiert. Bei signed ist es meist 
ähnlich, allerdings ist es da nicht garantiert.

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
Noch kein Account? Hier anmelden.