-         

Ergebnis 1 bis 9 von 9

Thema: undefined refernce

  1. #1
    Erfahrener Benutzer Begeisterter Techniker Avatar von µautonom
    Registriert seit
    04.04.2007
    Ort
    Paderborn
    Beiträge
    222

    undefined refernce

    Anzeige

    Hallo, versuche hier ein kleines tesprogramm mit dem AVR Studio zu compilieren AVR GCC ist installiert.

    Code:
    #include <avr/io.h>
    #include <stdio.h>
    #include <stdlib.h>
    
    int main (void) {
    
    	DDRC = 0xff;
    	PORTC = 0x03;
    	while(1) {
    
    
    	}
    	
    	return 0;
    }
    Problem ist es kommt immer undefindet reference sbi oder outp..... hab aber nirgends im Code die Befehle verwendet!. Hab gehört das der neue GCC diese nicht ünterstützt.

    Build started 27.3.2008 at 12:31:31
    avr-gcc.exe -mmcu=atmega16 -Wall -gdwarf-2 -O0 -MD -MP -MT Test2.o -MF dep/Test2.o.d -c ../Test2.c
    avr-gcc.exe -mmcu=atmega16 Programm.o Test2.o -o Programm.elf
    Test2.o: In function `main':
    C:\Dokumente und Einstellungen\putkin\Eigene Dateien\default/../Test2.c:3: multiple definition of `main'
    Programm.o:C:\Dokumente und Einstellungen\putkin\Eigene Dateien\default/../Programm.c:6: first defined here
    Programm.o: In function `main':
    Programm.c: (.text+0x1: undefined reference to `outp'
    Programm.c: (.text+0x2a): undefined reference to `sbi'
    make: *** [Programm.elf] Error 1
    Build failed with 2 errors and 0 warnings...
    Was muss ich tun damit er eien Hex erstellt?

    Hoffe sowas würde nicht schon hundertmal gefragt , wenn tuts mir leid.

    Mfg

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    42
    Beiträge
    1.140
    sbi und outp werden schon recht lange nicht mehr vom GCC unterstützt.
    Du könntest Dir das ganze selber definieren:
    Code:
    #define sbi(ADDRESS,BIT) (ADDRESS |= (1<<(BIT)))
    #define outp(VALUE, ADDRESS) (ADDRESS = VALUE)
    Allerdings hast Du noch ein anderes Problem:
    C:\Dokumente und Einstellungen\putkin\Eigene Dateien\default/../Test2.c:3: multiple definition of `main'
    Scheinbar hast Du in Deinem Code 2 Funktionen, die "main" heißen.
    Irgendwie hast Du da wohl 2 Projekte zusammengewürfelt oder so.

    Gruß,
    askazo

  3. #3
    Erfahrener Benutzer Begeisterter Techniker Avatar von µautonom
    Registriert seit
    04.04.2007
    Ort
    Paderborn
    Beiträge
    222
    Hi, anscheinend sind wirklich zwei Projekte aneinander geraten. Jetzt funktionierts.

    Kannst du mir sagen wo ic hdei Hex-Datei finde? In dnem Projektordner finde ich nur die .c-Datei.

    rm -rf FH.o FH.elf dep/* FH.hex FH.eep
    Build succeeded with 0 Warnings...
    avr-gcc.exe -mmcu=atmega16 -Wall -gdwarf-2 -O0 -MD -MP -MT FH.o -MF dep/FH.o.d -c ../FH.c
    avr-gcc.exe -mmcu=atmega16 FH.o -o FH.elf
    avr-objcopy -O ihex -R .eeprom FH.elf FH.hex
    avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O ihex FH.elf FH.eep || exit 0



    Build started 27.3.2008 at 13:02:50

    AVR Memory Usage
    ----------------
    Device: atmega16

    Program: 174 bytes (1.1% Full)
    (.text + .data + .bootloader)

    Data: 0 bytes (0.0% Full)
    (.data + .bss + .noinit)


    Build succeeded with 0 Warnings...

    EDIT:/ Hab sie gefunden. Sind nur sbi outp un cbi betroffen oder gibt es noch weitere Befhele die AVR GCC nicht mehr unterstützt. Kann man das irgendwo nachlesen?

    Mfg

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    42
    Beiträge
    1.140
    Soweit ich weiß waren das nur sbi (Set Bit), cbi (Clear Bit), outp (Register beschreiben) und inp (Register auslesen).
    outp und inp solltest Du generell nicht mehr verwenden, das geht ja mitlerweile mit einfacher Zuweisung.
    sbi und cli definiere ich mir immer selber, da man das immer wieder braucht und den Code übersichtlicher macht.
    Definition für cbi:
    Code:
    #define cbi(ADDRESS,BIT) (ADDRESS &= ~(1<<(BIT)))
    Gruß,
    askazo

  5. #5
    Erfahrener Benutzer Begeisterter Techniker Avatar von µautonom
    Registriert seit
    04.04.2007
    Ort
    Paderborn
    Beiträge
    222
    Hi hab da noch ne Frage, anscheinend ist mein Mikrocontroller kaputt.

    Wenn man ein Portpin setzt, müssten ungefähr 5V geschaltet werden?
    An den anderen Pins vom selber Port liegen 0,45V an...

    Da müsste doch eigentlich nix anliegen oder?

    Mfg µautonom

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    Kommt auf dem Strom an, den der Pin ziehen muss. Bei 5V VCC und 20mA Strom dürfen es bis zu 0,7V sein.

  7. #7
    Erfahrener Benutzer Begeisterter Techniker Avatar von µautonom
    Registriert seit
    04.04.2007
    Ort
    Paderborn
    Beiträge
    222
    Hi, hm es dürfte aber doch keine Spannung am Ausgang anliegen, wenn der Pin nicht gesetzt wurde, sonst hätte man ja unbestimmte Zustände oder sprichst du vom gesetzten Pin?

    Die Leds die ich am PORTC drangehängen, haben alle einen 1k Vorwiderstand zusätzlich sidn alle an einem 74HCT245 mit 3,3k verbunden der den Port in Ruhelage auf low zieht.

    Mfg

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.11.2005
    Alter
    42
    Beiträge
    1.140
    Nein, uwegw hat schon Recht, laut Datenblatt können an einem nicht gesetzten Pin bis zu 0,7V anliegen (schau mal unter Electrical Characteristics -> DC Characteristics -> VOL)
    Genauso können bei einem gesetzten Ausgang auch nur 4,2V statt 5,0V rauskommen.
    Einen unbestimmten Zustand hat man dadurch nicht. Bei sämtlichen Logikfamilien gibt es einen maximalen bzw. minimalen Spannungswert, bei dem ein Signal als Low bzw. High angesehen wird.

    Gruß,
    askazo

  9. #9
    Erfahrener Benutzer Begeisterter Techniker Avatar von µautonom
    Registriert seit
    04.04.2007
    Ort
    Paderborn
    Beiträge
    222
    Ah dankeschön, wieder was dazu gelernt

    Mfg

Berechtigungen

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