mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik adc bei atmega32 gibt fehler


Autor: benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

ich habe folgendes Programm geschrieben was die am ADC angelegte 
Spannung (ADC1) am Portb ausgeben soll (binär). Wenn ich es aber 
compilen will, kommen bei der   Zeile ADCSRA |= (1 << ADFR); folgende 
Fehler:

../test_obs_geht.c:11: error: 'ADFR' undeclared (first use in this 
function)
../test_obs_geht.c:11: error: (Each undeclared identifier is reported 
only once
../test_obs_geht.c:11: error: for each function it appears in.)

Ich verwende einen Atmega32 und schreibe die Programme mit AVR Studio 
und WinAVR.
In der AVR-GCC Anleitung auf dieser Seite ist genau beschrieben, dass 
das ADFR Bit gesetzt werden muss wenn man den Freerunning Modus 
aktivieren will.

Was ist in diesem Programm falsch, dass ich ständig diese Fehler 
bekomme?

Vielen Dank für Antworten.




#include <avr/io.h>


int main(void)
{
  int value_color;
  DDRB = 0xff;
  
  ADCSRA |= (1 << ADEN);
  ADCSRA |= (1 << ADSC);
  ADCSRA |= (1 << ADFR);
  ADCSRA |= (1 << ADPS0);
  ADCSRA |= (1 << ADPS1);
  ADCSRA |= (1 << ADPS2);

  

  //AVCC als referenz nehmen
  ADMUX |= (1 << REFS0);

  //kanal 1 auswählen
  ADMUX |= (1 << MUX0);

  while(1)
  {

  //werte aus dem ADC register in eine variable schieben
  value_color = ADCL;
  value_color += (ADCH << 8);

  //werte am port b ausgeben
  PORTB = value_color;


  
  }
}




Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>../test_obs_geht.c:11: error: 'ADFR' undeclared (first use in this
>function)

Sagt doch schon alles.
Dein "ADFR" kennt der Compiler nicht. Gibt es auch nicht.
Vielleicht meinst du "ADIF". Das brauchst du aber nur, wenn du den ADC 
mit seiner Interrupt-Routine bearbeitest.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>In der AVR-GCC Anleitung auf dieser Seite ist genau beschrieben, dass
>das ADFR Bit gesetzt werden muss wenn man den Freerunning Modus
>aktivieren will.

Mag schon sein. Aber nicht für den ATMega32. Dort läuft das anders. Der 
Autotrigger Mode wird über die ADTS-Bits im SFIOR-Register eingestellt.
Sieh dir das Datenblatt an.

MfG Spess

Autor: benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke...das der Freerunning Mode nicht mit dem Bit gesetzt wird wusste 
ich nicht...dann probier ich das ganze mal mit den ADTS bits.

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.