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.