Vergleich von 16bit Zahlen

Gast #1354192
Lesenswert?

Guten Tag

Ich arbeite mit einem ATMEGA8 Controller. Momentan bastle ich an einer 
Software PWM mit einer Auflösung von 1024 (10bit).

Die Auflösung habe ich gewählt weil der ADC auch mit 10bit arbeitet. Nun 
müsste ich die 10bit Zahlen miteinander vergleichen, um zu überprüfen ob 
der Grenzwert schon erreicht ist.

Wie würdet ihr das machen? Man könnte natürlich die High und Low 
Register seperat vergleichen und auswerten oder gibt es eine elegantere 
Lösung?

Ich freue mich auf Antworten

Danke

Gruss
Gast #1354206
Lesenswert?

Hallo Typhoon,

bei 10 Bit-Wert in einem Integer werden nur die
Bit 0-9 verwendet. Ist also eines oder mehrere der
Bits 10-15 gesetzt ist der Wert >1023.

Die stehen im HighByte. Ein (HByte&0xfc)!=0 sollte
das Überschreiten anzeigen.

avr
Gast #1354464
Lesenswert?

spess53 schrieb:
> AVRs kennen nur 8-Bit-Vergleiche. Also bleibt dir nur dieser Weg.
> MfG Spess

Hallo,

ein Vergleich ist nichts anderes als eine Subtraktion. Du brauchst einen 
Befehl für Subtraktion mit Borrow, den wird es ja wohl geben, damit 
kannst du Berechnungen mit n x 8 bit ausführen.

Beim Hi Register musst du beachten, dass du zum Negieren (zwecks 
Subtraktion) die Bits 15 bis 10 auf den gleichen Wert wie Bit 9 setzen 
musst.

Sowas steht meistens mit Beispielen im Assembler-Handbuch. Überhaupt 
sind Handbücher eine tolle Erfindung.

Gruss Reinhard

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren