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!
1 | ldi temp1, (1<<ADSC) |
2 | sts ADCSRA, temp1 ; den ADC starten |
Mit abgeschaltetem ADC?
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
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?
In C wäre es sicher lesbarer...zumindest empfinde ich C lesbarer als ASM. Kommt aber wahrscheinlich auch auf den Programmierer an ;)
R3 finde ich fragwürdig. In die Leitungen der Stromversorgung gehören keine Widerstände, sondern entweder Spulen oder gar nichts.
> 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 |
an Bruno M.: Nur am Rande: unabhängig von der Frage der Eleganz, ist der Befehl ori bekannt?
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!
oder noch besser so: lds temp1, ADCSRA ori temp1, (1<<ADSC) sts ADCSRA, temp1 ; den ADC starten
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!
Hi > Nur am Rande: unabhängig von der Frage der Eleganz, ist der Befehl /ori/ > bekannt? Ist identisch mit dem sbr-Befehl. MfG Spess
> 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.