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
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
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.