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

attiny2313, usbasp- problem, początkujący.

25 Wrz 2010 20:03 4400 21
  • Poziom 11  
    Witam. Niedawno kupiłem programator usbasp, 4 attinki2313 i zmontowałem prosty układ( 2 przyciski i 1 dioda) i podłączyłem go do komputera( przez programator) i wpisuje
    Code:
     sudo avrdude -p t2313 -c usbasp -v
    
    , wiadomo hasełko (jak już można z komendy wywnioskować mam linuxa(Ubuntu)) i oto wynik:
    Code:

    avrdude: Version 5.8, compiled on Jul 20 2009 at 14:56:17
             Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
             Copyright (c) 2007-2009 Joerg Wunsch

             System wide configuration file is "/etc/avrdude.conf"
             User configuration file is "/home/robert/.avrduderc"
             User configuration file does not exist or is not a regular file, skipping

             Using Port                    : /dev/parport0
             Using Programmer              : usbasp
             AVR Part                      : ATtiny2313
             Chip Erase delay              : 9000 us
             PAGEL                         : PD4
             BS2                           : PD6
             RESET disposition             : possible i/o
             RETRY pulse                   : SCK
             serial program mode           : yes
             parallel program mode         : yes
             Timeout                       : 200
             StabDelay                     : 100
             CmdexeDelay                   : 25
             SyncLoops                     : 32
             ByteDelay                     : 0
             PollIndex                     : 3
             PollValue                     : 0x53
             Memory Detail                 :

                                      Block Poll               Page                       Polled
               Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
               ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
               eeprom        65     6     4    0 no        128    4      0  4000  4500 0xff 0xff
               flash         65     6    32    0 yes      2048   32     64  4500  4500 0xff 0xff
               signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00
               lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
               lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
               hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
               efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
               calibration    0     0     0    0 no          2    0      0     0     0 0x00 0x00

             Programmer Type : usbasp
             Description     : USBasp, http://www.fischl.de/usbasp/

    avrdude: auto set sck period (because given equals null)
    avrdude: warning: cannot set sck period. please check for usbasp firmware update.
    avrdude: error: programm enable: target doesn't answer. 1
    avrdude: initialization failed, rc=-1
             Double check connections and try again, or use -F to override
             this check.


    avrdude done.  Thank you.


    Sprawdzam omomierzem wyjście SCK na programatorze i wejście SCL(to chyba tak ma bć SCK do SCL) i jest dobrze- zwarcie. Skąd błąd? wymieniłem attiny i też nie działa(oba attinki to nówka) może na linuxa potrzeba jeszcze jakiś sterowników, a o tym nie wiem i nic nie instalowałem.
  • Pomocny post
    Poziom 16  
    Włóż zworkę SLOW_SCK w USBasp i wtedy go wykryje. Fabrycznie t2313 ma ustawiony wewnętrzny oscylator 1MHz, więc bez tej zworki go nie wykryje. Mam nadzieję, że resztę portów dobrze masz podłączoną.
  • Pomocny post
    Poziom 34  
    Jeśli masz nowy firmware, to możesz programowo zmniejszyć prędkość: "-B10" lub więcej
    Code:
    C:\Documents and Settings\BoskiD>avrdude -c usbasp -p attiny2313 -B1
    

    avrdude: set SCK frequency to 750 kHz
    avrdude: error: programm enable: target doesn't answer. 1
    avrdude: initialization failed, rc=-1
             Double check connections and try again, or use -F to override
             this check.


    avrdude done.  Thank you.


    C:\Documents and Settings\BoskiD>avrdude -c usbasp -p attiny2313 -B10

    avrdude: set SCK frequency to 93.75 kHz
    avrdude: AVR device initialized and ready to accept instructions

    Reading | ################################################## | 100% 0.02s

    avrdude: Device signature = 0x1e910a

    avrdude: safemode: Fuses OK

    avrdude done.  Thank you.


    C:\Documents and Settings\BoskiD>


    -- edit:
    Co do samych zworek: przy środkowej (J4) widać ścieżkę prowadzącą do pinu RESET na złączu do programowania - ta zwora umożliwia aktualizację firmware'u. Dolna zwora (J5) powinna być więc od zmniejszenia częstotliwości.
  • Poziom 11  
    Przeleciałem od -B1 do -B10 i zawsze otrzymywałem coś w stylu :
    Code:

    sudo avrdude -p t2313 -c usbasp -B10

    avrdude: set SCK frequency to 93.75 kHz
    avrdude: warning: cannot set sck period. please check for usbasp firmware update.
    avrdude: error: programm enable: target doesn't answer. 1
    avrdude: initialization failed, rc=-1
             Double check connections and try again, or use -F to override
             this check.


    avrdude done.  Thank you.
  • Pomocny post
    Poziom 34  
    robif napisał:
    Code:
    avrdude: warning: cannot set sck period. please check for usbasp firmware update.

    Trzeba uaktualnić firmware, wtedy będzie można programowo zwolnić programator. Do tego trzeba założyć środkową zworkę po czym wgrać nowy firmware innym programatorem traktując usbasp jako układ programowany. Rozwiązanie chwilowe to założyć zworę Slow SCK
  • Poziom 24  
    avrdude obsługuje także parametr -i

    Cytat:
    -i <delay> ISP Clock Delay [in microseconds]


    Wiem, że takim sposobem także zwalniają nagrywanie. Jakiej wielkości argumentu używają, nie wiem.
  • Użytkownik usunął konto  
  • Poziom 34  
    sulfur: gdyby programator był podłączony pod lpt albo coś, to pewnie ta opcja by zadziałała. W USBAsp stary firmware pracuje w dwóch trybach: sprzętowy/szybki lub programowy/wolny. Jeśli opcja -B nie działa, to -i również nie będzie działać (przetestowałem u mnie na nowym firmware: -B działa, -i nie). Są dwie drogi, każda wymaga założenia innej zwory.

    _marek: Masz rację, wydaje Ci się. Avrdude umożliwia przekazanie ciągu znaków identyfikującego port, jednak do usbasp nie jest to wymagane: kod do obsługi usbasp sam wyszukuje usbasp ignorując to co zostało przekazane jako port
    Code:
    C:\Documents and Settings\BoskiD>avrdude -c usbasp -p attiny2313 -PBLABLA -B10 -v
    
    [...]
             Using Port                    : BLABLA
    [...]

    avrdude: set SCK frequency to 93.75 kHz
    avrdude: AVR device initialized and ready to accept instructions

    Reading | ################################################## | 100% 0.02s

    [...]
    C:\Documents and Settings\BoskiD>
  • Poziom 11  
    w sumie włożyłem do drugiego gniazda usp i jakoś nie znalazł, a te zwory to mam se wlutować?

    CZemu jesteście pewni, że B10 nie działa? może gdzie indziej tkwi problem?
  • Pomocny post
    Poziom 24  
    Porównaj sobie to, co wkleił BoskiDialer, gdy użył opcji B10, a jaki wynik sam otrzymałeś. Nie musisz wlutowywać zwory, możesz czymkolwiek metalowym zewrzeć dwa odpowiednie pady i nawiązać komunikację. Jeśli układ odpowie, problem rozwiązany.
  • Poziom 34  
    Najlepiej wlutować goldpiny.

    Wlutowanie na stałe zwory do aktualizacji firmware spowoduje, że procesor próbując wymusić na pinie RESET układu docelowego stan niski doprowadzi do zresetowania samego siebie, w efekcie nie będzie się dało niczego zaprogramować. Ta zwora służy do fizycznego połączenia pinu RESET ze złącza z pinem RESET procesora. Będzie się to wtedy objawiać w ten sposób:
    Code:
    C:\Documents and Settings\BoskiD>avrdude -c usbasp -p attiny2313
    
    avrdude: error: could not find USB device "USBasp" with vid=0x16c0 pid=0x5dc

    C:\Documents and Settings\BoskiD>avrdude -c usbasp -p attiny2313

    avrdude: error: usbasp_transmit: usb_control_msg: sending control message failed
    , win error: Urz╣dzenie pod│╣czone do komputera nie dzia│a.


    C:\Documents and Settings\BoskiD>avrdude -c usbasp -p attiny2313
    avrdude: error: could not find USB device "USBasp" with vid=0x16c0 pid=0x5dc

    C:\Documents and Settings\BoskiD>



    Wlutowanie na stałe drugiej zwory spowoduje wymuszenie pracy w trybie wolnym bez możliwości programowego przyspieszenia.


    Tak więc obie zwory muszą być zdejmowalne (zawsze mówiąc zwora mam na myśli drucik pomiędzy dwoma polami na płytce stąd awaryjnie ta dłuższa wypowiedź), jakkolwiek na czas aktualizacji firmware można wcisnąć jakiś drucik na chwilę aby przeprogramować procesor.
  • Poziom 11  
    A jak wywnioskować które są odpowiedzie?

    edit: chyba nic się nie stanie jak strzele 2 razy?
  • Pomocny post
    Poziom 24  
    Były już te pady wymienione w tym temacie przez BoskiDialer kilka postów wyżej.

    BoskiDialer: ja mam na myśli, że jak ma pod ręką układ to może wpisać polecenie, np śrubokrętem przytrzymać dwa pady tak, żeby się zwierały a drugą ręką nacisnąć enter. Może to niepedagogiczne, ale sam tak robię, zastępując zworkę, zamiast jej szukać etc. Będzie miał też pewność, czy w tym problem.
  • Pomocny post
    Poziom 34  
    robif: Wskazówki znajdziesz w czwartym poście tematu w edytowanej części. Jakkolwiek: jeśli chcesz uaktualnić firmware, zewrzyj J4 (środek), jeśli chcesz Slow SCK, zewrzyj J5 (dół)

    sulfur: Też stosuję to rozwiązanie: jedna ręka trzyma jakiś drucik (gdy brak wlutowanych goldpinów), druga wciska enter.
  • Poziom 11  
    No, już to odkryłem :D, jednak slowSCK nie pomaga, a nie mam drugiego programatora do zaprogramowania tego, to jest moje pierwsze starcie z mikrokontrolerami.

    edit:
    Możecie mnie np. upewnić czy to nie z powodu zepsutego scalaka(to już 2 zepsute :/) lub programatora (szkoda 40zł)

    edit2: programator chyba w porządku bo jak zwieram slow to dłużej świeci dioda danych niż bez niej.

    edit3: działa, chyba coś źle było zlutowane. :D
  • Poziom 21  
    Mi także pojawia się komunikat:
    avrdude: warning: cannot set sck period. please check for usbasp firmware update

    Pomimo tego układ programuje się poprawnie. Najważniejszym było poprawne ustawienie FuseBit`ów
  • Poziom 13  
    A ja mam inny problem, mój usbasp jest troszkę niestabilny, czasami działa, czasami nie kontaktuje się prawidłowo z uC docelowym (kilka razy zaprogramowałem nim poprawnie). W ten sposób zepsuł mi prawdopodobnie fusebity w jednym uC (atmega32). Gdy próbowałem na innym to raz na kilkanaście prób odczytania uC nieprawidłowo odczytuje sygnaturę. Obie atmegi miały zegar ustawiony na wewnętrzny oscylator 8mhz.

    Wie ktoś co może być przyczyną? Zasilanie usb niestabilne? Może nie powinno się programować na płytkach stykowych? W ten sam sposób programowałem najtańszym programatorem lpt i działało.
  • VIP Zasłużony dla elektroda
    yetihehe napisał:
    A ja mam inny problem, mój usbasp jest troszkę niestabilny, czasami działa, czasami nie kontaktuje się prawidłowo z uC docelowym (kilka razy zaprogramowałem nim poprawnie). W ten sposób zepsuł mi prawdopodobnie fusebity w jednym uC (atmega32). Gdy próbowałem na innym to raz na kilkanaście prób odczytania uC nieprawidłowo odczytuje sygnaturę. Obie atmegi miały zegar ustawiony na wewnętrzny oscylator 8mhz.

    Wie ktoś co może być przyczyną?
    Wstaw kondensator blokujący 100nF w zasilaniu układu...
  • Poziom 13  
    Light-I napisał:
    Wstaw kondensator blokujący 100nF w zasilaniu układu...

    Niestety nie ma różnicy. Sprawdziłem kilka kombinacji:
    Na 1mhz błędów komunikacji jest mniej, ale nadal są.
    Przy włączonej zworce SlowSCK błędów nie ma nawet po kilkuset próbach.
  • VIP Zasłużony dla elektroda
    A zasilanie jest stabilne, gdy linie programowania pracują ?
  • Poziom 13  
    Raczej jest stabilne, nie mam oscyloskopu więc nie sprawdzę, ale przeprowadzę dzisiaj jeszcze kilka testów (na przykład na zewnętrznym zasilaniu). Sprawdzałem, czy to może być wina firmware, ale ani najnowsza wersja ani z 2006 (komuś ta wersja poprawiła taki sam problem) nie pomogły.

    Edit: Ok, znalazłem rozwiązanie problemu, jeden z układów podłączonych do procka na płytce powodował niestabilności.
  • Poziom 11  
    Musze napisać jeszcze ten post, żeby zakończyć temat. Jak pisałem błędem było prawdopodobnie niepoprawne zlutowanie układu do którego programator był podłączony. Po prostu zlutowałem raz jeszcze i działał. Jednak dziękuje wszystkim za pomoc, być może dla kogoś innego okaże się przydatna.