undefined reference to.

Gast #2552531
Lesenswert?

Hallo zusammen,

bin neu bei AVr-Studio 5 und habe ein Problem. Ich möchte eine AD 
Wandlung durchführen.

Hier der Quelltext:

#define F_CPU 1000000


#include <avr/io.h>


void ADC_Init();



int main (void) {

  uint16_t adcval;



   DDRB  = (0 << DDB0);
   DDRD =  (1 << DDB5)| (1 << DDB6) ;

   while(1) {
     adcval = ADC_Read(0);  // Kanal 0
    if (adcval> 500)
    {
      PORTD = (1<<PB5)|(0<<PB6);
    }
    else
    {
      PORTD = (0<<PB5)|(1<<PB6);
    }
   }


   return 0;

uint16_t ADC_Read (uint16_t channel)
{

  ADMUX = (ADMUX & ~(0x1F)) | (channel & 0x1F); //Kanal auswählen
  ADCSRA |= (1<<ADSC);            // Wandlung ausführen
  while (ADCSRA & (1<<ADSC) ) {}  // Auf Ergebnis warten
  return ADCW;                    // Wert auslesen und zurückgeben
}



Fehlermeldung lautet "undefined reference to 'ADC_Read'

Den Text hab ich aus dem mikrocontroller ADC-Tutorial.

Vielen Dank schon mal :)
Gast #2552532
Lesenswert?

sry, nur die hälfte kopiert :-/


 void ADC_Init(void)
{

  uint16_t result;


  ADMUX = (1<<REFS1) | (1<<REFS0);     // Referenz einstellen, hier 
intern
  ADCSRA = (1<<ADPS1) | (1<<ADPS0);     // Frequenzvorteiler
  ADCSRA |= (1<<ADEN);                  // ADC aktivieren

 //ADC-Wandlung durchführen, zwecks "Einpendeln"

  ADCSRA |= (1<<ADSC);                  // eine ADC-Wandlung
  while (ADCSRA & (1<<ADSC) ) {}        // auf Abschluss der 
Konvertierung warten
  result = ADCW;            //Wandlung auslesen
}

 }
Gast #2552632
Lesenswert?

Peter schrieb:
> if (adcval> 500)
>     {
>       PORTD = (1<<PB5)|(0<<PB6);
>     }
>     else
>     {
>       PORTD = (0<<PB5)|(1<<PB6);
>     }

Bist du sicher, daß das immer das macht, was du vor hast? In diesem 
konkreten Fall schon; du könntest im else-Zweig auch einfach
PORTD = 0;
schreiben. Eine Null schieben macht meistens nicht das, was beabsichtigt 
ist. Spätestens, wenn noch andere Pins an PORTD gleichzeitig für andere 
Sachen benutzt werden, wirst du dich wundern.

http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Ausg.C3.A4nge
http://www.mikrocontroller.net/articles/Bitmanipulation

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