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
Hi Algol60, Fortran, Lisp, Pascal oder welche Programmiersprache? MfG Spess
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
Ich bin relativ neu und konzentriere mich deshalb auf Assembler. Mit C befasse ich mich später einmal ;) Was schlagt ihr vor?
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.