Forum: Mikrocontroller und Digitale Elektronik [ASM] ATmega88 - ADC Problem


von Stephan W. (stipo)


Lesenswert?

Nabend zusammen,

ich komme gerade nicht weiter beim ATmega88.
Folgender Code will nicht funktionieren:
1
wait_adc:
2
     lds r16, ADCSRA
3
     sbic r16, ADSC
4
     rjmp wait_adc
Bei dem Befehl "sbic" sagt der Compiler "Invalid number".
Laut meinem verständnis (was sicher noch viele lücken hat) müsste der 
Befehl aber gehen, da ich ja mit lds das Statusregister in das r16 
Arbeitsregister lade. Laut dem Tutorial 
http://www.mikrocontroller.net/articles/Bitmanipulation#AVR_Assembler_2 
soll der Befehl auf alle Arbeitsregister anwendbar sein.

[zitat]
Der AVR hat spezielle Befehle um direkt einzelne Bits in den 
CPU-Registern r0..r31 sowie den IO-Registern 0..0x1F zu prüfen.
[/zitat]

Was für einen gedanken Fehler habe ich da?
Ich muss doch den µC solange warten lassen, bis der ADC fertig gesampled 
hat und das Bit ADSC gelöscht ist.

Grüße
Stephan

von Der Weise (Gast)


Lesenswert?

SBIC bezieht sich auf I/O Register. Was du haben willst ist SBRC, das 
ist für normale Arbeitsregister. Oder du schreibst in kürzer:
sbic ADCSRA, ADSC

von Stephan W. (stipo)


Lesenswert?

Der Weise schrieb:
> SBIC bezieht sich auf I/O Register. Was du haben willst ist SBRC, das
> ist für normale Arbeitsregister. Oder du schreibst in kürzer:
> sbic ADCSRA, ADSC

Mit SBRC funktioniert das, danke.

Nur zur Info. Beim ATmega88 wird das mit sbic ADCSRA, ADSC nicht 
funktionieren, da ADCSRA (0x7A) außerhalb seiner reichweite ist :)

von Der Weise (Gast)


Lesenswert?

Stephan W. schrieb:
> Nur zur Info. Beim ATmega88 wird das mit sbic ADCSRA, ADSC nicht
> funktionieren, da ADCSRA (0x7A) außerhalb seiner reichweite ist :)
Ach ja, Mist, hab ich übersehen...

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.