logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

USBasp na Ubuntu 12.04 - konieczność odłączania po programowaniu mikrokontrolera

quniq 09 Cze 2012 10:48 2407 28
  • #1 10982379
    quniq
    Poziom 21  
    Witam po raz kolejny.
    Mam problem z usbasp. Udało mi się go zmusić do działania pod linuchem (Ubuntu 12.04), mam już dostęp do portów bez użycia sudo, ale pojawił się kolejny problem, który dla własnej wygody warto usunąć.
    Mianowicie: po każdym zaprogramowaniu mikrokontrolera muszę odłączać programator, inaczej konsola wyrzuca błąd:
    Cytat:
    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.


    Zdaje się, ze widziałem gdzieś rozwiązanie tego problemu, ale teraz jak na złość od 2 godzin nie mogę go znaleźć. Zna ktoś rozwiązanie?
    Dzięki z góry.
  • #2 10982415
    LordBlick
    VIP Zasłużony dla elektroda
    Wiesz, jakbym spojrzał na układ połączeń, to pewnie bym znalazł rozwiązanie. Powyższy komunikat nie oznacza problemów z programatorem, tylko brak komunikacji z µC. Sprawdź co się dzieje na Reset, czy połączenie GND z USBAsp nie jest mizerne, czy zegar µC jest stabilny, oraz napięcie zasilania.
  • #3 10982440
    quniq
    Poziom 21  
    Wina leży po stronie softu w komputerze,a dokładniej linuxa. Pod windowsem nie było tego problemu.
    Poza tym uc wstaje normalnie, czyli reset działa.

    Problem lezy po stronie eclipse, a raczej wtyczki AVR, a jeszcze bardziej po stronie mojej niewiedzy.
    Usunąłem parametr -b, dodałem -B10 i śmiga. Że wcześniej na to nie wpadłem... Najwidoczniej forum działa motywująco :D
  • #4 10982537
    LordBlick
    VIP Zasłużony dla elektroda
    Moja instalacja linuxa (PLD Th) działa bezproblemowo z USBAsp, wiec to pewnie kwestia konfiguracji.
  • #5 10982744
    gaskoin
    Poziom 38  
    Już wszystko działa ?

    quniq napisał:
    Udało mi się go zmusić do działania pod linuchem (Ubuntu 12.04), mam już dostęp do portów bez użycia sudo


    Dodałeś regułę, czy zastosowałeś jakiś barbarzyński sposób ?
  • #6 10982788
    tymon_x
    Poziom 30  
    quniq napisał:
    Problem lezy po stronie eclipse, a raczej wtyczki AVR, a jeszcze bardziej po stronie mojej niewiedzy.

    Zdecydowanie i wyłącznie wchodzi tylko ta ostatnia opcja. Sam korzystałem na Ubunciaku z tego zestawienia, i nie było żadnego problemu (USBasp, JTAG ICE, USB mk-II), firmowe Atmelowskie oraz amatorskie składaki.
  • #7 10982789
    quniq
    Poziom 21  
    Dodałem regułę. Piszę, że to osiągnięcie, bo we wszystkich poradnikach numer MODE był zły (mam 0777, nie wiem gdzie to doczytałem).

    Zdaje się, że już działa.

    Btw, czym jest parametr -b i -B dla avr-gcc?
  • #9 10982822
    gaskoin
    Poziom 38  
    Dla USBasp ten parametr można pominąć.
  • #10 10984186
    quniq
    Poziom 21  
    Tak, przepraszam, nie kompilator a avrdude, mea culpa.

    Bez -B nie działa, wyrzuca błąd rc=-1. Muszę go zwolnić, działa maksymalnie do 100kHz (być może płytkę źle zrobiłem, ale z tego co czytałem to nie tylko ja mam ten problem).
  • #11 10984542
    gaskoin
    Poziom 38  
    Też mam USBASP, sam robiłem ze schematu i nie było z nim żadnych problemów po Linuksem (mint).
  • #12 10985087
    quniq
    Poziom 21  
    Ja niestety mam. Jest też opcja, że ja coś popsułem. Może to być kwestia kwarcu? Programator działa na 12MHz, ja w płytce mam 11059200Hz.
    Tak sobie pomyślałem, że faktycznie mogę mieć coś nie tak z resetem. Dałem dość dużą stałą, bo resetuję za pomocą 22k i 1u(może być wyschnięty).
  • Pomocny post
    #13 10985211
    LordBlick
    VIP Zasłużony dla elektroda
    quniq napisał:
    Programator działa na 12MHz, ja w płytce mam 11059200Hz.
    No to wyszło szydło z worka. Najgorsze co może być, to jak ktoś zataja co sobie po cichu zmienił w stosunku do schematu projektu i potem się żali na zwykle nie występujący problem...
    Obsługa USB wymaga wielokrotności 12MHz. Linux trzyma się standardów.
    http://lmgtfy.com/?q=USB+clocking+site%3Ausb.org[quote:3976b26334="quniq"> target="_blank" rel="nofollow noopener ugc" class="postlink inline" title="" >http://lmgtfy.com/?q=USB+clocking+site%3Ausb.org[quote:3976b26334="quniq napisał:
    Tak sobie pomyślałem, że faktycznie mogę mieć coś nie tak z resetem. Dałem dość dużą stałą, bo resetuję za pomocą 22k i 1u(może być wyschnięty).
    Znowu jakiś patent, o którym się dowiadujemy dopiero teraz ? Uruchom podstawowy schemat, a potem sobie na własną odpowiedzialność patentuj... ;)
    Linia RESET nie powinna być do żadnych kondensatorów podpinana, bo programowanie po ISP odbywa się w stanie resetu i uszkadzasz powoli to wyjście w programatorze. Mikrokontroler ma w sobie już zawarty mechanizm power on reset. Po zaprogramowaniu i przetestowaniu można dołożyć kondensator, ale maksymalnie 100nF w silnie narażonym na zakłócenia środowisku.
  • #14 10985259
    quniq
    Poziom 21  
    Zaraz.
    Programator kupiłem na allegro, mówię o elementach w MOIM projekcie :)
    Zmylił mnie ten dokument:
    http://www.google.pl/url?sa=t&rct=j&q=&esrc=s...KI_da5-r-QAAwtW3A&sig2=mb_HlkiSeSZx7Wa3HFw3nQ
    Z którego po lekturze wynika, ze faktycznie, kondensator jest potrzebny, ale tak jak mówisz, kiedy środowisko jest mocno zaszumione. Zmienię też ten rezystor na mniejszy, wywalę kondzior i zobaczymy co z tego będzie.

    Czy to mogło być przyczyną problemów?

    EDIT: przelutowałem. Działa jak należy. Więc mam nauczkę na przyszlość, że informacje o 8051 niekoniecznie muszą być aktualne dla atmegi :D
    Dzięki za pomoc.
  • #16 10990847
    blue_17
    Poziom 32  
    Żeby rozwiązać raz na zawsze problemy z USBasp w Ubuntu a dokładnie dostępnością do portów napisałem ten artykuł a właściwie nawet 2 :)

    starsza wersja ubuntu od 12.04

    http://www.blue17.elektroda.eu/usbasp/559

    i dla wersji 12.04

    http://www.blue17.elektroda.eu/usbasp/1161

    Jeśli znajdę troch czasu to napiszę skrypt żeby tylko odpalić i mieć już wszystko z głowy

    Pozdrawiam
  • #17 10990861
    quniq
    Poziom 21  
    Widziałem te artykuły, niestety żaden 'wprost' nie dał rozwiązania. Gdzieś na zagramanicznym portalu (niestety nie pamiętam gdzie...) przeczytałem, że 'MODE' ma być, jak już wspomniałem, 0777. Możesz się do tego ustosunkować? ;)
  • #18 10990896
    blue_17
    Poziom 32  
    Nie za bardzo wiem o co chodzi o jakie MODE :?: może kolega jakoś to wyjaśni bo problem tkwi w tym że wiele osób nie doczytuje że plik trzeba umieszczać w folderze z uprawnieniami administratora. Empirycznie mogę zapewnić że po tym programator działa bez dodania dodatkowych praw ale można nadać jak ktoś chce prawa do pliku z regułami 775 aczkolwiek nic takiego nie musiałem robić

    na 90% obstawiam ze coś jest nie tak sprzętowo

    Pozdrawiam
  • #19 10990948
    quniq
    Poziom 21  
    W pliku USBasp rules jest parametr MODE. W Twoim pliku jest ustawiony na 0664.
    Aż wyedytowałem plik i uruchomiłem ponownie komputer, żeby sprawdzić, czy po zmianie na 0664 zadziała. I nie działa.
    Poza tym, jak już napisałem, uporałem się z tym problemem, więc akurat tu doczytałem, że trzeba przez sudo ;) Nie w tym tkwi problem.
    Nie uznawał bym tego za jakiś poważny błąd, mam wrażenie, że to ubuntu (12.04) jest albo niedopracowane, albo po prostu nie dogaduje się z moim laptopem.
  • #21 10991021
    quniq
    Poziom 21  
    Jak napisałem - zmieniłem MODE na 0777. Już nie pamiętam gdzie to znalazłem...
  • #22 10991097
    gaskoin
    Poziom 38  
    ATTR{idVendor}=="16c0", MODE="666", GROUP="gaskoin"


    grupa ma być oczywiście taka, do której należysz. Można też stworzyć grupę, która ma mieć dostęp do usbasp i dodać siebie do niej. Można też dowolnie to wykombinować, byle byś był w tej grupie :)
  • #23 10991276
    quniq
    Poziom 21  
    Taaaaak... A dodawałem się do grupy :D Niestety zapomniałem tego dokonać po wrzuceniu innego pliku. :P Znowu namieszałem. Ale w takim razie pytanie dlaczego działa :D
  • #24 10991912
    LordBlick
    VIP Zasłużony dla elektroda
    Moje 0.05PLN w temacie reguł udev-a dla USBasp:
    ACTION=="add|change", ATTR{product}=="USBasp", MODE="0660", GROUP="usb", SYMLINK+="usbasp%n"
    Przy okazji mamy ładną nazwę urządzenia /dev/usbasp i to numerowaną (użyteczne, gdy chcemy obsługiwać więcej niż jeden programator). Oczywiście musi być w systemie grupa "usb" i programujemy z konta, które należy do tej grupy.
    PLD Linux Th.
  • #26 10992386
    gaskoin
    Poziom 38  
    Załamujecie mnie. Czy help/manual to już dawno zapomniane twory?
    MODE to prawa jakie będzie miało dane urządzenie. Zanim padną następne pytania:

    r - odczyt
    w - zapis
    x - uruchamianie

    o - właściciel
    g - grupa
    a - wszyscy

    jest to poukładane tak:

    o[rwx]g[rwx]a[rwx]


    Czyli przykładowe MODE = 125 rozwijamy binarnie i mamy 001 010 101. Wg powyższego schematu właściciel może tylko uruchamiać, grupa może tylko zapisywać a wszyscy mogą czytać i uruchamiać. Jeśli MODE się ustawi na 777 to każdy może robić co chce. Spróbujcie polecenie
    i znajdźcie tam wasze urządzenie to się wszystko wyjaśni.
REKLAMA