- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 6 von 6

Thema: AVR Studio A/D befehle bug

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    24.04.2007
    Alter
    32
    Beiträge
    78

    AVR Studio A/D befehle bug

    Anzeige

    Praxistest und DIY Projekte
    Hallo,

    ich benutze das AVR Studio und den GCC compiler. funktioniert auch alles eigentlich ganz gut. normales kleines programm geschrieben mit einer while schleife drin, compiliert und dann per AVR Studio auf den µC übertragen. läuft.

    dann habe ich mich daran gemacht, mal den A/D wandler zu aktivieren.
    erstmal die bits richtig gesetzt und dann versucht zu compilieren. Da bricht er aber mit etlichen Fehlermeldungen ab. Z.B: ADEN undeclared usw.


    hier der code:
    Code:
    #define F_CPU 16000000
    #include <avr/io.h>
    #include <avr/interrupt.h>
    #include <util/delay.h>
    #include <setjmp.h>
    
    //volatile
    
    void adwandler();
    uint16_t calcADC();
    
    void main()
    {
    	DDRA = 0x00;
    	DDRB = 0x1F;
    	DDRC = 0x00;
    	DDRD = 0x7F;
    
    	PORTB = 0x1F;
    	PORTD = 0x7F;
    
    	while(1)
    	{
    		/*PORTD = (1<<0x7F);
    		_delay_ms(1000);
    		PORTD = (1<<0x6F);
    		_delay_ms(1000);*/
    		return;
    		}
    
    
    }
    
    //define AD bits	
    void adwandler()
    {
    	
    	ADMUX = (1<<AREFS0);
    
    	ADCSRA = (1<<ADEN) | (1<<ADCE) | (1<<ADFR) | (1<<ADSC) | (1<<ADPS2) | (1<<ADPS0);
    	
    
    return(1);
    }
    
    //rechnung
    uint16_t calcADC()
    {
    	uint16_t i;
    	uint8_t erg;
    
    		while(1)
    		{
    		i = ADCW;
    		erg = i/4;
    		return(0);
    		}
    }

    hier die fehlermeldungen des compilers:
    Code:
    Build started 21.11.2009 at 12:42:09
    avr-gcc -I"G:\Program Files\WinAvr\avr\include"  -mmcu=atmega32 -Wall -gdwarf-2 -std=gnu99     -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT Bot.o -MF dep/Bot.o.d  -c  ../Bot.c
    ../Bot.c:12: warning: return type of 'main' is not 'int'
    ../Bot.c: In function 'adwandler':
    ../Bot.c:38: error: 'AREFS0' undeclared (first use in this function)
    ../Bot.c:38: error: (Each undeclared identifier is reported only once
    ../Bot.c:38: error: for each function it appears in.)
    ../Bot.c:40: error: 'ADCE' undeclared (first use in this function)
    ../Bot.c:40: error: 'ADFR' undeclared (first use in this function)
    ../Bot.c:43: warning: 'return' with a value, in function returning void
    make: *** [Bot.o] Error 1
    Build failed with 5 errors and 2 warnings...
    ich weiß wirklich nicht, was daran falsch sein soll.

    Bitte helft mir mal und ihr dürft mich auch schlagen wenns ein richtig dummer fehler war!!


    greetz horsty

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    36
    Beiträge
    5.059
    1.) Ändere "void main()" in "int main(void)" ist zwar nur eine Warnung, es ist aber besser
    2.) Laut diesen Fehlern ../Bot.c:38: error: 'AREFS0' undeclared (first use in this function), ../Bot.c:40: error: 'ADCE' undeclared (first use in this function) und ../Bot.c:40: error: 'ADFR' undeclared (first use in this function) sind AREFS0, ADCE, ADFR nicht definiert. Entweder hast du es falsch geschrieben (schau im DB nach) oder die h-Datei ist nicht bzw falsch eingebunden.

    MfG Hannes

  3. #3
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    AREFS0, ADFR, ADCE, allesamt Schreibfehler.
    MfG
    Stefan

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    24.04.2007
    Alter
    32
    Beiträge
    78
    schonmal vielen Dank an euch!

    aber vielleicht schreibt sternst dann bitte auch wie das richtig geht?!?!

    Sorry ich bin anfänger in sachen programmierung und besonders im programmieren von µC's. Deswegen brauch ich das ein oder andere mal hilfe und ich bitte euch dann nicht nur aufs Datenblatt zu verweisen, was dann zwar der einfacherere weg für euch wäre, aber dadurch bringt mir das nicht viel!!

    greetz horsty

  5. #5
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    Zitat Zitat von horsty
    Deswegen brauch ich das ein oder andere mal hilfe und ich bitte euch dann nicht nur aufs Datenblatt zu verweisen
    Aber genau das tue ich jetzt. Nimm dir das Datenblatt, und schau selber nach, wie die Bits korrekt heißen. Das ist doch nun wohl wirklich nicht zu viel verlangt, im Datenblatt z.B. nach dem Register ADMUX zu suchen, und nachzusehen, wie die Bits darin heißen. Ich bin immer gerne bereit, dir irgendwelche Dinge zu erklären, aber solch simple "Fleißarbeit" werde ich dir ganz sicher nicht abnehmen. Auch weil ...

    aber dadurch bringt mir das nicht viel!!
    Im Gegenteil. Das ist genau das, was dir am meisten bringt. Je öfter du selber in das Datenblatt schaust, um was nachzuschlagen, desto vertrauter wirst du damit, und desto eher findest du selber dort die Sachen, die du brauchst.
    MfG
    Stefan

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    24.04.2007
    Alter
    32
    Beiträge
    78
    oh stimmt.... vielleicht sollte ich das mit dem "nicht ins datenblatt verweisen", mal zurücknehmen, weil ich nur ins avr-gcc-titorial gesehen hatte und weil die da auch nen atmega32 verwenden, dachti ich das war dort stand übernehmen kann....

    ein blick ins datasheet und ich urde grade eines besseren belehrt.

    Danke!!

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test