Forum: Mikrocontroller und Digitale Elektronik Vergleich von 16bit Zahlen


von Typhoon (Gast)


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

von spess53 (Gast)


Lesenswert?

Hi

Algol60, Fortran, Lisp, Pascal oder welche Programmiersprache?

MfG Spess

von avr (Gast)


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

von Typhoon (Gast)


Lesenswert?

Ich bin relativ neu und konzentriere mich deshalb auf Assembler. Mit C 
befasse ich mich später einmal ;)

Was schlagt ihr vor?

von spess53 (Gast)


Lesenswert?

Hi

>Ich bin relativ neu und konzentriere mich deshalb auf Assembler. Mit C
>befasse ich mich später einmal ;)

AVRs kennen nur 8-Bit-Vergleiche. Also bleibt dir nur dieser Weg.

MfG Spess

von Reinhard Kern (Gast)


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

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.