Hallo,
ich möchte den ADC0 meines Mega88 abfragen.
Leider bekomme ich nur Nullen zurück.
Daraus schließe ich, dass der ADC erst gar nicht losrennt.
Auf meinem Mega 8 habe ich dasgleiche Programm und es funktioniert.
(Abgesehen davon, dass sich ja beim Mega88 die I/O-Register in ihrer
Position leicht verändert haben und deshalb anders ausgelesen bzw.
beschrieben werden müssen.
1
ADC0_Init:
2
ldi temp, (1<<REFS0) ; Kanal 0, interne Referenzspannung 5V
Hallo,
einfach die Fehler beheben, die der Assembler bemeckert????
z.B.
error: Operand 2 out of range: 0x79
bei sbi ADCSRA, ADSC ; den ADC starten
entweder die Register beim Mega88 sind mit I/O-Zugriffen erreichbar oder
eben nicht, wie Du ja selbst schon erkannt hast...
Gruß aus Berlin
Michael
Danke für den Hinweis, das hätte ich eigentlich sehen müssen. Ich habe
das korrigiert.
Trotzdem brauche ich aber nochmal Hilfe.
Mir ist beim Debuggen mit dem Dragon aufgefallen, dass das ADCSRA-Byte
mit 0xC7 beschrieben werden müsste, zumindest befindet sich dieser Wert
in meinem Tempregister. Nach dem Befehl:
sts ADCSRA, temp ; den ADC starten
steht aber 0x97 drin, sprich es wurde nicht das ADSC-bit gesetzt,
sondern das ADIF-Bit. So kann das natürlich nicht gehen.
Irgendwie scheine ich in letzter Zeit so ziemlich jeden Fehler
mitzunehmen :-(
das müsste schon so passen, wenn du beim debuggen einen schritt weiter
gehst, ist der adc schon lange fertig. dabei wird das ADIF Flag gesetzt
und das ADSC gelöscht. Ich würde nicht darauf warten, ob das ADSC
gelöscht wird sondern das ADIF Flag pollen. Ist meiner Meinung nach
schöner.