AD Wandlung mit AD MEGA 32

Gast #182023
Lesenswert?
• ▲
▼
Hi

ich habe folgendes Problem und zwar möchte ich mit einem ATMEGA16 einen
Analog wert einlesen. Ich habe aber keine Ahnung, wie man den AD Wandler
benutzt. Ich habe mir schon das Beispiel im GCC Tutorial angesehen, kann
damit aber nix anfangen. Kann mir jemand von euch vielleeicht ein paar
Tipps geben.

vielen Dank für Eure Hilfe
Gast #182027
Lesenswert?
• ▲
▼
Solange du nicht definierst, was "funktioniert nicht" heißt, wird dir
wohl nicht geholfen werden. Der Code ist 100% i.O., also kann der
Fehler nur bei dir liegen :-)

Compilerfehlermeldung?
unerwartetes Ergebnis?
Gast #182028
Lesenswert?
• ▲
▼
ADCSRA = (1 << ADEN)|(1 << ADSC)|(1 << ADPS2)
   |(1 << ADPS1)|(1 << ADPS0);                [S.214]
while (inp(ADCSRA) & BV(ADSC));              // Warten bis ADC bereit
ADMUX = 0x00;

.
.
.
.

ADMUX = 0x00; // für PA0 oder welchen auch immer
ADCSRA |= 0x40;  //start ADC
while (!(ADCSRA & (1<<ADIF)));    // Warten bis ADC bereit
CLRBIT(ADCSRA,ADIF);   // ADC Interrupt-Flag löschen
ERGEBNIS = ADC;

Das Funktioniert einwandfrei mit meinem Mega32....
Ansonsten RTFM!
Gast #182029
Lesenswert?
• ▲
▼
Großer Fehler: Wenn du schon Code postest, dann entweder komplett oder
nicht. Einem Anfänger fehlen da sofort Makros (inp, CLRBIT, ...).
Ausser Fehlermeldungen hat er also keinen Erkenntnisgewinn.

Abgesehen davon, warum pollst du das Interrupt-Flag?

Der Code im Tutorial ist doch wesentlich besser.
Gast #182032
Lesenswert?
• ▲
▼
Wieso funktioniert folgendes nicht ?:

#include <avr/io.h>

int main(void)
{
  unsigned char i;
  R0=0xff;

  /* Endlosschleife */
  for (;;);

  return 0;
}

Compiler sagt folgendes:

test.c:12:2: warning: no newline at end of file
make.exe: *** [test.o] Error 1

> Process Exit Code: 2

ich dachte der ATMEGA 32 hätte 32 Arbeitsregister mit denen ich machen
kann was ich möchte.

was habe ich hier falsch gemacht ?
Gast #182033
Lesenswert?
• ▲
▼
Na herrlich :-)

Du kennst den Unterschied zwischen Assembler und C?

Wenn du in C programmierst, hast du auf die inneren Register keinen
Zugriff, die verwaltet der Compiler. Du kannst dir beliebig Variablen
deklarieren und diese manipulieren. Lediglich die IO-Register (des SPI,
ADC, TWI, ...) stehen dir zu Verfügung.

Also: int i = 0xFF;

Wie du die Warnung mit "no newline at end of file" beseitigst weißt
du hoffentlich ;-)
Gast #182037
Lesenswert?
• ▲
▼
Hallo,

>>Sorry aber ich stehe ganz am Anfang was C und µC programmierung
>>betrifft. Jeder hat mal klein angefangen


Das jeder mal klein angefangen hat stimmt , aber dann sollte man erst
die Tutorial's bearbeiten und sich danaach langsam an ein Projekt
wagen.

Das Tutorial im Wiki zum GCC ist sehr zu empfehlen.

Mfg
Dirk

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren