mikrocontroller.net

Forum: Compiler & IDEs atmega8 adc


Autor: steffen abel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo miteinander,

ich versuche gerade verzweifelt den adc am atmega8 anzusprechen, 
allerdings scheitert es schon daran, dass der compiler die ganzen 
register nicht kennt.

#include <inttypes.h>
#include <avr/io.h>
#include <string.h>
#include <stdlib.h>

int main(void) {
  outp((1<<ADEN) & (1<<ADFR) & 5, ADCSR);
  ADMUX = 0;
  ...

mehr ist es noch nicht, aber ich bekomme als fehlermeldungen:

error: ADCSR undeclared
error: ADFR undeclared
error: ADEN undeclared
error: ADMUX undeclared

woran kann das liegen? in allen tutorials die ich gefunden habe wird der 
adc so gestartet. als programmierumgebung verwende ich das avr studio 
von atmel und avr-gcc.

danke schonmal!
mfg
--steffen

Autor: steffen abel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, die frage hat sich jetzt doch erledigt, ich hatte vergessen an den 
anfang das

#define _AVR_ATmega8_

zu schreiben. jetzt gibt es keine probleme mehr mit dem compilieren. 
allerdings funktioniert jetzt die ausgabe an den port d mit

PORTD = 0xFF;

bzw.

outp(0xFF, PORTD);

seltsamerweise nicht mehr. weiß da jemand rat?

mfg
--steffen

Autor: Peter Fleury (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Deine Anweisung _AVR_ATMega8_ gehört nicht ins Source File !
Den AVR Typ muss man mit dem Compiler Flag -mmcu=ATMega8 mitgeben, siehe 
Beispiel \winavr\sample\Makefile.
Bitte neueste WinAVR Version verwenden, nur diese unterstützt ATMega8.

Autor: steffen abel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn ich im makefile den atmega8 einstelle, dann bekomme ich die meldung 
"mcu 'atmega8' supported for assembler only". die neueste winavr version 
habe ich (20030312).

wer hat ideen?
danke & viele grüße
--steffen

Autor: Peter Fleury (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kleinschreibung: -mmcu=atmega8 dann sollte es gehen.

Autor: Sascha Weitkunat (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was soll das denn bitte bedeuten?

> outp((1<<ADEN) & (1<<ADFR) & 5, ADCSR);

Ich gehe mal davon aus das (1 << ADEN) und (1 << ADFR) das 4er und 1er 
Bit bilden, du diese mit 5 (also ebenso 4er und 1er Bit) verknüpfst und 
hoffst da auch als Ergebnis 5 raus zu bekommen?

outp(5, ADCSR)

währe die eine Möglichkeit, das übliche ist aber eine Oder-Verknüpfung 
der geshifteten 1en.

outp((1 << ADEN) | (1 << ADFR), ADCSR);

Des weiteren scheinst du dich nicht zwischen outp() und einer direkten 
Zuweisung entscheiden zu können... da outp() als veraltet gilt benutz 
lieber die direkte Zuweisung:

ADCSR = (1 << ADEN) | (1 << ADFR);

Autor: steffen abel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also erstmal danke an alle, der code wird jetzt fehlerfrei compiliert. 
ich habe mich jetzt auch für die direkte zuweisung entschieden und alles 
so geschrieben.

allerdings habe ich jetzt ein neues, sehr komisches problem. siehe mein 
anderer thread.

mfg
--steffen

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.