Forum: Mikrocontroller und Digitale Elektronik adc bei atmega32 gibt fehler


von benedikt (Gast)


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.



1
#include <avr/io.h>
2
3
4
int main(void)
5
{
6
  int value_color;
7
  DDRB = 0xff;
8
  
9
  ADCSRA |= (1 << ADEN);
10
  ADCSRA |= (1 << ADSC);
11
  ADCSRA |= (1 << ADFR);
12
  ADCSRA |= (1 << ADPS0);
13
  ADCSRA |= (1 << ADPS1);
14
  ADCSRA |= (1 << ADPS2);
15
16
  
17
18
  //AVCC als referenz nehmen
19
  ADMUX |= (1 << REFS0);
20
21
  //kanal 1 auswählen
22
  ADMUX |= (1 << MUX0);
23
24
  while(1)
25
  {
26
27
  //werte aus dem ADC register in eine variable schieben
28
  value_color = ADCL;
29
  value_color += (ADCH << 8);
30
31
  //werte am port b ausgeben
32
  PORTB = value_color;
33
34
35
  
36
  }
37
}

von STK500-Besitzer (Gast)


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.

von spess53 (Gast)


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

von benedikt (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.