| Oponeo - Prosta Droga do Nowych Opon |
| Author |
Message
|
patyk12343 Poziom 4

Joined: 27 Feb 2010 Posts: 9
|
#1
10 Mar 2010 20:20 [atmega16][c] HIDKeys, czyli problem z klawiaturą USB na AVR |
|
|
|
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.
|
|
| Back to top |
|
 |
Google

|
#
10 Mar 2010 20:20 |
|
|
|
|
|
| Back to top |
|
 |
_Robak_ Poziom 22

Joined: 16 Apr 2006 Posts: 2239 Location: Bytom
|
#2
10 Mar 2010 20:32 Re: [atmega16][c] HIDKeys, czyli problem z klawiaturą USB na |
|
|
|
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.
|
|
| Back to top |
|
 |
Google

|
#
10 Mar 2010 20:32 |
|
|
|
|
|
| Back to top |
|
 |
patyk12343 Poziom 4

Joined: 27 Feb 2010 Posts: 9
|
#3
10 Mar 2010 20:51 Re: [atmega16][c] HIDKeys, czyli problem z klawiaturą USB na |
|
|
|
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...
|
|
| Back to top |
|
 |
Google

|
#
10 Mar 2010 20:51 |
|
|
|
|
|
| Back to top |
|
 |
_Robak_ Poziom 22

Joined: 16 Apr 2006 Posts: 2239 Location: Bytom
|
#4
10 Mar 2010 20:54 Re: [atmega16][c] HIDKeys, czyli problem z klawiaturą USB na |
|
|
|
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.
|
|
| Back to top |
|
 |
patyk12343 Poziom 4

Joined: 27 Feb 2010 Posts: 9
|
#5
11 Mar 2010 17:01 Re: [atmega16][c] HIDKeys, czyli problem z klawiaturą USB na |
|
|
|
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ć?
|
|
| Back to top |
|
 |