-         
+ Antworten
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15

Thema: ADC undeclared

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.06.2004
    Alter
    28
    Beiträge
    234

    ADC undeclared

    Hallo Leute,

    mein Compiler (AVR-GCC) mendet in ADC einen undeclared indentifer,
    ich habe nur <avr/io.h> eingebunden, das muss doch reichen oder?

    Code:
    return ADC;

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    22.11.2003
    Beiträge
    991
    Probiers doch einfach mal mit ADCH und ADCL...

    ADC ist nicht als 16-Bit Register definiert ( siehe zum Beispiel die iom16.h ), weil es bei "falscher" Einstellung das auch nicht ist ( ADLAR ist gesetzt ). Von daher ist ist das mit der Fehlermeldung schon richtig

    MfG Kjion

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.06.2004
    Alter
    28
    Beiträge
    234
    danke, aber jetzt kommt folgender Fehler:

    c:\programme\winavr\bin\..\lib\gcc-lib\avr\3.3.2\..\..\..\..\avr\lib\avr5\crtm16.o(.i nit9+0x0): undefined reference to `main'

    Obwohl ich c kann versteh ich die Meldung nicht wirklich

  4. #4
    Gast
    Man kann auf ADC als 16 Bit Register zugreifen. Dein Fehler wird irgendwo anders liegen. Poste einfach Quellcode und Makefile und dir wird geholfen. Auf raten habe ich keine Lust.

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.06.2004
    Alter
    28
    Beiträge
    234
    main.c :
    Code:
    #define CPU_Frequency 4000000       // 4Mhz-Quarz
    #define UART_BAUD_RATE 9600 // 9600 Baud
    
    
    #include <avr/io.h>
    #include <avr/signal.h>
    #include <avr/interrupt.h> 
    
    #include <stdlib.h>
    
    #include "funktionen.c"
    #include "bitdef.h"
    typedef unsigned char  BYTE;
    typedef unsigned short WORD;
    
    //************************************************************************************************************************
    
    void warten(int t) //ermöglicht Pausen
    {
    	 int h;
    	 for (;t>0;t--)
    	 {
    		  for (h=70;h>0;h--) {}
    	 }
    	 return;
    }
    
    void uart_init()
    {
    	outp( (CPU_Frequency / (UART_BAUD_RATE*16L))-1 , UBRRL );
    	outp( 0, UBRRH );
    	outp( (1 << URSEL) | (3 << UCSZ0), UCSRC);
    	outp( (1 << RXCIE) | (1 << TXEN) | (1 << RXEN), UCSRB);
    	
    	sei();
    } 
    
    
    void uart_nachricht(char* senden) {
    
    for (; *senden != '\0'; senden++) {
        loop_until_bit_is_set(UCSRA, UDRE);
    	UDR=*senden;
    	} 
    	loop_until_bit_is_set(UCSRA, UDRE);
    	UDR = 13;
    }
    
    SIGNAL (SIG_UART_RECV)  {
    char ch;
     ch = inp (UDR);              // Datenregister auslesen
        /*    if (inp (USR) & (1 << OR)) { // OverRun Bit gesetzt ?
               // Es ist was verloren gegangen / zu lange aufs Auslesen gewartet...
    		   uart_nachricht("UART: Overrun-Bit gesetzt! Nicht schnell genug ausgelesen!");
            }
    	*/
    char buffer[1]; buffer[0] = '\0'; buffer[1] = '\0';
    buffer[0] = ch;
    
    uart_nachricht("Daten empfangen! Char: ");
    uart_nachricht(buffer);
    }
    
    
    
    
    int main()
    {
    DDRA = B00000111; // PortA Pin 0,1,2 als Ausgang, Rest als Eingang
    DDRC = 0xff; // PortC als Ausgang
    
    	int x = 0; // ADC-Wert
    	ADCSRA =  _BV(ADEN) | _BV(ADPS2);
    	//Aktivierung des ADC, festlegen eines Prescalers von 16 --> 4Mhz/32=125kHz
    	//Starten einer einzelnen Konvertierung
    	//Start einer Wandlung
    	
    
    
    uart_init();
    uart_nachricht("Initalisierung...");
    uart_nachricht("Übertragungsrate: 9600 Baud");
    
    
    for (;;) { // bei 30 läuft der Motor stabil!
    PORTA = B00000001; // Rote-LED an
    // motor...
    PORTC = B00001010;
    warten(3000);
    PORTC = B00001001;
    warten(3000);
    PORTC = B00000101;
    warten(3000);
    PORTC = B00000110;
    warten(3000);
    }
    
    }

  6. #6
    Gast
    Wo ist dein makefile und was steht da drin?

    PS: outp (...) würde ich nicht mehr verwenden, wird mit der nächsten Version von avr-gcc nicht mehr funktionieren.

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.05.2004
    Ort
    Untersöchering(Bayern,Alpenvorland)
    Alter
    29
    Beiträge
    215
    Wenns noch nicht funktioniert probier mal ADCW. ADC in Zeile 55 von iom32.h und ADCW in Zeile 57 scheinen mir die gleichen "Adressen" zu haben.
    Gruß Muraad

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.06.2004
    Alter
    28
    Beiträge
    234
    ADC wird nicht gefunden und die anderen Register sind alle 0...

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.05.2004
    Ort
    Untersöchering(Bayern,Alpenvorland)
    Alter
    29
    Beiträge
    215
    Was soll das heissen, die Register sind alle 0..?
    Gruß Muraad

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.06.2004
    Alter
    28
    Beiträge
    234
    ADC, ADCH, ADCW sind alle 0 wenn ich sie abrufe

+ Antworten
Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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