Diskussion:AVR-Tutorial: ADC

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

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!