X

[atmega16][c] HIDKeys, czyli problem z klawiaturą USB na AVR

patyk12343 10 Mar 2010 19:20
  • #1 10 Mar 2010 19:20
    patyk12343
    Level 7  
    Helpful post? (0)
    Witam!

    Po paru problemach przy odpaleniu atmegi16 postanowiłem zabrać się do stworzenia klawiatury USB na podstawie projektu ze strony http://www.obdev.at/products/vusb/hidkeys.html . Rozpakowałem, poczytałem trochę tych plików, wszystkie o rozszerzeniu .h wrzuciłem do /winavr/avr/include, podmieniłem Makefile na ten z moimi parametrami, ale podczas kompilacji pliku main.c wyskakuje mi błąd

    Code:
    > "make.exe" all
    

    -------- begin --------
    avr-gcc (WinAVR 20090313) 4.3.2
    Copyright (C) 2008 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


    Linking: main.elf
    avr-gcc -mmcu=atmega16 -I. -gdwarf-2 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=main.o  -std=gnu99 -MMD -MP -MF .dep/main.elf.d main.o --output main.elf -Wl,-Map=main.map,--cref     -lm
    main.o: In function `usbFunctionSetup':
    D:\avr\Nowy folder (9) - Kopia - Kopia/main.c:233: undefined reference to `usbMsgPtr'
    D:\avr\Nowy folder (9) - Kopia - Kopia/main.c:233: undefined reference to `usbMsgPtr'
    D:\avr\Nowy folder (9) - Kopia - Kopia/main.c:240: undefined reference to `usbMsgPtr'
    D:\avr\Nowy folder (9) - Kopia - Kopia/main.c:240: undefined reference to `usbMsgPtr'
    main.o: In function `main':
    D:\avr\Nowy folder (9) - Kopia - Kopia/main.c:261: undefined reference to `usbInit'
    D:\avr\Nowy folder (9) - Kopia - Kopia/main.c:266: undefined reference to `usbPoll'
    D:\avr\Nowy folder (9) - Kopia - Kopia/main.c:283: undefined reference to `usbTxLen1'
    D:\avr\Nowy folder (9) - Kopia - Kopia/main.c:288: undefined reference to `usbSetInterrupt'
    make.exe: *** [main.elf] Error 1

    > Process Exit Code: 2
    > Time Taken: 00:01


    No i teraz pytania:

    Czy wystarczy skompilować plik main.c?
    Czy może trzeba jeszcze zrobić coś z plikami z usbdrv?
    Co zrobić, żeby to zadziałało?

    Z góry dziękuję za wszystkie odpowiedzi.
  • Helpful post
    #2 10 Mar 2010 19:32
    _Robak_
    Level 33  
    Helpful post? (0)
    Pliki .h nie dajesz do katalogu include;) Wrzucasz do katalogu z projektem i dołączasz w ten sposób
    Code:

    #include "costam.h"

    Natomiast pliki .C przeciągasz do plików projektu w avrstudio.
    Widać że w mainie używasz funkcji których nie widzi kompilator po prostu.
  • #3 10 Mar 2010 19:51
    patyk12343
    Level 7  
    Topic author Helpful post? (0)
    Dodałem wszystkie pliki .c do jednego projektu, lecz wyświetla mi się


    Code:
    > "make.exe" all
    
    make.exe: *** No rule to make target `all'.  Stop.

    > Process Exit Code: 2
    > Time Taken: 00:00


    Szczerze powiedziawszy, to moje dotychczasowe projekty nie wykraczały poza jeden plik .c, stąd to zdezorientowanie...
  • Helpful post
    #4 10 Mar 2010 19:54
    _Robak_
    Level 33  
    Helpful post? (0)
    Najpierw zrób sobie prosty projekt, do niego dołącz jedną funkcję w innym pliku i poćwicz;) Ściągnij sobie z neta jakieś projekty, zobacz jak to wygląda. Zasada jest taka, includujesz tylko pliki h.
  • #5 11 Mar 2010 16:01
    patyk12343
    Level 7  
    Topic author Helpful post? (0)
    Tak więc udało mi się skompilować te wszystkie pliki. Plik Makefile edytowałem i zamiast
    Code:
    SERIAL = `echo /dev/tty.KeySerial*`
    
    UISP = uisp -dprog=avr910 -dserial=$(SERIAL) -dpart=auto

    wstawiłem
    Code:
    AVRDUDE_PROGRAMMER = usbasp
    
    AVRDUDE_PORT = usb


    i
    Code:
    COMPILE = avr-gcc -Wall -Os -Iusbdrv -I. -mmcu=atmega8 #-DDEBUG_LEVEL=1

    zamieniłem na

    Code:
    COMPILE = avr-gcc -Wall -Os -Iusbdrv -I. -mmcu=atmega16 #-DDEBUG_LEVEL=1


    Program wgrał się bez błędów. Po podłączeniu system wykrywa nowe urządzenie, lecz jest ono dla niego nieznane... Czy ktoś spotkał się z podobnym problemem i wie jak go rozwiązać?
  Search 4 million + Products
Browse Products