Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[ATMEGA][stk500v2] - windows8:( jak odpalić?

pawelvod 18 Jan 2013 13:05 3693 21
  • #1
    pawelvod
    Level 18  
    Jak w zapytaniu. Czy da się zmusić do pracy ten programator w windows8?
    Zależy mi głównie na AVRStudio i AVRDude lub co kolwiek innego co ma wtyczkę do eclipsa...
  • #2
    piotrva
    VIP Meritorious for electroda.pl
    Temat wałkowany także w kontekście USBASP, bo problem się sprowadza do tego samego.
    Przykładowe rozwiązania:
    http://forum.and-tech.pl/viewtopic.php?p=2085#2085
    https://www.elektroda.pl/rtvforum/viewtopic.php?p=11798762#11798762
    A swoją drogą, Windows 8 był już na Twoim komputerze, czy sam instalowałeś?
  • #3
    pawelvod
    Level 18  
    Czytałem to. Wyłączyłem konieczność podpisanych sterowników. Zainstalowałem i nic... Zainstalowało mi się to jako libusb-32win drivers ->avr-doper i nie działa. Nie ma tak jak w windowsie xp możliwości przyporządkowania tego do portu com i ustalenia szybkości...
    Zmieniłem komputer więc windows 8 mam preinstalowany. Mam nadzieję że nie będe musiał zmieniać programatora...
  • #5
    pawelvod
    Level 18  
    W trybie HID (ze zworką) avrdure działa. Nie mogę jednak zmusić eclipsa i AVR Studio 6 do współpracy w tym trybie. Po odpięciu zworki (COM) wszystko zdycha j.w.
  • #6
    piotrva
    VIP Meritorious for electroda.pl
    I metoda z wyłączaniem sterowników nie działa? Na pewno wszystko robisz według wskazówek?
  • #8
    pawelvod
    Level 18  
    Ruszyło po odinstalowaniu tych sterowników z góry i zainstalowaniu innych. Teraz mam inny problem:).
    Eclipse coś nie widzi programtora. Wywala taki komunikat:
    Launching C:\Programowanie\WinAvr\bin\avrdude -pm16 -cstk500pp -PCOM4 -b115200 -Uflash:w:testavr.hex:a
    Output:
    Quote:

    avrdude: stk500v2_command(): command failed
    avrdude: initialization failed, rc=-1
    Double check connections and try again, or use -F to override
    this check.

    avrdude: stk500v2_command(): command failed
    avrdude: stk500hv_disable(): failed to leave programming mode
    avrdude finished
  • Helpful post
    #9
    dkrzys
    Level 2  
    Witam,
    miałem podobny problem z arduino (identyczne komunikaty z avrdude).
    W moim przypadku okazało się, że prędkość transmisji trzeba ustawić na 57600.
  • #10
    pawelvod
    Level 18  
    DZIAŁA:):)
    Jest tylkokilka kolejnych problemów. Po naduszeniu przycisku AVR całość czeka jakieś 15-20sek. zanim zacznie programować. Potem programowanie przebiega w normalnym tempie. Upierdliwe to strasznie zwłaszcza gdy się usuwa jakieś bugi i każde przeprogramowanie układu to +20sek. na oczekiwanie. Inny problem to delay_ms które nie działa jak powinno. Robię blink diodami z częśtotliwością 1hz (_delay_ms(1000)) a napiernicza to koło 100hz na oko. W target hardware oczywiście ustawione 16Mhz W winavr ten sam program działa ok. Następny problem to: gdy wchodzę w project->properties->avrdure [ATMEGA][stk500v2] - windows8:( jak odpalić? to pojawia mi się taki ekran. Dopiero przy którejś próbie wejścia mogę zmienić ustaiwenia.

    Teraz patrzę że taka zwloka w starcie to problem całego AVRDURE. Tylko atmel studio zaczyna programowanie z kopyta.
  • #12
    pawelvod
    Level 18  
    No wiem tylko jak już próbuję skonfigurować środowisko to ciągnę w jednym wątku. Pewnie to jakieś ustawienie optymalizacji kodu na szybkie wykonywanie (kompilator analizuje i przyspiesza kod). Pamiętam że zmieniałem to kiedyś w make, ale jak to zrobić tutaj nie wiem...

    Tak się jeszcze zastanawiam czy ustawienia portu w sterownikach mogą mieć jakieś znaczenie. Zmieniłem częśtotliwośc na 57600 i ustawiłem bufory odczytu i zapisu na minimum bo byly na max. W notepadzie i winavr działa teraz szybko. W eclipse dalej 20 sek. od kliknięcia zaczyna programować Teraz zauważyłem że pierwszą wiadomością na konsoli (na którą tyle czeka) zanim zacznie programować jest :
    Quote:
    avrdude: stk500_getsync(): not in sync: resp=0x00
  • #14
    dkrzys
    Level 2  
    Wypróbuj inne parametry do avrdude.

    Quote:
    avrdude: stk500_getsync(): not in sync: resp=0x00


    Jak widzisz on próbuje on najpierw połączyć się protokołem stk500 (nie udanie)
    dopiero potem próbuje stk500v2.

    Spróbuj innych ustawień parametru '-c' (programmer), podaj np.
    stk500v1 (to u mnie działa), lub stk500v2

    Dodano po 40 [minuty]:

    Quote:
    Robię blink diodami z częśtotliwością 1hz (_delay_ms(1000)) a napiernicza to koło 100hz na oko.


    OT: Trochę przesadziłeś... ludzkie oko przestaje widzieć mruganie już przy 20Hz. (dlatego w transmisji obrazu stosowano 24 klatki na sek - trochę powyżej granicy żeby obraz był postrzegany jako płynny).

    Jeśli _delay_ms nie odczekuje tyle ile trzeba to znaczy tylko że podana do kompilacji wartość F_CPU jest inna niż faktyczne taktowanie procesora.

    Przykładowo przy taktowaniu kwarcem 16MHz F_CPU opcja do kompilatora będzie:
    -DF_CPU=16000000UL
  • #15
    pawelvod
    Level 18  
    :) Mam tam 3 diody i buzzer na całym porcie. Diody świecą słabiej niż ta kontrolna zasilania a buzzer pierdzi zamiast piszczeć:) Można też poruszać płytką z diodami i wtedy widać mruganie przy większych częstotliwościach. Widać też jak przenosisz wzrok z diody na inny obiekt szybko... Mrygają i to sporo za szybko:)
    Zmieniłem programator na taki STKV2 i pomogło... Nie czeka tylko zaczyna od razu programować. Jest tylko jeden problem. Robi to dokładnie co drugi raz.
    Po dobrym zaprogramowaniu następne (niezależnie od tego ile czekam) wywala taki błąd:
    Quote:
    Launching C:\Programowanie\WinAvr\bin\avrdude -pm16 -cstk500v2 -Pcom4 -b57600 -u -Uflash:w:testavr.hex:a
    Output:
    avrdude: stk500_2_ReceiveMessage(): timeout
    avrdude execution aborted

    Co do kompilatora nie ma w ogóle info o częstotliwości procesora i pewnie tu problem. Nie bardzo wiem gdzie to dodać. Jedyne miejsce gdzie widzę wybór częstotliwości to AVR->Target Hardware.
    Code:
    #define F_CPU 160000000UL
    nie daje efektu. Dziwne jest jeszcze to że (chyba też co drugi raz) wywala mi tą informację z obrazka z postu powyżej...
  • #16
    piotrva
    VIP Meritorious for electroda.pl
    Jakie środowisko? ATmelStudio5/6?
    Jeśli tak to musisz wejść w opcje kompilatora i zdefiniować globalnie stałą F_CPU. Kilka razy już o tym na forum zdaje się pisałem, nawet gdzieś screeny były.
    Bo takiej definicji plik z delay może nie widzieć...
  • #17
    pawelvod
    Level 18  
    Środowisko eclipse Build id: 20120920-0800... Już sobie z tym delay poradziłem. Teraz zostaje problem tego że programator programuje układ co drugi raz... Nawet jak nie czekam na komunikat że brak odpowiedzi z programatora i naduszę cancel to wchodzę w programowanie i jest ok. Przy następnej próbie brak odpowiedzi i tak w kółko. Sprawdziłem jeszcze... Jak pomiędzy programowaniami wyjmę i włożę programator do usb to programuje za każdym razem.
  • #18
    dkrzys
    Level 2  
    Próbuj sam avrdude - z jakimi parametrami będzie chodził dobrze za każdym razem.
    U mnie avrdude jest uruchamiane tak:
    Code:
    avrdude -pm328p -cstk500v1 -P\\.\COM8 -b57600 -D -U "flash:w:C:\path\myhex.hex:i"

    Ja programuje arduino z m328, ale zwróć uwagę na opcję -D i "...:i" przy hex-ie, może o to chodzi
  • #19
    piotrva
    VIP Meritorious for electroda.pl
    Spróbuj jak zaprogramuje Ci spod avr studio - na niektórych pc avrdude muli strasznie...
  • #20
    pawelvod
    Level 18  
    Ok. To teraz najlepsze. Poeksperymentowałem i:
    notepad z winavr nie ma problemu z szybkim programowaniem. Za każdym razem procesor zaprogramowany bez problemu. Więc odpaliłem komendę z notepada z wiersza poelceń na pliku z eclipse i ...lipa. Okazuje się po kilku próbach że to plik hex generowany przez eclipsa sprawia że kolejne po nim programowanie trwa dłużej. Podmieniałem nazwy itd. Plik z eclipsa przy tym samym kodzie:
    Code: c
    Log in, to see the code
    jest kilkadziesiąt bajtów dłuższy i sprawia że programator po jego wgraniu (pierszy raz szybko) następne programowanie zaczyna od 20 sek. przerwy. Rozumie ktoś o co w tym wztskim może chodzić?
    Zmieniłem komputer i chciałem z duchem czasu przejść na eclipsa ze wszystkimi projektami... wygląda na to że jednak zostanę przy NP:)??
    Jakby ktoś spróbował pomóc to kod z kompilacji

    ECLIPSE:
    Code:
    make all 
    
    Building file: ../main.c
    Invoking: AVR Compiler
    avr-gcc -Wall -Os -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega16 -DF_CPU=16000000UL -MMD -MP -MF"main.d" -MT"main.d" -c -o "main.o" "../main.c"
    Finished building: ../main.c
     
    Building target: testavr.elf
    Invoking: AVR C Linker
    avr-gcc -Wl,-Map,testavr.map -mmcu=atmega16 -o "testavr.elf"  ./main.o   
    Finished building target: testavr.elf
     
    Invoking: AVR Create Extended Listing
    avr-objdump -h -S testavr.elf  >"testavr.lss"
    Finished building: testavr.lss
     
    Create Flash image (ihex format)
    avr-objcopy -R .eeprom -O ihex testavr.elf  "testavr.hex"
    Finished building: testavr.hex
     
    Create eeprom image (ihex format)
    avr-objcopy -j .eeprom --no-change-warnings --change-section-lma .eeprom=0 -O ihex testavr.elf  "testavr.eep"
    Finished building: testavr.eep
     
    Invoking: Print Size
    avr-size --format=avr --mcu=atmega16 testavr.elf
    AVR Memory Usage
    ----------------
    Device: atmega16

    Program:     154 bytes (0.9% Full)
    (.text + .data + .bootloader)

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


    Finished building: sizedummy
     

    17:04:58 Build Finished (took 516ms)

    winavr:
    Code:

    -------- 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: main.c
    avr-gcc -c -mmcu=atmega16 -I. -gdwarf-2 -DF_CPU=16000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./main.lst  -std=gnu99 -MMD -MP -MF .dep/main.o.d main.c -o main.o

    Linking: main.elf
    avr-gcc -mmcu=atmega16 -I. -gdwarf-2 -DF_CPU=16000000UL -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

    Creating load file for Flash: main.hex
    avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature main.elf 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: atmega16

    Program:     144 bytes (0.9% Full)
    (.text + .data + .bootloader)

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



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


    > Process Exit Code: 0
    > Time Taken: 00:00
  • #21
    McMonster
    Level 32  
    Pokaż jeszcze ustawienia projektu w Eclipse i wyjście z samego programowania.
  • #22
    pawelvod
    Level 18  
    AVRDure z Eclipse wypluwa to:
    Code:


    Launching C:\Programowanie\WinAvr\bin\avrdude -pm16 -cstk500v2 -Pcom5 -Uflash:w:testavr.hex:a
    Output:

    avrdude: AVR device initialized and ready to accept instructions

    Reading | ################################################## | 100% 0.16s

    avrdude: Device signature = 0x1e9403
    avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
             To disable this feature, specify the -D option.
    avrdude: erasing chip
    avrdude: reading input file "testavr.hex"
    avrdude: input file testavr.hex auto detected as Intel Hex
    avrdude: writing flash (154 bytes):

    Writing | ################################################## | 100% 0.39s

    avrdude: 154 bytes of flash written
    avrdude: verifying flash memory against testavr.hex:
    avrdude: load data flash data from input file testavr.hex:
    avrdude: input file testavr.hex auto detected as Intel Hex
    avrdude: input file testavr.hex contains 154 bytes
    avrdude: reading on-chip flash data:

    Reading | ################################################## | 100% 0.30s

    avrdude: verifying ...
    avrdude: 154 bytes of flash verified

    avrdude done.  Thank you.

    avrdude finished

    Tak jak wcześniej. Co drugi raz jest przekraczany czas połączenia. Jak wyciągnę z usb programator i włożę działa za każdym razem.
    Działający za każdym razem winavr
    Code:
    avrdude -p atmega16 -P com5     -c stk500v2    -U flash:w:main.hex 
    

    avrdude: AVR device initialized and ready to accept instructions

    Reading | ################################################## | 100% 0.14s

    avrdude: Device signature = 0x1e9403
    avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
             To disable this feature, specify the -D option.
    avrdude: erasing chip
    avrdude: reading input file "main.hex"
    avrdude: input file main.hex auto detected as Intel Hex
    avrdude: writing flash (144 bytes):

    Writing | ################################################## | 100% 0.38s

    avrdude: 144 bytes of flash written
    avrdude: verifying flash memory against main.hex:
    avrdude: load data flash data from input file main.hex:
    avrdude: input file main.hex auto detected as Intel Hex
    avrdude: input file main.hex contains 144 bytes
    avrdude: reading on-chip flash data:

    Reading | ################################################## | 100% 0.30s

    avrdude: verifying ...
    avrdude: 144 bytes of flash verified

    avrdude done.  Thank you.


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

    I jak pisałem wcześniej. To czy szybko czy się zwiesi zależy od pliku (tzn co go generowało). Oba sposoby wywołane z wiersza poelceń działają szybko jak pracują na pliku z wianr. Jak podam plik z eclips oba działają w ten dziwny sposób. Pierwszy raz szybko a potem wolno chyba że wyjmę programator z usb i włożę.