Anfängerproblem mit ADC

Gast #12813
Lesenswert?

Hallo Leute,

ich bin noch Anfänger. Deswegen wird meine Frage
wohl eine besonders dumme sein.
Also, ich verstehe einfach nicht, wie ich mit meinem
AVR eine mit 10 bit digitalisierte Analogspannung (ADC)
weiterverarbeiten kann wo doch der µC offensichtlich nur mit
8 bit arbeiten kann.
Ich möchte eigentlich nur eine Spannung messen und als
PWM-Signal wieder ausgeben.
Ich hoffe ihr könnt mir helfen.
Vielen Dank schon mal.

Stefan
Admin Persönliche Seite #12814
Lesenswert?

Hallo,

da ein Register nur 8 Bit breit ist wird der gemessene Wert einfach auf 
2 Register aufgeteilt. Zitat aus dem Datenblatt:
"As the ADC generates a 10-bit result, two data registers, ADCH and 
ADCL, must be read to get the result when the conversion is complete."
Die ersten 8 Bits stehen im Register ADCL, die restlichen 2 in ADCH.
Wenn du 10 Bit PWM verwendest, kannst du den Wert also direkt 
weiterverwenden indem du ADCH/ADCL nach OCR1H/OCR1L kopierst. Um den 
Messwert in 8 Bit umzuwandeln, müssen beide Register um 2 Bits nach 
rechts geschoben werden, so dass Bit 0 und Bit 1 aus ADCL wegfallen und 
Bit 0 und Bit 1 aus ADCH nach Bit 6 und Bit 7 in ADCL kopiert werden. 
Beispiel:

;10 Bit-Wert in Register 16 und 17 einlesen:
in r16, ADCL
in r17, ADCH
;ein Bit bei r17 nach rechts rausschieben und in Carry speichern:
ror r17
;ein Bit bei r16 nach rechts rausschieben und gleichzeitig links
;das Carry-Bit wieder reinschieben:
ror r16
;das Ganze nochmal:
ror r17
ror r16

Gruß
Andreas

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren