www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Vergleich von 16bit Zahlen


Autor: Typhoon (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Algol60, Fortran, Lisp, Pascal oder welche Programmiersprache?

MfG Spess

Autor: avr (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Typhoon (Gast)
Datum:

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

Was schlagt ihr vor?

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Reinhard Kern (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.