Forum: Mikrocontroller und Digitale Elektronik Anfängerproblem mit ADC


von Stefan (Gast)


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

von Andreas S. (andreas) (Admin) Benutzerseite


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

von Stefan (Gast)


Lesenswert?

Hallo,

vielen Dank für deine Hilfe.
Stefan

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
Noch kein Account? Hier anmelden.