Diskussion:AVR-Tutorial: ADC
Liebe Freunde,
diese Seite gibt einen guten Einblick in Behandlung des ADC. Leider ist es nicht möglich, den Beispielcode zu assemblieren. Es gibt mehrere Zeilen, auf die die Situation zutrifft hier darum nur ein Beispiel:
out ADMUX, temp1
wobei in der Definitionsdatei steht:
.equ ADMUX = $7C
In der AVR-ASM-Reference steht aber:
OUT A,Rr 0 ≤ A ≤ 63, 0 ≤ r ≤ 31
Und gavrasm meldet dementsprechend:
Port value (124) out of range (0..63)!
Wie kann man dennoch den Quelltest assemblieren? Entsprechende Probleme treten auch auf bei:
out DIDR0, a out ADCSRB, a out ADCSRA, AdcConfig out ADMUX, a sbi ADCSRA, ADSC in a, ADCSRA in a, ADCH sbi ADCSRA, ADIF in a, ADMUX sbi ADCSRA, ADSC
Also bei out, in, sbi (und entsprechenden). Für Hilfe wäre ich dankbar.
Viele Grüsse, Manfred Morgner. http://github.com/morgner/MObject
Das ganze AVR-Tutorial ist auf den Atmega8 ausgelegt. Bei diesem gilt ADMUX 0x07 (0x27) und der OUT Befehl kann verwendet werden. Wenn die Adresse außerhalb des Adressbereichs von IN/OUT liegt, verwendet man die LDS/STS Kombination. Stefan 10:42, 13. Dez. 2011 (UTC)
An eine solche Möglichkeit hatte ich nicht gedacht aber vielleicht passt mein Projekt ja auch in einen Atmega8! Ich verwende derzeit Atmega328 und 168. Für diese wird der Code dann recht teuer, denn ich glaube, dass es keine Entsprechung für SBI und Verwandtschaft gibt, werde aber nochmals recherchieren. Vielen Dank!