mikrocontroller.net

Forum: Compiler & IDEs Frage zu io*.h / Bereich ADC


Autor: Lutz Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

zu den io*.h habe ich mal eine Frage: Die werden ja nicht direkt
eingebunden, sondern durch die <avr/io.h>. Bei einigen MCU´s wird das
Auslesen von ADCL und ADCH ja anscheinend über ein 16-bit-Register
gemacht, welches manchmal ADC und manchmal ADCW heißt. Soll was mit
Verwechslungsgefahren in Assembler (ADd with Carry) zu tun haben. Auch
gut. Die Frage ist die: In den io*.h steht z.B. #define
ADCW  _SFR_IO16(0x04). Mit Unterstrich nur für Compilerhersteller etc.
hab´ich auch schon rausgefunden, nur wo kann ich was zum rechten Teil
_SFR_IO16(0x04) rausfinden; was es bedeutet? Wo sind diese
"Geheimnisse" aufgeschlüsselt? Die avr-libc hat sich total
ausgeschwiegen. War nicht leicht, wenigstens die io*.h als Quelle zu
finden.

Danke und Gruß

Lutz

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm, wenn Du Dir die Doku zu den special function registers ansiehst,
solltest Du alles finden.

Ist in der Tat bißchen unglücklich, daß es noch Files gibt, in denen
ADC als word-Register benutzt wird.  Damit funktioniert halt aufgrund
des ,,dummen'' Präprozessors dann legaler Assemblercode wie

ADD R18,R24
ADC R19,R25

nicht mehr.  Für AT43U35x, ATCAN128 und ATmega169 gibt's leider nur
die ADC-Definition.  Bei ATmega128, ATmega32, ATmega64, ATmega8,
ATmega8535, ATmega{4,8,16}8, ATtiny13 und ATtiny26 gibt's zumindest
beide (so daß man sich für ADCW entscheiden kann), aber das löst
natürlich das oben beschriebene Problem nicht.

Wenn Du Lust hast, kannst Du das gern mal auf der avr-libc
Entwicklerliste weiterdiskutieren, den Knoten sollten wir in der Tat
auflösen, d. h. künftig nur noch ADCW, aber irgendwie brauchen wir
eine Übergangsstrategie.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.