www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Probleme mit ADC im mega32


Autor: kurt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute,
mein ADC macht nur eine Messung nach dem Reset, danach Aktualisiert
sich der wert nicht mehr, obwohl ADSC gelöscht wird!
FreeRun mit Interrupt funktioniert, ich möchte aber später im Pogramm
einzelne Messungen durchführen.

Code:

void init_ADC(void)
{
  ADMUX = (0<<MUX0);
  ADCSRA
=(1<<ADEN)|(1<<ADPS2)|(0<<ADPS1)|(1<<ADPS0)|(0<<ADATE)|(0<<ADIE);//ADC
einschalten, teiler wählen
}

void Analog(void)
{

  sbi(ADCSRA,ADSC);
  while(bit_is_set(ADCSRA,ADSC));

  lcd_puti3(ADCL);
  lcd_home();
}

void main(void)
{

  lcd_init();
  init_ADC();

  while(1)
  {
  Analog();
  delay(255);
  }
}

Autor: Uwe Nagel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auszug aus dem Datenblatt:
If the result is left adjusted and no more than 8-bit precision is
required, it is sufficient to
read ADCH. Otherwise, ADCL must be read first, then ADCH, to ensure
that the content
of the data registers belongs to the same conversion. Once ADCL is
read, ADC access
to data registers is blocked. This means that if ADCL has been read,
and a conversion
completes before ADCH is read, neither register is updated and the
result from the conversion
is lost. When ADCH is read, ADC access to the ADCH and ADCL Registers
is
re-enabled.

Das heist: lies auch ADCH, sonst ist der Zugriff blockiert.
Mit gnu-c sollte auch der Zugriff auf das 16-Bit Register ADC gehen.

Uwe

Autor: kurt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, stimmt, ab ich überlesen.
mfg

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.