Hallo Zusammen! Ich habe eine Frage zur Auswertung meiner AD-Wandlungen: Ich verwende den ATtiny15 und erhalte mit dem AD-Wandler ein 10-bit genaues Ergebnis (ich benötige alle 10 bits). Das Ergebnis steht nun in zwei Registern, da ja 10 bit nicht in einem Register unterzubringen sind. Ich möchte nun von diesem 10-bit Ergebnis eine weitere 10-bit Zahl subtrahieren. Wie muss ich das machen, damit es arithmetisch korrekt ist? Ich bin mir unsicher... Danke für alle Tips!!! Peter.
Hi, ich würde das so machen, die 10 bit Zahlen sind doch in 8bit Blöcke geteilt. Erst muss man die beiden niederwertigen Bit blöcke von einander abziehen und zwar so das man einen Übertrag bzw. ein Carry bekommt. Dann zieht man das Carry von dem Höherwertigen Teil des Ergebnisses der AD_Zahl ab und dann subtrahiert man noch die höherwertigen Bits. Dann mus das Ergebniss halt auch noch schrittweise wieder in zwei Bits gespeichert werden. Also viel Glück.
Hi, für die von Peter angegebenen Operationen gibt's auch spezielle Befehle. Schau dir dazu mal ADDC, SUBC, ADDIW und SUBIW an. Die ersten beiden beachten das Carryflag. Dabei natürlich immer das Alignment der Resultate des ADC beachten :-)
Wenn Y (yh:yl) von X (xh:xl) subtrahiert werden soll: sub xl,yl ;subtrahiert L-Teil Y von X sbc xh,yh ;subtrahiert H-Teil Y von X incl. Übertrag (Carry) ...
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.