Gast
#951252
Hallo, wie kann ich einen 8-Bit Wert in 7-Bit umwandeln bzw. runterrechnen in Assembler. Der Wert kommt vom Analogeingang der ATmega8. Oder kann ich den A/D-Wandler direkt auf 7-Bit einstellen???
|
Anzeige
|
8-Bit Wert in 7-Bit umwandeln (von AVR A/D-Wandler)
Gast
#951252
Hallo, wie kann ich einen 8-Bit Wert in 7-Bit umwandeln bzw. runterrechnen in Assembler. Der Wert kommt vom Analogeingang der ATmega8. Oder kann ich den A/D-Wandler direkt auf 7-Bit einstellen???
Gast
#951254
einfach einmal right-shift machen :) das geht in assembler ganz einfach
Gast
#951314
In C waer es dieses: (value >> 1)
Gast
#951317
Das shiften ist am schnellsten. Man könnte aber auch durch 2 teilen.
Gast
#951396
Danke für die Antworten, hab jetzt die Bits um eine Position verschoben und bekomme auch einen Maximalwert von 127. Nur leider wird, bis das Poti zu 90% aufgedreht ist, nur ein Wert von 0 gesendet und die letzten 10% bewirken eine Änderung.
Gast
#951406
Das hört sich verdächtig nach einem logarithmischen Poti an, oder war die Änderung vor der Programmänderung linear, am besten mal mit einem Multimeter den Widerstand messen und gleichmäßig drehen, dann sieht man sofort on das Poti linear oder logarithmisch ist
Gast
#951407
Hi >Nur leider wird, bis das Poti zu 90% aufgedreht ist, nur ein Wert von 0 >gesendet und die letzten 10% bewirken eine Änderung. Das Ergebnis des AD-Wandlers besteht aus 2 Werten ADCL und ADCH. Wenn du nur 7 Bit brauchst solltes du erstmal das ADLAR-Bit in ADMUX setzen. Damit wird das Ergebnis linksbündig (die oberen 8 Bit in ADCH) ausgegeben. Wenn du dann ADCH ausliest und 'shr' machst bekommst du dein Ergebnis. MfG Spess ich wäre für lsr statt shr...
Gast
#951415
> Das hört sich verdächtig nach einem logarithmischen Poti an, oder war > die Änderung vor der Programmänderung linear, am besten mal mit einem > Multimeter den Widerstand messen und gleichmäßig drehen, dann sieht man > sofort on das Poti linear oder logarithmisch ist Die Änderung war schon vor der Programmänderung nicht linear. Hab jetzt mit einem Multimeter gemessen und bekomme gleichmäßige Werte beim Drehen.
Gast
#951416
HI
>ich wäre für lsr statt shr...
Stimmt, war gedanklich in der falschen Programmiersprache.
MfG Spess
Gast
#951424
Hab den Fehler gefunden, hatte die Bits für Port C am Anfang des Programms noch auf Ausgang gesetzt. Da hängt das Poti dran :-) Vielen Dank! Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|