Forum: Mikrocontroller und Digitale Elektronik ATMega88 adc Problem


von Bruno M. (brumay)


Angehängte Dateien:

Lesenswert?

Hallo,

seit Tagen versuche ich am Atmega88 einen ADC zum Laufen zu bringen. Der 
Schaltplan ist im Anhang, wobei PAD1+2 nicht belegt sind. Auch das 
Atmega8 im Plan stimmt nicht.
Als Code nutze ich den ASM-Code aus dem Tutorial, abgeändert auf den 
Atmega88. Außerdem nutze ich einen 1MHz Takt und daher einen Vorteiler 
von 16. Die Spannung am AREF kann ich messen und sie entspricht VCC.
Als Ergebnis bekomme ich nur Nullen.
Wahrscheinlich sehe ich mal wieder den Wald vor lauter Bäume nicht.

Dank im Voraus!

von S. Landolt (Gast)


Lesenswert?

1
    ldi    temp1, (1<<ADSC)
2
  sts     ADCSRA, temp1        ; den ADC starten
Mit abgeschaltetem ADC?

von spess53 (Gast)


Lesenswert?

Hi

>sample_adc:
>   ldi    temp1, (1<<ADSC)
>   sts     ADCSRA, temp1        ; den ADC starten

Damit löschst du alle vorherigen Einstellunge in ADCSRA bis auf ADSC.

MfG Spess

von Bruno M. (brumay)


Lesenswert?

super, danke

Ich habe das jetzt so gelöst.
  lds    temp1, ADCSRA
        ldi    temp2, (1<<ADSC)
  or    temp1, temp2
  sts     ADCSRA, temp1        ; den ADC starten
Geht es eleganter?

von Ingo Less (Gast)


Lesenswert?

Guck mal nach, ob der SBI-Befehl dort zugreifen kann...

von M. K. (sylaina)


Lesenswert?

In C wäre es sicher lesbarer...zumindest empfinde ich C lesbarer als 
ASM. Kommt aber wahrscheinlich auch auf den Programmierer an ;)

von S. Landolt (Gast)


Lesenswert?

> SBI-Befehl
Bei einem memory-mapped-Register?

von Stefan F. (Gast)


Lesenswert?

R3 finde ich fragwürdig. In die Leitungen der Stromversorgung gehören 
keine Widerstände, sondern entweder Spulen oder gar nichts.

von S. Landolt (Gast)


Lesenswert?

> Geht es eleganter?
Warum nicht einfach wiederholen
1
sample_adc:
2
  ldi  temp1, (1<<ADEN)|(1<<ADPS2)|(0<<ADPS1)|(0<<ADPS0)|(1<<ADSC)
3
  sts  ADCSRA, temp1        ; den ADC starten

von S. Landolt (Gast)


Lesenswert?

an Bruno M.:
Nur am Rande: unabhängig von der Frage der Eleganz, ist der Befehl ori 
bekannt?

von Bruno M. (brumay)


Lesenswert?

S. Landolt schrieb:
> an Bruno M.:
> Nur am Rande: unabhängig von der Frage der Eleganz, ist der Befehl /ori/
> bekannt?

Du meinst so:
    lds    temp1, ADCSRA
    ori    temp1, 0b01000000
  sts     ADCSRA, temp1        ; den ADC starten

sieht besser aus!

von Bruno M. (brumay)


Lesenswert?

oder noch besser so:

    lds    temp1, ADCSRA
    ori    temp1, (1<<ADSC)
  sts     ADCSRA, temp1        ; den ADC starten

von S. Landolt (Gast)


Lesenswert?

Also ich hätte es wie im Beitrag von 20:11 gelöst, aber wie M.K. so 
richtig bemerkte, vieles im Leben ist eine Frage der Einstellung bzw. 
des Geschmacks.
  In diesem Sinne: einen guten Abend!

von spess53 (Gast)


Lesenswert?

Hi

> Nur am Rande: unabhängig von der Frage der Eleganz, ist der Befehl /ori/
> bekannt?

Ist identisch mit dem sbr-Befehl.

MfG Spess

von S. Landolt (Gast)


Lesenswert?

> Ist identisch mit dem sbr-Befehl.
Auch wieder Geschmackssache - diesen habe ich mir von zwanzig Jahren 
abgewöhnt, da sein Argument genauso aufgebaut sein muss wie bei ori, 
ich aber an sbi dachte.

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.