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

ATtiny2313 + Fuse Bits + program

Kubbaz 26 Sie 2011 10:47 3148 13
  • #1 9864598
    Kubbaz
    Poziom 26  
    Witam wszystkich Elektrodowiczów!

    Nie wiem czy mnie moderatorzy nie zlinczują za ten temat (chociaż dział poprawny), ale jak wiadomo sprawa Fuse Bitów jest dosyć delikatną i często (99 % przypadków) powoduje zablokowanie mikrokontrolera, dlatego właśnie tu piszę.

    Potrzebuję ustawić w mikrokontrolerze AVR ATtiny2313 (ATMEL) Fuse Bity tak, aby mikrokontroler pracował na wewnętrznym oscylatorze (RC) z częstotliwością 4 MHz. Dokumentacja mówi, że dla takiego przypadku należy ustawić Fuse Bity:
    - CKSEL3 na "0"
    - CKSEL2 na "0"
    - CKSEL1 na "1"
    - CKSEL0 na "0"
    CKSEL3-0 = 2

    lub

    - CKSEL3 na "0"
    - CKSEL2 na "0"
    - CKSEL1 na "1"
    - CKSEL0 na "1"
    CKSEL3-0 = 3

    Z tego co pamiętam z organoleptycznego programowania AVRów, to bity SUT1-SUT0 powinny być ustawione na tryb "Slowly rising power", żeby mikrokontroler w ogóle ruszył z mijesca, czemu odpowiada ustawienie:
    - SUT1 na "1"
    - SUT1 na "0"
    SUT1-0 = 2

    Programuje AVRy programatorem AVR USBasp pod OS WinXP SP3.

    Teraz takie moje pytanie:
    1. Jakim sprawdzonym programem polecacie zaprogramować Fuse Bity?
    Z tego co pamiętam, kiedyś programowałem Fuse Bity w ATmega8 na programatorze STK200 (na LPT) z użyciem programu PonyProg2000 i tam była taka zmyłka, że zaznaczone pola ("fajeczką") przy danym Fuse Bicie oznaczały bit nieaktywny! (czyli odwrotnie niż zwykła ludzka logika podsuwa na myśl), więc trzeba było zaznaczać dokładnie odwrotnie niż się chciało. Więc bardzo proszę o uprzedzanie mnie, jeśli program będzie miał taki lub inny "feature". Po prostu nie mam za wiele mikrokontrolerów do zablokowania - w zasadzie musi to pójść na pierwszym i ostatnim razem ;).
  • #2 9864644
    piotrva
    VIP Zasłużony dla elektroda
    Cóż, ja osobiście polecam do tego stronkę: http://www.engbedded.com/fusecalc/ + AvrDude
    Na stronce sobie wyliczasz wartości heksadecymalne bajtów HIGH LOW i EXTENDED i potem w AvrDude wklepujesz te 3 liczby szesnastkowe.

    Jak chcesz mieć jeszcze większą pewność to do tej kostki możesz użyć mkAvrCalculator: http://atnel.pl/oprogramowanie-pc/mkavrcalculator wersja darmowa akurat w 100% obsłuży Attiny2313 i tym programem to się trzeba postarać, żeby zablokować mikrokontroler.

    ---
    To rady dla Ciebie, ja osobiście posiadam klon STK500 i AVR Dragon i nimi programuję bezpośrednio spod AvrStudio4 i wbudowanego klakulatora tych wartości.
  • #3 9864669
    Kubbaz
    Poziom 26  
    piotrva napisał:
    możesz użyć mkAvrCalculator: http://atnel.pl/oprogramowanie-pc/mkavrcalculator wersja darmowa akurat w 100% obsłuży Attiny2313 i tym programem to się trzeba postarać, żeby zablokować mikrokontroler

    Ściągnąłem, no i muszę powiedzieć, że ten program wygląda nieźle. Wieczorem zrobię podejście do swojego ATtiny2313 i dam znać jak poszło. (mam nadzieję, że ten post będzie "chwalący", a nie "ubolewający" ;)).

    Do usłyszenia potem!
  • #4 9872526
    Kubbaz
    Poziom 26  
    Witam po pewnym czasie!

    ATtiny2313 udało się podłączyć do programatora USBasp i odczytać Fuse Bity oraz sygnaturkę :). uC chodzi na wewnętrznym oscylatorze 8 MHz i ma sygnaturkę 1E910A. Problem w tym, że w oknie konsoli programu mkAVR Calculator pojawia się błąd:
    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.


    Taki sam błąd pojawia się, gdy chcę wgrać soft do uC przy użyciu AVRDUDE (w wersji 5.10, 19.02.2010 r. 10:45:23, ze ztrony www.bdmirco.com), używajac tylko pliku *.bat (-> avrdude -p t2313 -c usbasp -e -U flash:w:test.hex).
    Co może być nie tak?
  • #7 9872962
    Kubbaz
    Poziom 26  
    snnaap napisał:
    Sprawdź prawidłowość połączeń.

    Skoro programator odczytuje sygnaturę mikrokontrolera, to chyba połączenia elektryczne są OK?

    blue_17 napisał:
    jakiej długości masz kabel

    Całkowita długość kabla od nóżek mikrokontrolera do złącza programatora USBasp wynosi 45 cm (taśma 10-cio żyłowa z rastrem zgodnym pod złącze 2x5 pinów).

    Czy pull-up'y (rezystory 10 kΩ podciągające do Vcc=5 V) na liniach programowych (MOSI, MISO, !RESET, SCK) są konieczne?
  • #8 9873137
    mirekk36
    Poziom 42  
    Program MoAvrCalculator odczytuje ci normalnie sygnaturę? pokazuje nazwę procka? o odczytuje fusebity? i mówisz że są ustawione tak, że taktowanie to 8MHz?

    ale czy zastanowiłeś się, że procek ten domyślnie z fabryki ma włączony fusebit CKDIV8 ???

    zajrzyj że sobie do zakładki "Fusy uproszczone" widać go tam zaznaczonego zapewne jak na dłoni ....

    i dlatego program nie chce ci dalej robić żadnych operacji bo procek śmiga na 1MHz.

    Ale widać też że nie masz najświeższej wersji programu MkAvrCalculator. Wejdź i pobierz go jeszcze raz ze stronki atnel.pl. pomimo to że ma ten sam numerek "build 57" to jest nowszy

    Generalnie nowsza wersja po sprawdzeniu, że procek jest taktowany 1MHz sama włącza sobie ptaszka programowego "SLOW_SCK" a starsza nie. Więc musiałbyś go sam kliknąć w programie żeby coś zapisywać do procka pozostałymi opcjami

    a najlepiej to wyłącz ten CKDIV8 i taktuj procka 8MHz to wtedy nie będziesz miał takich problemów i powolnego programowania.
  • #10 9873850
    Kubbaz
    Poziom 26  
    mirekk36 napisał:
    Program MoAvrCalculator odczytuje ci normalnie sygnaturę? pokazuje nazwę procka? o odczytuje fusebity? i mówisz że są ustawione tak, że taktowanie to 8MHz?
    ale czy zastanowiłeś się, że procek ten domyślnie z fabryki ma włączony fusebit CKDIV8 ???
    zajrzyj że sobie do zakładki "Fusy uproszczone" widać go tam zaznaczonego zapewne jak na dłoni ....
    i dlatego program nie chce ci dalej robić żadnych operacji bo procek śmiga na 1MHz.

    Ok, odznaczyłem Fuse Bit CLKDIV8 w zakładce "Fusy uproszczone" i jest lepiej - MkAVRCalculator komunikuje się z Attiny2313, podaje jego nazwę i sygnaturę oraz nie wyświetla błędu "initialization failed, rc=-1 " w oknie konsoli programu.
    Natomiast podczas próby załadowania programu (pliku *.hex) do mikrokontrolera pojawia się inny błąd:
    Microsoft Windows XP [Wersja 5.1.2600]
    (C) Copyright 1985-2001 Microsoft Corp.
    
    C:\Documents and Settings\Administrator>D:\Elektronika\Stare\test\zaprogramuj.ba
    t
    
    C:\Documents and Settings\Administrator>REM Plik  procedury programowania ATMega
    8
    
    C:\Documents and Settings\Administrator>avrdude -p t2313 -c usbasp -e -U flash:w
    :test.hex
    
    avrdude: AVR device initialized and ready to accept instructions
    
    Reading | ################################################## | 100% 0.03s
    
    avrdude: Device signature = 0x1e910a
    avrdude: erasing chip
    avrdude: reading input file "test.hex"
    avrdude: error opening test.hex: No such file or directory
    avrdude: input file test.hex auto detected as invalid format
    avrdude: can't open input file test.hex: No such file or directory
    avrdude: write to file 'test.hex' failed
    
    avrdude: safemode: Fuses OK
    
    avrdude done.  Thank you.

    Najgorsze jest to, że podaje że nie ma takiego pliku (test.hex) lub folderu! A plik taki istnieje w tym samym folderze co plik *.bat z procedurą wykonania programowania w AVRDUDE.


    mirekk36 napisał:
    a najlepiej to wyłącz ten CKDIV8 i taktuj procka 8MHz to wtedy nie będziesz miał takich problemów i powolnego programowania.

    Wyłączyłem ten bit i przestawiłem zworkę w programatorze na SLOW SCK oraz ustawiłem opcję Auto SCK speed w programie MkAVRCalculator - niestety nie pomogło.

    mirekk36 napisał:
    Ale widać też że nie masz najświeższej wersji programu MkAvrCalculator. Wejdź i pobierz go jeszcze raz ze stronki atnel.pl. pomimo to że ma ten sam numerek "build 57" to jest nowszy

    Zarówno moja wersja programu jak i ta, którą polecasz są skompilowane 30 czerwca 2011 r. o godz. 23:14 i ma rozmiar 11069 kB, dlatego domniemam, że to jest ta sama wersja programu.

    blue_17 napisał:
    Pokaż schemat i jaka wersja programatora.

    Progrmator kupiłem na Allegro.pl, i niestety nie mam już w historii zakupów tej aukcji, ale podejrzewam, że schemat wygląda tak jak dla wszystkich wersji programatora USBasp: USBasp ze strony Fischl.de. Co do wersji w jakiej wykonany jest programator, to mogę napisać wieczorem jak będę miał programator w ręku ;).

    Wracając jeszcze do tych pull-up'ów - czy wewnętrzne pull-up'y wystarczą czy konieczne jest dołączenie zewnętrznych rezystorów pull-up (np. 10 kΩ).
  • #11 9873875
    mirekk36
    Poziom 42  
    Tylko pin RESET zawsze podciągasz rezystorem 10K do VCC. Pozostałe piny ISP zostaw bez żadnego podciągania.

    Dodano po 3 [minuty]:

    PODSTAWOWY BŁĄD JAKI ROBISZ - jest taki, że jak to bywa u początkujących, zrobiłeś sobie pliki HEX gdzieś na pulpicie w jakichś tam dalszych folderach. Potem masz foldery ze spacjami w środku albo co gorsze może i z polskimi ogonkami.

    Wgraj AVRDUDE do jakiegoś prostego folcedu np:

    c:\avrdude

    a program który kompilujesz też gdzieś bezpośrednio na dysk C do folderu czy folderów o krótkich nazwach bez spacji i polskich ogonków

    Dodano po 4 [minuty]:

    A już najdziwniejsze jest dla mnie to co opisujesz o jakimś pliku test.hex, którego rzekomo nie ma ani folderu w którym się znajduje. To powiedz mi jak ty w ogóle programujesz ten wsad ??????? ręcznie??? Jakimś plikiem *.BAT ???? jeśli tak to ja się nie dziwię, że masz takie dziwolągi.

    Przecież w programie MkAvrCalculator można zaznaczyć opcję "ZAPIS" a następnie pozycję "FLASCH" w ramce "rodzaj pamięci", w polu Flash trzeba będzie wybrać ładnie w okienku plik hex który chcesz wrzucić do procka i jechane - wszystko idzie jak po maśle. A ty cudujesz z jakimiś BAT'ami ;)
  • #12 9873911
    Kubbaz
    Poziom 26  
    Skąd mogę ściągnąć AVRDUDE w wersji 5.10 lub 5.11 jako *.EXE? Na stronie domowej savannah.nongnu.org są tylko kody źródłowe do AVRDUDE.

    ----------------------------------------------------------------------
    mirekk36 napisał:
    A już najdziwniejsze jest dla mnie to co opisujesz o jakimś pliku test.hex, którego rzekomo nie ma ani folderu w którym się znajduje. To powiedz mi jak ty w ogóle programujesz ten wsad ??????? ręcznie??? Jakimś plikiem *.BAT ???? jeśli tak to ja się nie dziwię, że masz takie dziwolągi.

    Przecież w programie MkAvrCalculator można zaznaczyć opcję "ZAPIS" a następnie pozycję "FLASCH" w ramce "rodzaj pamięci", w polu Flash trzeba będzie wybrać ładnie w okienku plik hex który chcesz wrzucić do procka i jechane - wszystko idzie jak po maśle. A ty cudujesz z jakimiś BAT'ami :Wink:.

    Wiesz co mirekk36, dawno temu (bo jakieś 5-6 lat temu), tak to się programowało przez tego *.bat'a - i ja tak robiłem i tak było zawsze dobrze. Miałem nieco przerwy z AVRami, a potem przeszedłem na ARMy Cortexy i nieco zapomniałem o programowaniu AVR, nie wspominając o tym, że zmieniły się narzędzia ;). Fakt, można wgrać hexa przez MkAVRCalculator - miałem to pole zaznaczone na szaro (bo program był tryb ie odczytu) i myślałem, że nie można wgrywać hexa przy wersji darmowej tego programu ;).
    Jak wrócę do domu, to zweryfikuje wszystko i dam odpowiedź jak poszło ;).
  • Pomocny post
    #13 9873979
    mirekk36
    Poziom 42  
    To nie jest jakaś darmowa ograniczona w funkcjonalności wersja ;) Ona działa w pełni funkcjonalnie tyle tylko że dla wybranych mikrokontrolerów, i to tych popularnych jak: ATmega8, ATmega128, ATtiny2313 czy też ATmega162. Działają wszystkie opcje - wszystkie.

    A AVRDUDE nie musisz znikąd ściągać ;) - wchodzisz do zakładki "Ustawienia" tam na dole masz ramkę "AVRDUDE" i w niej klawisz "Instaluj" Ot wszystko pod ręką. I nawet jest to specjalna i rozszerzona werjsa AVRDUDE, która na dzień dzisiejszy jak ktoś ma już pełną wersję to obsługuje więcej procków niż standardowy AVRDUDE bo doszyły takie jak:

    ATmega48PA, ATmega88PA i jeszcze jakieś ale już nawet nie pamiętam. Tymczasem w standardowej wersji AVRDUDE ich nie uświadczysz niestety :( więc instaluj KONIECZNIE AVRDUDE z tego programu MkAvrCalculator bo on ma jeszcze inne fiuczery wbudowane potrzebne do działania całości w tym tej programowej obsługi SLOW_SCK (dzięki czemu możesz sobie wylutować zworkę SLOW_SCK z programatora ;)
REKLAMA