mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 8-Bit Wert in 7-Bit umwandeln (von AVR A/D-Wandler)


Autor: Steven (Gast)
Datum:

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

Autor: morph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
einfach einmal right-shift machen :)

das geht in assembler ganz einfach

Autor: stettberger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In C waer es dieses:

(value >> 1)

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das shiften ist am schnellsten. Man könnte aber auch durch 2 teilen.

Autor: Steven (Gast)
Datum:

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

Autor: lightninglord (Gast)
Datum:

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

Autor: spess53 (Gast)
Datum:

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

Autor: Matthias Larisch (matze88)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich wäre für lsr statt shr...

Autor: Steven (Gast)
Datum:

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

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HI

>ich wäre für lsr statt shr...

Stimmt, war gedanklich in der falschen Programmiersprache.

MfG Spess

Autor: Steven (Gast)
Datum:

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