AD Wandlung funktioniert nicht

Gast #182164
Hi Leute

Ich bin am verzweifeln ich bekomm irgendwie keine AD Wandlung mit dem
AT MEGA32 hin, ich möchte nur mit einem Multiplexer Kanal arbeiten
(PA0). An ADC0 liegen 5V an, ich habe eigentlich so gemacht, wie im gcc
Tutorial beschrieben. Ich weiß echt nich mehr weiter, bitte schaut euch
mal mein Code an.

#include <avr/io.h>
#include <avr/signal.h>

int main(void)
{
int x;

DDRC=0xff;  // Port C als Ausgang definieren
PORTC=0xff; // LED Reset

ADCSRA = 0b1|0|1|0|0|1|1|0;
//ADCSRA = (ADEN<<1) | (ADFR<<1) | (ADPS2<<1) | (ADPS1<<1); // AD
Konverter aktivieren

ADMUX = (ADLAR<<1); // ADLAR in ADMUX setzen für 8-Bit Abtastung

ADCSRA = (ADSC<<1); // wandlung starten

if(bit_is_set(ADCSRA,2))
{
  if(bit_is_set(ADCH,15) || bit_is_set(ADCH,14) || bit_is_set(ADCH,13)
|| bit_is_set(ADCH,12) || bit_is_set(ADCH,11) || bit_is_set(ADCH,10) ||
bit_is_set(ADCH,9) || bit_is_set(ADCH,8))
  {
    cbi(PORTC,0);
  }
  else
  {
    cbi(PORTC,7);
  }
}


  return 0;
}
Gast
Du verwendest ADC 0 und externe Referenzspannung.
AVCC ist versorgt? Referenzspannung vorhanden?

if(bit_is_set(ADCSRA,2)) Was fragst du hier ab?
Warum verwendest du nicht den Interrupt?
Gast
>ADCSRA = 0b1|0|1|0|0|1|1|0;

Das wirst Du so nirgends finden!

>ADMUX = (ADLAR<<1);

s.o.

>ich habe eigentlich so gemacht,

Tja, wenn das Wörtchen "eigentlich" nicht wäre...
Ich würde es mal so (wie es übrigens auch im Tutorial gemacht wird)
probieren:

ADCSRA = (1 << ADEN) | (1 << ADFR) | (1 << ADPS2) | (1 <<ADPS1);
ADMUX = (1 << ADLAR);
[..]

...usw, usf.
Gast
klar das habe ich auch versucht bloß wenn ich das so schreibe wie Du
dann findet der Compiler ADFR nicht.
Kann es sein das ich da noch eine Header Datei einbinden muss ?
Gast
Ja das ist so

Ich habe gerade noch mal ins Datenblatt vom AT MEGA32 geschaut das Bit
heißt ADATE und nicht ADFR.
Kennst Du Dich mim AT Mega32 aus ?
Gast
Wenn es kein ADFR gibt, heißt das übrigens, dass der AD-Wandler im
jeweiligen AVR keinen free-running mode unterstützt.  Du wirst
den Code also notgedrungen etwas umstellen müssen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.