Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

V-USB - Problem z kodem - 'usbCrc16Append'

Defozo 03 Kwi 2010 18:20 9940 28
  • #1 03 Kwi 2010 18:20
    Defozo
    Poziom 17  

    Witam, ostatnio zainteresowałem się biblioteką V-USB, no i mam problem:

    Cytat:
    main.o: In function `usbBuildTxBlock':
    E:\V-USB\vusb-20090822\examples\hid-mouse\firmware/usbdrv.c:536: undefined reference to `usbCrc16Append'
    main.o: In function `usbGenericSetInterrupt':
    E:\V-USB\vusb-20090822\examples\hid-mouse\firmware/usbdrv.c:240: undefined reference to `usbCrc16Append'
    make.exe: *** [main.elf] Error 1

    Błąd powszechny ale jakoś nigdzie nie ma rozwiązania dla mnie.
    W main.c próbowałem zaincludować co się da:
    Cytat:
    #include <avr/io.h>
    #include <avr/wdt.h>
    #include <avr/interrupt.h> /* for sei() */
    #include <util/delay.h> /* for _delay_ms() */

    #include <avr/pgmspace.h> /* required by usbdrv.h */
    #include "usbdrv.h"
    #include "oddebug.h" /* This is also an example for using debug macros */
    #include "usbdrv.c"
    #include "oddebug.c"
    #include "usbportability.h"
    #include "usbconfig.h"
    #include "usbconfig-prototype.h"
    #include <string.h>

    #define F_CPU 12000000

    Ale to nic nie dało.

    Proszę o pomoc,
    Pozdrawiam,
    Defozo

    0 28
  • #2 04 Kwi 2010 16:08
    Defozo
    Poziom 17  

    ~~ Odświeżenie ~~
    Udało się! Wystarczyło zmienić plik Makefile na ten odpowiedni z wstawką odnośnie assemblera.

    Atmegę8 zaprogramowałem, jednak po połączeniu z USB nic się nie dzieje (nie ma nawet tego charakterystycznego dźwięku "plumknięcia").
    Ustawione Fusebity:
    lfuse: 0xFF
    hfuse: 0xd9
    Czy są one dobrze zaprogramowane?
    Mam podłączony zewnętrzny kwarc 12Mhz wraz z kondensatorami 27pF.
    A kable od D- i D+ z USB idą przez "mieszankę" rezystorów dającą ok. 68 ohm (dla D- i D+ są osobne "mieszanki").

    Proszę o pomoc,
    Pozdrawiam,
    Defozo

    0
  • #3 05 Kwi 2010 09:21
    pegaz517
    Poziom 10  

    Musisz dać rezystor podciągający D- do plusa zasilania (około 1,5kΩ) i jeżeli procek zasilany jest z 5V to dodatkowo diody zenera 3V na liniach zasilania do masy, bo nowsze usb nie radzi sobie z poziomami 5V.

    0
  • #4 05 Kwi 2010 10:17
    Defozo
    Poziom 17  

    pegaz517 napisał:
    Musisz dać rezystor podciągający D- do plusa zasilania (około 1,5kΩ) i jeżeli procek zasilany jest z 5V to dodatkowo diody zenera 3V na liniach zasilania do masy, bo nowsze usb nie radzi sobie z poziomami 5V.

    Mam tak zrobione.

    0
  • #5 05 Kwi 2010 12:25
    pegaz517
    Poziom 10  

    Sprawdź jeszcze raz wszystkie połączenia, i kierunek diod. Jeżeli nie pomoże, spróbuj wgrać program np. od USBasp, jeżeli wtedy wykryje, to znaczy że masz błąd w programie.

    0
  • #6 05 Kwi 2010 22:27
    Defozo
    Poziom 17  

    Mam dwie diody zenera szeregowo połączone od +5V USB do µC i właśnie zmierzyłem napięcie.
    Ku zdziwieniu na wyjściu jest tylko ok. +3.97V.
    Usunąć te diody?

    0
  • #7 06 Kwi 2010 15:28
    Defozo
    Poziom 17  

    Zrobiłem wszystko od początku na płytce uniwersalnej bez diod zenera tych 1N4148 od +5V z USB.
    Wgrałem program z usbasp, podłączam i nadal nic!
    Tutaj schemat jak to mam podłączone:
    V-USB - Problem z kodem - 'usbCrc16Append'

    Proszę o pomoc,
    Pozdrawiam,
    Defozo

    0
  • #8 06 Kwi 2010 15:35
    kuba135
    Poziom 14  

    Dołącz do jakąś LED i sprawdź czy będzie migała po zaprogramowaniu procka odpowiednim programem

    0
  • #9 06 Kwi 2010 15:48
    Defozo
    Poziom 17  

    kuba135 napisał:
    Dołącz do jakąś LED i sprawdź czy będzie migała po zaprogramowaniu procka odpowiednim programem

    To znaczy, mam napisać program do migania leda (tylko?) i wpiąć ten led?

    0
  • #10 06 Kwi 2010 15:49
    kuba135
    Poziom 14  

    żeby mieć pewność że niema problemu z zasilaniem, resetem itp. itd.

    0
  • #11 06 Kwi 2010 16:22
    Defozo
    Poziom 17  

    Zrobiłem. Miga poprawnie.

    0
  • #12 25 Gru 2010 12:50
    dondu
    Moderator Mikrokontrolery Projektowanie

    Defozo napisał:
    Udało się! Wystarczyło zmienić plik Makefile na ten odpowiedni z wstawką odnośnie assemblera.

    Odgrzewam bo miałem ten sam problem i po zastosowaniu załączonego do V_USB pliku Makefile poszło, ale stanęło na:

    Code:
    gcc plug-in: Error: Object file not found on expected location T:\Projekty\USB_ex2\USB_ex2.elf

    projekt nazwałem: USB_ex2
    jest w folderze: T:\Projekty\USB_ex2\
    plik projektu: USB_ex2.aps

    AVR Studio + GCC

    ... i nie potrafię sobie z tym poradzić.

    0
  • #13 25 Gru 2010 13:12
    Defozo
    Poziom 17  

    dondu napisał:
    Defozo napisał:
    Udało się! Wystarczyło zmienić plik Makefile na ten odpowiedni z wstawką odnośnie assemblera.

    Odgrzewam bo miałem ten sam problem i po zastosowaniu załączonego do V_USB pliku Makefile poszło, ale stanęło na:

    Code:
    gcc plug-in: Error: Object file not found on expected location T:\Projekty\USB_ex2\USB_ex2.elf

    projekt nazwałem: USB_ex2
    jest w folderze: T:\Projekty\USB_ex2\
    plik projektu: USB_ex2.aps

    AVR Studio + GCC

    ... i nie potrafię sobie z tym poradzić.

    Czy w tym folderze masz plik USB_ex2.elf?
    Bo wg. błędu to go nie masz.

    Może załącz projekt?
    Więcej informacji?

    Życzę Wesołych Świąt,
    Defozo

    0
  • #15 25 Gru 2010 13:32
    Defozo
    Poziom 17  

    dondu napisał:
    No właśnie go niema i w tym problem.
    W paczce źródłowej projektu V-USB nie ma żadnego pliku *.elf
    http://www.obdev.at/products/vusb/download.html

    Wesołych :!: :D:D

    Spróbuj tak:
    Otwórz projekt w Programmer's Notepad.
    Kliknij Tools -> Make Clean
    A potem Tools -> Make All

    Pozdrawiam,
    Defozo

    0
  • #16 25 Gru 2010 13:38
    dondu
    Moderator Mikrokontrolery Projektowanie

    Po Make clean:

    Code:
    > "make.exe" clean
    
    rm -f main.hex main.lst main.obj main.cof main.list main.map main.eep.hex main.elf *.o usbdrv/*.o main.s usbdrv/oddebug.s usbdrv/usbdrv.s
    > Process Exit Code: 0
    > Time Taken: 00:01



    Po Make All:
    Code:
    > "make.exe" all
    
    make.exe: *** No rule to make target `all'.  Stop.
    > Process Exit Code: 2
    > Time Taken: 00:01


    I problem nadal jest ten sam.

    0
  • #17 25 Gru 2010 14:46
    Defozo
    Poziom 17  

    dondu napisał:

    Po Make All:
    Code:
    > "make.exe" all
    
    make.exe: *** No rule to make target `all'.  Stop.
    > Process Exit Code: 2
    > Time Taken: 00:01


    I problem nadal jest ten sam.

    A masz w tym folderze plik Makefile?

    0
  • #18 25 Gru 2010 14:54
    dondu
    Moderator Mikrokontrolery Projektowanie

    Tak, to oryginalny plik z paczki V_USB:


    Code:
    # Name: Makefile
    
    # Project: custom-class example
    # Author: Christian Starkjohann
    # Creation Date: 2008-04-07
    # Tabsize: 4
    # Copyright: (c) 2008 by OBJECTIVE DEVELOPMENT Software GmbH
    # License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt)
    # This Revision: $Id: Makefile 692 2008-11-07 15:07:40Z cs $

    DEVICE  = atmega8
    F_CPU   = 12000000   # in Hz
    FUSE_L  = 0x9f # see below for fuse values for particular devices
    FUSE_H  = 0xc9
    AVRDUDE = avrdude -c usbasp -p $(DEVICE) # edit this line for your programmer

    CFLAGS  = -Iusbdrv -I. -DDEBUG_LEVEL=0
    OBJECTS = usbdrv/usbdrv.o usbdrv/usbdrvasm.o usbdrv/oddebug.o main.o

    COMPILE = avr-gcc -Wall -Os -DF_CPU=$(F_CPU) $(CFLAGS) -mmcu=$(DEVICE)

    ##############################################################################
    # Fuse values for particular devices
    ##############################################################################
    # If your device is not listed here, go to
    # http://palmavr.sourceforge.net/cgi-bin/fc.cgi
    # and choose options for external crystal clock and no clock divider
    #
    ################################## ATMega8 ##################################
    # ATMega8 FUSE_L (Fuse low byte):
    # 0x9f = 1 0 0 1   1 1 1 1
    #        ^ ^ \ /   \--+--/
    #        | |  |       +------- CKSEL 3..0 (external >8M crystal)
    #        | |  +--------------- SUT 1..0 (crystal osc, BOD enabled)
    #        | +------------------ BODEN (BrownOut Detector enabled)
    #        +-------------------- BODLEVEL (2.7V)
    # ATMega8 FUSE_H (Fuse high byte):
    # 0xc9 = 1 1 0 0   1 0 0 1 <-- BOOTRST (boot reset vector at 0x0000)
    #        ^ ^ ^ ^   ^ ^ ^------ BOOTSZ0
    #        | | | |   | +-------- BOOTSZ1
    #        | | | |   + --------- EESAVE (don't preserve EEPROM over chip erase)
    #        | | | +-------------- CKOPT (full output swing)
    #        | | +---------------- SPIEN (allow serial programming)
    #        | +------------------ WDTON (WDT not always on)
    #        +-------------------- RSTDISBL (reset pin is enabled)

    # symbolic targets:
    help:
       @echo "This Makefile has no default rule. Use one of the following:"




       @echo "make hex ....... to build main.hex"
       @echo "make program ... to flash fuses and firmware"
       @echo "make fuse ...... to flash the fuses"
       @echo "make flash ..... to flash the firmware (use this on metaboard)"
       @echo "make clean ..... to delete objects and hex file"

    hex: main.hex

    program: flash fuse

    # rule for programming fuse bits:
    fuse:
       @[ "$(FUSE_H)" != "" -a "$(FUSE_L)" != "" ] || \
          { echo "*** Edit Makefile and choose values for FUSE_L and FUSE_H!"; exit 1; }
       $(AVRDUDE) -U hfuse:w:$(FUSE_H):m -U lfuse:w:$(FUSE_L):m

    # rule for uploading firmware:
    flash: main.hex
       $(AVRDUDE) -U flash:w:main.hex:i

    # rule for deleting dependent files (those which can be built by Make):
    clean:
       rm -f main.hex main.lst main.obj main.cof main.list main.map main.eep.hex main.elf *.o usbdrv/*.o main.s usbdrv/oddebug.s usbdrv/usbdrv.s

    # Generic rule for compiling C files:
    .c.o:
       $(COMPILE) -c $< -o $@

    # Generic rule for assembling Assembler source files:
    .S.o:
       $(COMPILE) -x assembler-with-cpp -c $< -o $@
    # "-x assembler-with-cpp" should not be necessary since this is the default
    # file type for the .S (with capital S) extension. However, upper case
    # characters are not always preserved on Windows. To ensure WinAVR
    # compatibility define the file type manually.

    # Generic rule for compiling C to assembler, used for debugging only.
    .c.s:
       $(COMPILE) -S $< -o $@

    # file targets:

    # Since we don't want to ship the driver multipe times, we copy it into this project:
    usbdrv:
       cp -r ../../../usbdrv .

    main.elf: usbdrv $(OBJECTS)   # usbdrv dependency only needed because we copy it
       $(COMPILE) -o main.elf $(OBJECTS)

    main.hex: main.elf
       rm -f main.hex main.eep.hex
       avr-objcopy -j .text -j .data -O ihex main.elf main.hex
       avr-size main.hex

    # debugging targets:

    disasm:   main.elf
       avr-objdump -d main.elf

    cpp:
       $(COMPILE) -E main.c


    Dodano po 6 [minuty]:

    A opcje AVR Studio tak (wskazują ten plik Makefile):

    V-USB - Problem z kodem - 'usbCrc16Append'

    0
  • #19 25 Gru 2010 15:15
    Defozo
    Poziom 17  

    Uruchamiasz program MFile, tworzysz nim swój Makefile i łączysz ten stworzony Makefile z Makefile'm od V-USB w jeden plik.
    I wracasz do Programmer's Notepada do stanu po kliknięciu Make Clean, podmieniasz Makefile i klikasz Make All.

    Defozo

    0
  • #20 25 Gru 2010 15:46
    dondu
    Moderator Mikrokontrolery Projektowanie

    Defozo napisał:
    Uruchamiasz program MFile, tworzysz nim swój Makefile i łączysz ten stworzony Makefile z Makefile'm od V-USB w jeden plik.
    I wracasz do Programmer's Notepada do stanu po kliknięciu Make Clean, podmieniasz Makefile i klikasz Make All.

    Nie mam wy tym doświadczenia. Próbowałem ale nie wychodzi.

    Otwierając MFile pojawia się w nim domyślna zawartość dla ATMega128 (?).
    Mam utworzyć swój Makefile - i tu problem bo nie wiem co powinien, a czego nie powinien zawierać. Do tej pory Makefile zawsze powstawał automatycznie przez AVR podczas kompilacji.

    0
  • #21 25 Gru 2010 15:59
    Defozo
    Poziom 17  

    Tak powinien wyglądać plik Makefile:

    Code:
    # Hey Emacs, this is a -*- makefile -*-
    
    #----------------------------------------------------------------------------
    # WinAVR Makefile Template written by Eric B. Weddington, Jörg Wunsch, et al.
    #
    # Released to the Public Domain
    #
    # Additional material for this makefile was written by:
    # Peter Fleury
    # Tim Henigan
    # Colin O'Flynn
    # Reiner Patommel
    # Markus Pfaff
    # Sander Pool
    # Frederik Rouleau
    # Carlos Lamas
    #
    #----------------------------------------------------------------------------
    # On command line:
    #
    # make all = Make software.
    #
    # make clean = Clean out built project files.
    #
    # make coff = Convert ELF to AVR COFF.
    #
    # make extcoff = Convert ELF to AVR Extended COFF.
    #
    # make program = Download the hex file to the device, using avrdude.
    #                Please customize the avrdude settings below first!
    #
    # make debug = Start either simulavr or avarice as specified for debugging,
    #              with avr-gdb or avr-insight as the front end for debugging.
    #
    # make filename.s = Just compile filename.c into the assembler code only.
    #
    # make filename.i = Create a preprocessed source file for use in submitting
    #                   bug reports to the GCC project.
    #
    # To rebuild project do "make clean" then "make all".
    #----------------------------------------------------------------------------


    # MCU name
    MCU = atmega8


    # Processor frequency.
    #     This will define a symbol, F_CPU, in all source code files equal to the
    #     processor frequency. You can then use this symbol in your source code to
    #     calculate timings. Do NOT tack on a 'UL' at the end, this will be done
    #     automatically to create a 32-bit value in your source code.
    #     Typical values are:
    #         F_CPU =  1000000
    #         F_CPU =  1843200
    #         F_CPU =  2000000
    #         F_CPU =  3686400
    #         F_CPU =  4000000
    #         F_CPU =  7372800
    #         F_CPU =  8000000
    #         F_CPU = 11059200
    #         F_CPU = 14745600
    #         F_CPU = 16000000
    #         F_CPU = 18432000
    #         F_CPU = 20000000
    F_CPU = 12000000


    # Output format. (can be srec, ihex, binary)
    FORMAT = ihex


    # Target file name (without extension).
    TARGET = USB_ex2


    # Object files directory
    #     To put object files in current directory, use a dot (.), do NOT make
    #     this an empty or blank macro!
    OBJDIR = .


    # List C source files here. (C dependencies are automatically generated.)
    SRC = $(TARGET).c


    # List C++ source files here. (C dependencies are automatically generated.)
    CPPSRC =


    # List Assembler source files here.
    #     Make them always end in a capital .S.  Files ending in a lowercase .s
    #     will not be considered source files but generated files (assembler
    #     output from the compiler), and will be deleted upon "make clean"!
    #     Even though the DOS/Win* filesystem matches both .s and .S the same,
    #     it will preserve the spelling of the filenames, and gcc itself does
    #     care about how the name is spelled on its command-line.
    ASRC =


    # Optimization level, can be [0, 1, 2, 3, s].
    #     0 = turn off optimization. s = optimize for size.
    #     (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
    OPT = s


    # Debugging format.
    #     Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs.
    #     AVR Studio 4.10 requires dwarf-2.
    #     AVR [Extended] COFF format requires stabs, plus an avr-objcopy run.
    DEBUG = dwarf-2


    # List any extra directories to look for include files here.
    #     Each directory must be seperated by a space.
    #     Use forward slashes for directory separators.
    #     For a directory that has spaces, enclose it in quotes.
    EXTRAINCDIRS =


    # Compiler flag to set the C Standard level.
    #     c89   = "ANSI" C
    #     gnu89 = c89 plus GCC extensions
    #     c99   = ISO C99 standard (not yet fully implemented)
    #     gnu99 = c99 plus GCC extensions
    CSTANDARD = -std=gnu99


    # Place -D or -U options here for C sources
    CDEFS = -DF_CPU=$(F_CPU)UL


    # Place -D or -U options here for ASM sources
    ADEFS = -DF_CPU=$(F_CPU)


    # Place -D or -U options here for C++ sources
    CPPDEFS = -DF_CPU=$(F_CPU)UL
    #CPPDEFS += -D__STDC_LIMIT_MACROS
    #CPPDEFS += -D__STDC_CONSTANT_MACROS



    #---------------- Compiler Options C ----------------
    #  -g*:          generate debugging information
    #  -O*:          optimization level
    #  -f...:        tuning, see GCC manual and avr-libc documentation
    #  -Wall...:     warning level
    #  -Wa,...:      tell GCC to pass this to the assembler.
    #    -adhlns...: create assembler listing
    CFLAGS = -g$(DEBUG)
    CFLAGS += $(CDEFS)
    CFLAGS += -O$(OPT)
    CFLAGS += -funsigned-char
    CFLAGS += -funsigned-bitfields
    CFLAGS += -fpack-struct
    CFLAGS += -fshort-enums
    CFLAGS += -Wall
    CFLAGS += -Wstrict-prototypes
    #CFLAGS += -mshort-calls
    #CFLAGS += -fno-unit-at-a-time
    #CFLAGS += -Wundef
    #CFLAGS += -Wunreachable-code
    #CFLAGS += -Wsign-compare
    CFLAGS += -Wa,-adhlns=$(<:%.c=$(OBJDIR)/%.lst)
    CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
    CFLAGS += $(CSTANDARD)


    #---------------- Compiler Options C++ ----------------
    #  -g*:          generate debugging information
    #  -O*:          optimization level
    #  -f...:        tuning, see GCC manual and avr-libc documentation
    #  -Wall...:     warning level
    #  -Wa,...:      tell GCC to pass this to the assembler.
    #    -adhlns...: create assembler listing
    CPPFLAGS = -g$(DEBUG)
    CPPFLAGS += $(CPPDEFS)
    CPPFLAGS += -O$(OPT)
    CPPFLAGS += -funsigned-char
    CPPFLAGS += -funsigned-bitfields
    CPPFLAGS += -fpack-struct
    CPPFLAGS += -fshort-enums
    CPPFLAGS += -fno-exceptions
    CPPFLAGS += -Wall
    CPPFLAGS += -Wundef
    #CPPFLAGS += -mshort-calls
    #CPPFLAGS += -fno-unit-at-a-time
    #CPPFLAGS += -Wstrict-prototypes
    #CPPFLAGS += -Wunreachable-code
    #CPPFLAGS += -Wsign-compare
    CPPFLAGS += -Wa,-adhlns=$(<:%.cpp=$(OBJDIR)/%.lst)
    CPPFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
    #CPPFLAGS += $(CSTANDARD)


    #---------------- Assembler Options ----------------
    #  -Wa,...:   tell GCC to pass this to the assembler.
    #  -adhlns:   create listing
    #  -gstabs:   have the assembler create line number information; note that
    #             for use in COFF files, additional information about filenames
    #             and function names needs to be present in the assembler source
    #             files -- see avr-libc docs [FIXME: not yet described there]
    #  -listing-cont-lines: Sets the maximum number of continuation lines of hex
    #       dump that will be displayed for a given single line of source input.
    ASFLAGS = $(ADEFS) -Wa,-adhlns=$(<:%.S=$(OBJDIR)/%.lst),-gstabs,--listing-cont-lines=100


    #---------------- Library Options ----------------
    # Minimalistic printf version
    PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min

    # Floating point printf version (requires MATH_LIB = -lm below)
    PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt

    # If this is left blank, then it will use the Standard printf version.
    PRINTF_LIB =
    #PRINTF_LIB = $(PRINTF_LIB_MIN)
    #PRINTF_LIB = $(PRINTF_LIB_FLOAT)


    # Minimalistic scanf version
    SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min

    # Floating point + %[ scanf version (requires MATH_LIB = -lm below)
    SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt

    # If this is left blank, then it will use the Standard scanf version.
    SCANF_LIB =
    #SCANF_LIB = $(SCANF_LIB_MIN)
    #SCANF_LIB = $(SCANF_LIB_FLOAT)


    MATH_LIB = -lm


    # List any extra directories to look for libraries here.
    #     Each directory must be seperated by a space.
    #     Use forward slashes for directory separators.
    #     For a directory that has spaces, enclose it in quotes.
    EXTRALIBDIRS =



    #---------------- External Memory Options ----------------

    # 64 KB of external RAM, starting after internal RAM (ATmega128!),
    # used for variables (.data/.bss) and heap (malloc()).
    #EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff

    # 64 KB of external RAM, starting after internal RAM (ATmega128!),
    # only used for heap (malloc()).
    #EXTMEMOPTS = -Wl,--section-start,.data=0x801100,--defsym=__heap_end=0x80ffff

    EXTMEMOPTS =



    #---------------- Linker Options ----------------
    #  -Wl,...:     tell GCC to pass this to linker.
    #    -Map:      create map file
    #    --cref:    add cross reference to  map file
    LDFLAGS = -Wl,-Map=$(TARGET).map,--cref
    LDFLAGS += $(EXTMEMOPTS)
    LDFLAGS += $(patsubst %,-L%,$(EXTRALIBDIRS))
    LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB)
    #LDFLAGS += -T linker_script.x



    #---------------- Programming Options (avrdude) ----------------

    # Programming hardware
    # Type: avrdude -c ?
    # to get a full listing.
    #
    AVRDUDE_PROGRAMMER = usbasp

    # com1 = serial port. Use lpt1 to connect to parallel port.
    AVRDUDE_PORT = usb

    AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex
    #AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep


    # Uncomment the following if you want avrdude's erase cycle counter.
    # Note that this counter needs to be initialized first using -Yn,
    # see avrdude manual.
    #AVRDUDE_ERASE_COUNTER = -y

    # Uncomment the following if you do /not/ wish a verification to be
    # performed after programming the device.
    #AVRDUDE_NO_VERIFY = -V

    # Increase verbosity level.  Please use this when submitting bug
    # reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude>
    # to submit bug reports.
    #AVRDUDE_VERBOSE = -v -v

    AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)
    AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY)
    AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE)
    AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER)



    #---------------- Debugging Options ----------------

    # For simulavr only - target MCU frequency.
    DEBUG_MFREQ = $(F_CPU)

    # Set the DEBUG_UI to either gdb or insight.
    # DEBUG_UI = gdb
    DEBUG_UI = insight

    # Set the debugging back-end to either avarice, simulavr.
    DEBUG_BACKEND = avarice
    #DEBUG_BACKEND = simulavr

    # GDB Init Filename.
    GDBINIT_FILE = __avr_gdbinit

    # When using avarice settings for the JTAG
    JTAG_DEV = /dev/com1

    # Debugging port used to communicate between GDB / avarice / simulavr.
    DEBUG_PORT = 4242

    # Debugging host used to communicate between GDB / avarice / simulavr, normally
    #     just set to localhost unless doing some sort of crazy debugging when
    #     avarice is running on a different computer.
    DEBUG_HOST = localhost



    #============================================================================


    # Define programs and commands.
    SHELL = sh
    CC = avr-gcc
    OBJCOPY = avr-objcopy
    OBJDUMP = avr-objdump
    SIZE = avr-size
    AR = avr-ar rcs
    NM = avr-nm
    AVRDUDE = avrdude
    REMOVE = rm -f
    REMOVEDIR = rm -rf
    COPY = cp
    WINSHELL = cmd


    # Define Messages
    # English
    MSG_ERRORS_NONE = Errors: none
    MSG_BEGIN = -------- begin --------
    MSG_END = --------  end  --------
    MSG_SIZE_BEFORE = Size before:
    MSG_SIZE_AFTER = Size after:
    MSG_COFF = Converting to AVR COFF:
    MSG_EXTENDED_COFF = Converting to AVR Extended COFF:
    MSG_FLASH = Creating load file for Flash:
    MSG_EEPROM = Creating load file for EEPROM:
    MSG_EXTENDED_LISTING = Creating Extended Listing:
    MSG_SYMBOL_TABLE = Creating Symbol Table:
    MSG_LINKING = Linking:
    MSG_COMPILING = Compiling C:
    MSG_COMPILING_CPP = Compiling C++:
    MSG_ASSEMBLING = Assembling:
    MSG_CLEANING = Cleaning project:
    MSG_CREATING_LIBRARY = Creating library:




    # Define all object files.
    OBJ = $(SRC:%.c=$(OBJDIR)/%.o) $(CPPSRC:%.cpp=$(OBJDIR)/%.o) $(ASRC:%.S=$(OBJDIR)/%.o)

    # Define all listing files.
    LST = $(SRC:%.c=$(OBJDIR)/%.lst) $(CPPSRC:%.cpp=$(OBJDIR)/%.lst) $(ASRC:%.S=$(OBJDIR)/%.lst)


    # Compiler flags to generate dependency files.
    GENDEPFLAGS = -MMD -MP -MF .dep/$(@F).d


    # Combine all necessary flags and optional flags.
    # Add target processor to flags.
    ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS)
    ALL_CPPFLAGS = -mmcu=$(MCU) -I. -x c++ $(CPPFLAGS) $(GENDEPFLAGS)
    ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)





    # Default target.
    all: begin gccversion sizebefore build sizeafter end

    # Change the build target to build a HEX file or a library.
    build: elf hex eep lss sym
    #build: lib


    elf: $(TARGET).elf
    hex: $(TARGET).hex
    eep: $(TARGET).eep
    lss: $(TARGET).lss
    sym: $(TARGET).sym
    LIBNAME=lib$(TARGET).a
    lib: $(LIBNAME)



    # Eye candy.
    # AVR Studio 3.x does not check make's exit code but relies on
    # the following magic strings to be generated by the compile job.
    begin:
       @echo
       @echo $(MSG_BEGIN)

    end:
       @echo $(MSG_END)
       @echo


    # Display size of file.
    HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
    ELFSIZE = $(SIZE) --mcu=$(MCU) --format=avr $(TARGET).elf

    sizebefore:
       @if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); \
       2>/dev/null; echo; fi

    sizeafter:
       @if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); \
       2>/dev/null; echo; fi



    # Display compiler version information.
    gccversion :
       @$(CC) --version



    # Program the device. 
    program: $(TARGET).hex $(TARGET).eep
       $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)


    # Generate avr-gdb config/init file which does the following:
    #     define the reset signal, load the target file, connect to target, and set
    #     a breakpoint at main().
    gdb-config:
       @$(REMOVE) $(GDBINIT_FILE)
       @echo define reset >> $(GDBINIT_FILE)
       @echo SIGNAL SIGHUP >> $(GDBINIT_FILE)
       @echo end >> $(GDBINIT_FILE)
       @echo file $(TARGET).elf >> $(GDBINIT_FILE)
       @echo target remote $(DEBUG_HOST):$(DEBUG_PORT)  >> $(GDBINIT_FILE)
    ifeq ($(DEBUG_BACKEND),simulavr)
       @echo load  >> $(GDBINIT_FILE)
    endif
       @echo break main >> $(GDBINIT_FILE)

    debug: gdb-config $(TARGET).elf
    ifeq ($(DEBUG_BACKEND), avarice)
       @echo Starting AVaRICE - Press enter when "waiting to connect" message displays.
       @$(WINSHELL) /c start avarice --jtag $(JTAG_DEV) --erase --program --file \
       $(TARGET).elf $(DEBUG_HOST):$(DEBUG_PORT)
       @$(WINSHELL) /c pause

    else
       @$(WINSHELL) /c start simulavr --gdbserver --device $(MCU) --clock-freq \
       $(DEBUG_MFREQ) --port $(DEBUG_PORT)
    endif
       @$(WINSHELL) /c start avr-$(DEBUG_UI) --command=$(GDBINIT_FILE)




    # Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB.
    COFFCONVERT = $(OBJCOPY) --debugging
    COFFCONVERT += --change-section-address .data-0x800000
    COFFCONVERT += --change-section-address .bss-0x800000
    COFFCONVERT += --change-section-address .noinit-0x800000
    COFFCONVERT += --change-section-address .eeprom-0x810000



    coff: $(TARGET).elf
       @echo
       @echo $(MSG_COFF) $(TARGET).cof
       $(COFFCONVERT) -O coff-avr $< $(TARGET).cof


    extcoff: $(TARGET).elf
       @echo
       @echo $(MSG_EXTENDED_COFF) $(TARGET).cof
       $(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof



    # Create final output files (.hex, .eep) from ELF output file.
    %.hex: %.elf
       @echo
       @echo $(MSG_FLASH) $@
       $(OBJCOPY) -O $(FORMAT) -R .eeprom -R .fuse -R .lock $< $@

    %.eep: %.elf
       @echo
       @echo $(MSG_EEPROM) $@
       -$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
       --change-section-lma .eeprom=0 --no-change-warnings -O $(FORMAT) $< $@ || exit 0

    # Create extended listing file from ELF output file.
    %.lss: %.elf
       @echo
       @echo $(MSG_EXTENDED_LISTING) $@
       $(OBJDUMP) -h -S -z $< > $@

    # Create a symbol table from ELF output file.
    %.sym: %.elf
       @echo
       @echo $(MSG_SYMBOL_TABLE) $@
       $(NM) -n $< > $@



    # Create library from object files.
    .SECONDARY : $(TARGET).a
    .PRECIOUS : $(OBJ)
    %.a: $(OBJ)
       @echo
       @echo $(MSG_CREATING_LIBRARY) $@
       $(AR) $@ $(OBJ)


    # Link: create ELF output file from object files.
    .SECONDARY : $(TARGET).elf
    .PRECIOUS : $(OBJ)
    %.elf: $(OBJ)
       @echo
       @echo $(MSG_LINKING) $@
       $(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS)


    # Compile: create object files from C source files.
    $(OBJDIR)/%.o : %.c
       @echo
       @echo $(MSG_COMPILING) $<
       $(CC) -c $(ALL_CFLAGS) $< -o $@


    # Compile: create object files from C++ source files.
    $(OBJDIR)/%.o : %.cpp
       @echo
       @echo $(MSG_COMPILING_CPP) $<
       $(CC) -c $(ALL_CPPFLAGS) $< -o $@


    # Compile: create assembler files from C source files.
    %.s : %.c
       $(CC) -S $(ALL_CFLAGS) $< -o $@


    # Compile: create assembler files from C++ source files.
    %.s : %.cpp
       $(CC) -S $(ALL_CPPFLAGS) $< -o $@


    # Assemble: create object files from assembler source files.
    $(OBJDIR)/%.o : %.S
       @echo
       @echo $(MSG_ASSEMBLING) $<
       $(CC) -c $(ALL_ASFLAGS) $< -o $@


    # Create preprocessed source for use in sending a bug report.
    %.i : %.c
       $(CC) -E -mmcu=$(MCU) -I. $(CFLAGS) $< -o $@


    # Target: clean project.
    clean: begin clean_list end

    clean_list :
       @echo
       @echo $(MSG_CLEANING)
       $(REMOVE) $(TARGET).hex
       $(REMOVE) $(TARGET).eep
       $(REMOVE) $(TARGET).cof
       $(REMOVE) $(TARGET).elf
       $(REMOVE) $(TARGET).map
       $(REMOVE) $(TARGET).sym
       $(REMOVE) $(TARGET).lss
       $(REMOVE) $(SRC:%.c=$(OBJDIR)/%.o)
       $(REMOVE) $(SRC:%.c=$(OBJDIR)/%.lst)
       $(REMOVE) $(SRC:.c=.s)
       $(REMOVE) $(SRC:.c=.d)
       $(REMOVE) $(SRC:.c=.i)
       $(REMOVEDIR) .dep


    # Create object files directory
    $(shell mkdir $(OBJDIR) 2>/dev/null)


    # Include the dependency files.
    -include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)


    # Listing of phony targets.
    .PHONY : all begin finish end sizebefore sizeafter gccversion \
    build elf hex eep lss sym coff extcoff \
    clean clean_list program debug gdb-config



    # Name: Makefile
    # Project: hid-mouse example
    # Author: Christian Starkjohann
    # Creation Date: 2008-04-07
    # Tabsize: 4
    # Copyright: (c) 2008 by OBJECTIVE DEVELOPMENT Software GmbH
    # License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt)
    # This Revision: $Id: Makefile 692 2008-11-07 15:07:40Z cs $

    DEVICE  = atmega8
    F_CPU   = 12000000   # in Hz
    FUSE_L  = # see below for fuse values for particular devices
    FUSE_H  =
    AVRDUDE = avrdude -c usbasp -p $(DEVICE) # edit this line for your programmer

    CFLAGS  = -Iusbdrv -I. -DDEBUG_LEVEL=0
    OBJECTS = usbdrv/usbdrv.o usbdrv/usbdrvasm.o usbdrv/oddebug.o main.o

    COMPILE = avr-gcc -Wall -Os -DF_CPU=$(F_CPU) $(CFLAGS) -mmcu=$(DEVICE)

    ##############################################################################
    # Fuse values for particular devices
    ##############################################################################
    # If your device is not listed here, go to
    # http://palmavr.sourceforge.net/cgi-bin/fc.cgi
    # and choose options for external crystal clock and no clock divider
    #
    ################################## ATMega8 ##################################
    # ATMega8 FUSE_L (Fuse low byte):
    # 0x9f = 1 0 0 1   1 1 1 1
    #        ^ ^ \ /   \--+--/
    #        | |  |       +------- CKSEL 3..0 (external >8M crystal)
    #        | |  +--------------- SUT 1..0 (crystal osc, BOD enabled)
    #        | +------------------ BODEN (BrownOut Detector enabled)
    #        +-------------------- BODLEVEL (2.7V)
    # ATMega8 FUSE_H (Fuse high byte):
    # 0xc9 = 1 1 0 0   1 0 0 1 <-- BOOTRST (boot reset vector at 0x0000)
    #        ^ ^ ^ ^   ^ ^ ^------ BOOTSZ0
    #        | | | |   | +-------- BOOTSZ1
    #        | | | |   + --------- EESAVE (don't preserve EEPROM over chip erase)
    #        | | | +-------------- CKOPT (full output swing)
    #        | | +---------------- SPIEN (allow serial programming)
    #        | +------------------ WDTON (WDT not always on)
    #        +-------------------- RSTDISBL (reset pin is enabled)
    #
    ############################## ATMega48/88/168 ##############################
    # ATMega*8 FUSE_L (Fuse low byte):
    # 0xdf = 1 1 0 1   1 1 1 1
    #        ^ ^ \ /   \--+--/
    #        | |  |       +------- CKSEL 3..0 (external >8M crystal)
    #        | |  +--------------- SUT 1..0 (crystal osc, BOD enabled)
    #        | +------------------ CKOUT (if 0: Clock output enabled)
    #        +-------------------- CKDIV8 (if 0: divide by 8)
    # ATMega*8 FUSE_H (Fuse high byte):
    # 0xde = 1 1 0 1   1 1 1 0
    #        ^ ^ ^ ^   ^ \-+-/
    #        | | | |   |   +------ BODLEVEL 0..2 (110 = 1.8 V)
    #        | | | |   + --------- EESAVE (preserve EEPROM over chip erase)
    #        | | | +-------------- WDTON (if 0: watchdog always on)
    #        | | +---------------- SPIEN (allow serial programming)
    #        | +------------------ DWEN (debug wire enable)
    #        +-------------------- RSTDISBL (reset pin is enabled)
    #
    ############################## ATTiny25/45/85 ###############################
    # ATMega*5 FUSE_L (Fuse low byte):
    # 0xef = 1 1 1 0   1 1 1 1
    #        ^ ^ \+/   \--+--/
    #        | |  |       +------- CKSEL 3..0 (clock selection -> crystal @ 12 MHz)
    #        | |  +--------------- SUT 1..0 (BOD enabled, fast rising power)
    #        | +------------------ CKOUT (clock output on CKOUT pin -> disabled)
    #        +-------------------- CKDIV8 (divide clock by 8 -> don't divide)
    # ATMega*5 FUSE_H (Fuse high byte):
    # 0xdd = 1 1 0 1   1 1 0 1
    #        ^ ^ ^ ^   ^ \-+-/
    #        | | | |   |   +------ BODLEVEL 2..0 (brownout trigger level -> 2.7V)
    #        | | | |   +---------- EESAVE (preserve EEPROM on Chip Erase -> not preserved)
    #        | | | +-------------- WDTON (watchdog timer always on -> disable)
    #        | | +---------------- SPIEN (enable serial programming -> enabled)
    #        | +------------------ DWEN (debug wire enable)
    #        +-------------------- RSTDISBL (disable external reset -> enabled)
    #
    ################################ ATTiny2313 #################################
    # ATTiny2313 FUSE_L (Fuse low byte):
    # 0xef = 1 1 1 0   1 1 1 1
    #        ^ ^ \+/   \--+--/
    #        | |  |       +------- CKSEL 3..0 (clock selection -> crystal @ 12 MHz)
    #        | |  +--------------- SUT 1..0 (BOD enabled, fast rising power)
    #        | +------------------ CKOUT (clock output on CKOUT pin -> disabled)
    #        +-------------------- CKDIV8 (divide clock by 8 -> don't divide)
    # ATTiny2313 FUSE_H (Fuse high byte):
    # 0xdb = 1 1 0 1   1 0 1 1
    #        ^ ^ ^ ^   \-+-/ ^
    #        | | | |     |   +---- RSTDISBL (disable external reset -> enabled)
    #        | | | |     +-------- BODLEVEL 2..0 (brownout trigger level -> 2.7V)
    #        | | | +-------------- WDTON (watchdog timer always on -> disable)
    #        | | +---------------- SPIEN (enable serial programming -> enabled)
    #        | +------------------ EESAVE (preserve EEPROM on Chip Erase -> not preserved)
    #        +-------------------- DWEN (debug wire enable)


    # symbolic targets:
    help:
       @echo "This Makefile has no default rule. Use one of the following:"
       @echo "make hex ....... to build main.hex"
       @echo "make program ... to flash fuses and firmware"
       @echo "make fuse ...... to flash the fuses"
       @echo "make flash ..... to flash the firmware (use this on metaboard)"
       @echo "make clean ..... to delete objects and hex file"

    hex: main.hex

    program: flash fuse

    # rule for programming fuse bits:
    fuse:
       @[ "$(FUSE_H)" != "" -a "$(FUSE_L)" != "" ] || \
          { echo "*** Edit Makefile and choose values for FUSE_L and FUSE_H!"; exit 1; }
       $(AVRDUDE) -U hfuse:w:$(FUSE_H):m -U lfuse:w:$(FUSE_L):m

    # rule for uploading firmware:
    flash: main.hex
       $(AVRDUDE) -U flash:w:main.hex:i

    # rule for deleting dependent files (those which can be built by Make):
    clean:
       rm -f main.hex main.lst main.obj main.cof main.list main.map main.eep.hex main.elf *.o usbdrv/*.o main.s usbdrv/oddebug.s usbdrv/usbdrv.s

    # Generic rule for compiling C files:
    .c.o:
       $(COMPILE) -c $< -o $@

    # Generic rule for assembling Assembler source files:
    .S.o:
       $(COMPILE) -x assembler-with-cpp -c $< -o $@
    # "-x assembler-with-cpp" should not be necessary since this is the default
    # file type for the .S (with capital S) extension. However, upper case
    # characters are not always preserved on Windows. To ensure WinAVR
    # compatibility define the file type manually.

    # Generic rule for compiling C to assembler, used for debugging only.
    .c.s:
       $(COMPILE) -S $< -o $@

    # file targets:
    TARGET = USB_ex2

    # Since we don't want to ship the driver multipe times, we copy it into this project:
    usbdrv:
       cp -r ../../../usbdrv .

    main.elf: usbdrv $(OBJECTS)   # usbdrv dependency only needed because we copy it
       $(COMPILE) -o main.elf $(OBJECTS)

    main.hex: main.elf
       rm -f main.hex main.eep.hex
       avr-objcopy -j .text -j .data -O ihex main.elf main.hex
       avr-size main.hex

    # debugging targets:

    disasm:   main.elf
       avr-objdump -d main.elf

    cpp:
       $(COMPILE) -E main.c

    Ustawione wartości:
    Mikrokontroler: atmega8
    F_CPU: 12MHz
    Programator: usbasp
    Port programatora: usb
    Plik źródłowy: USB_ex2.c

    Jeśli jest inaczej, zmień to w powyższym pliku.

    0
  • #22 25 Gru 2010 16:20
    dondu
    Moderator Mikrokontrolery Projektowanie

    Ustawienia które nadałeś zostawiam (programator mam inny ale to na razie nie ma znaczenia.

    jedyna co zmieniłem to nadałem wartości 2 parametrów zgodnie z opisem w pliku Makefile projektu V-USB

    Code:
    FUSE_L  = 0x9f # see below for fuse values for particular devices 
    
    FUSE_H  = 0xc9



    Po zastosowaniu tego Makefile:
    Spróbowałem kompilować w AVR Studio:

    Code:
    Build started 25.12.2010 at 16:12:04
    
    dd_Makefile_2:419: *** missing separator.  Stop.
    Build failed with 1 errors and 0 warnings...


    czyli błąd ujawnił się tutaj (pierwsze @echo):
    Code:

    begin:
       @echo
       @echo $(MSG_BEGIN)

    end:
       @echo $(MSG_END)
       @echo



    Otworzyłem więc Programers Notepad i wykonałem Make clean i Make all tak ja pisałeś wcześniej:

    Po Make clean:
    Code:
    > "make.exe" clean
    
    make.exe: *** No rule to make target `clean'.  Stop.
    > Process Exit Code: 2
    > Time Taken: 00:00



    po Make all
    Code:
    > "make.exe" all
    
    make.exe: *** No rule to make target `all'.  Stop.
    > Process Exit Code: 2
    > Time Taken: 00:00

    0
  • #23 25 Gru 2010 16:33
    Defozo
    Poziom 17  

    Coś już za bardzo pomieszałeś.
    Ściągnij jeszcze raz V-USB, wejdź w folder example i wybierz jakiś przykładowy program, podmień Makefile i otwórz Programmer's Notepad, a w nim otwórz ten przykładowy program i kliknij Make All.
    A potem jak już się poprawnie skompiluje to wprowadź te zmiany jakie chciałeś zrobić.

    Pamiętaj, że musisz jednak zaktualizować Makefile (zmienić linijkę z target na: TARGET = main).

    Jeśli się nie uda, to może wyślij cały projekt (jeśli nie jest on zbyt cenny).

    0
  • #24 25 Gru 2010 16:37
    dondu
    Moderator Mikrokontrolery Projektowanie

    Projekt nie jest cenny ponieważ na razie jestem na etapie skompilowania tej biblioteki i jeszcze nic nie dołączyłem własnego :).
    Zrobię tak jak piszesz jeżeli nadal będzie problem to spakuję cały folder i wstawię na forum - myślę że w ciągu 1h.
    Dzięki za dotychczasową pomoc - niestety to nie mój temat więc nie ma przycisku POMÓGŁ.

    0
  • #25 26 Gru 2010 04:31
    dondu
    Moderator Mikrokontrolery Projektowanie

    Będę po kolei opisywał co robię:

    1. Utworzyłem nowy folder: T:\Projekty\USB_ex3\

    2. Rozpakowałem ponownie paczkę V-USB i przekopiowałem do w/w folderu pliki przykładu:
    - main.c
    - requests.h
    - usbconfig.h
    - Makefile

    3. Na wszelki wypadek zrobiłem kopię: Kopia Makefile

    4. Podmieniłem zawartość Makefile na tę podaną przez cCiebie i ustawiłem FUSY_L i FUSY_H tak jak podałem wyżej bo tego wymaga komentarz w oryginalnym Makefile (podane są wartości jakie powinny być dla Atmega8)

    5. Otworzyłem Programmers Notepade i ...
    ... tutaj piszesz:

    Defozo napisał:
    ... otwórz Programmer's Notepad, a w nim otwórz ten przykładowy program i kliknij Make All

    więc nie wiedziałem czy mam w nim otworzyć Makefile czy main.c. Zacząłem od Makefile i po Make All otrzymałem:

    Code:
    > "make.exe" all
    
    makefile:419: *** missing separator.  Stop.

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


    ... zamknąłem Makefile i otworzyłem main.c + Make All i dokładnie ten sam efekt.

    Nie wiem czy o linię 419 chodzi, więc na wszelki wypadek podaję, że w linii 419 jest @echo dokładnie to co podałem wcześniej.

    Do tego momentu nie otwierałem tego projektu w AVR Studio.

    Niestety nie mam doświadczenia z Makefile stąd nawet nie wiem czy robię dokładnie to o co prosiłeś

    :cry:

    0
  • #26 26 Gru 2010 13:07
    Defozo
    Poziom 17  

    To może zrób tak:

    1. Ściągnij przykładowy kod - hid-mouse - z załącznika w tym poście.
    Jest to już przerobiona wersja z "poprawnym" Makefile.

    2. Rozpakuj.

    3. Otwórz Programmer's Notepad.
    V-USB - Problem z kodem - 'usbCrc16Append'

    4. Kliknij Open.
    V-USB - Problem z kodem - 'usbCrc16Append'

    5. Znajdź rozpakowany folder z plikami, zaznacz plik main.c i kliknij Otwórz.
    V-USB - Problem z kodem - 'usbCrc16Append'

    6. Powinien załadować się plik main.c.

    7. Wybierz Tools->Make All.
    V-USB - Problem z kodem - 'usbCrc16Append'

    8. Poczekaj, aż się skompiluje. Powinieneś otrzymać: "Process Exit Code: 0".
    V-USB - Problem z kodem - 'usbCrc16Append'

    9. Możesz wprowadzić zmiany jakie Ci się podobają w pliku lub otworzyć to w AVRStudio.

    Życzę owocnych eksperymentów,
    Defozo

    0
    Załączniki:
  • #27 26 Gru 2010 16:20
    dondu
    Moderator Mikrokontrolery Projektowanie

    Łopatologia często się sprawdza (screen-y) :D:D:D
    Tak właśnie wczoraj robiłem z tym przykładem który podałem wcześniej.

    Zaraz sprawdzę ten przykład z pliku który wstawiłeś.

    Dodano po 1 [godziny] 6 [minuty]:

    1. Utworzyłem nowy folder i projekt w AVR:

    2. Przekopiowałem pliki z przykładu

    3. W programers notepad zrobiłem Make all i otrzymałem:

    Code:
    > "make.exe" all
    

    -------- begin --------
    avr-gcc (WinAVR 20100110) 4.3.3
    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.

    cp -r ../../../usbdrv .
    cp: cannot stat `../../../usbdrv': No such file or directory
    make.exe: *** [usbdrv] Error 1

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


    Co jest oczywiste bo trzeba dodać pliki biblioteki V-USB



    4. dodałem cały folder USBDRIVER z plikami V-USB i po Make all otrzymałem:
    Code:
    > "make.exe" all
    

    -------- begin --------
    avr-gcc (WinAVR 20100110) 4.3.3
    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.


    Compiling C: usbdrv/usbdrv.c
    avr-gcc -c -mmcu=atmega8 -I. -Iusbdrv -I. -DDEBUG_LEVEL=0 -MMD -MP -MF .dep/usbdrv.o.d usbdrv/usbdrv.c -o usbdrv/usbdrv.o

    Assembling: usbdrv/usbdrvasm.S
    avr-gcc -c -mmcu=atmega8 -I. -x assembler-with-cpp -DF_CPU=12000000    -Wa,-adhlns=./usbdrv/usbdrvasm.lst,-gstabs,--listing-cont-lines=100 usbdrv/usbdrvasm.S -o usbdrv/usbdrvasm.o

    Compiling C: usbdrv/oddebug.c
    avr-gcc -c -mmcu=atmega8 -I. -Iusbdrv -I. -DDEBUG_LEVEL=0 -MMD -MP -MF .dep/oddebug.o.d usbdrv/oddebug.c -o usbdrv/oddebug.o

    Compiling C: main.c
    avr-gcc -c -mmcu=atmega8 -I. -Iusbdrv -I. -DDEBUG_LEVEL=0 -MMD -MP -MF .dep/main.o.d main.c -o main.o
    In file included from main.c:24:
    c:/winavr-20100110/lib/gcc/../../avr/include/util/delay.h:85:3: warning: #warning "F_CPU not defined for <util/delay.h>"
    c:/winavr-20100110/lib/gcc/../../avr/include/util/delay.h:90:3: warning: #warning "Compiler optimizations disabled; functions from <util/delay.h> won't work as designed"
    avr-gcc -Wall -Os -DF_CPU=12000000    -Iusbdrv -I. -DDEBUG_LEVEL=0 -mmcu=atmega8 -o main.elf usbdrv/usbdrv.o usbdrv/usbdrvasm.o usbdrv/oddebug.o main.o
    rm -f main.hex main.eep.hex
    avr-objcopy -j .text -j .data -O ihex main.elf main.hex
    avr-size main.hex
       text      data       bss       dec       hex   filename
          0      5796         0      5796      16a4   main.hex

    Creating load file for EEPROM: main.eep
    avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" \
       --change-section-lma .eeprom=0 --no-change-warnings -O ihex main.elf main.eep || exit 0

    Creating Extended Listing: main.lss
    avr-objdump -h -S -z main.elf > main.lss

    Creating Symbol Table: main.sym
    avr-nm -n main.elf > main.sym

    Size after:
    AVR Memory Usage
    ----------------
    Device: atmega8

    Program:    5796 bytes (70.8% Full)
    (.text + .data + .bootloader)

    Data:         74 bytes (7.2% Full)
    (.data + .bss + .noinit)

    -------- end --------

    > Process Exit Code: 0
    > Time Taken: 00:15


    Wystąpił warrning ostrzegający o braku deklaracji F_CPU.

    Niby poszło ok, ale gdy zacząłem kompilować w AVR Studio za pomocą Makefile z Twojej paczki to wychodzą problemy dot. folderu usbdrv, z którymi walczę do teraz. Muszę chwilę odpuścić bo już nerwy mi myśleć trzeźwo nie pozwalają. to musi być prosty problem.

    0
  • #28 26 Gru 2010 17:28
    Defozo
    Poziom 17  

    dondu napisał:
    Niby poszło ok, ale gdy zacząłem kompilować w AVR Studio za pomocą Makefile z Twojej paczki to wychodzą problemy dot. folderu usbdrv, z którymi walczę do teraz. Muszę chwilę odpuścić bo już nerwy mi myśleć trzeźwo nie pozwalają. to musi być prosty problem.

    Ochłoń i na pewno z tym sobie poradzisz :)
    A jeśli nie, to nie wiem co się tak uparłeś na to AVR Studio (tak, tak.. więcej możliwości..), ale w Programmer's Notepad też się da wszystko zrobić :)

    Pozdrawiam i życzę udanego eksperymentowania,
    Defozo

    0
  • #29 05 Cze 2011 16:07
    marco248
    Poziom 10  

    Defozo napisał:
    ~~ Odświeżenie ~~
    Udało się! Wystarczyło zmienić plik Makefile na ten odpowiedni z wstawką odnośnie assemblera.
    Defozo


    Czy ktoś orientuje się czy można to zrobić w kodzie, bez pliku makefile? Bo chce sobie polączyc ta biblioteke z projektem VisualAVR.

    0