Ta strona używa ciasteczek (cookies), dzięki którym możliwe jest między innymi poprawne wyświetlanie elementów strony, zapamiętywanie sesji użytkowników. Dodatkowo na stronie znajduje się skrypt Google Analytics oraz PIWIK (statystyki oglądalności). Znajdują się również skrypty przycisków serwisów społecznościowych Facebook, Twitter i Google+ oraz YouTube, które również mogą zapisywać ciasteczka.

AVRFusesCalc - poradnik

Na początku wyjaśnię dlaczego aplikacja ma taką a nie inną formę graficzną. Otóż zanim zabrałem się za tworzenie GUI, poświęciłem trochę czasu na sprawdzenie jak to wygląda od strony graficznej w programach na PC, z nadzieją znalezienia inspiracji. Większość tych programów miała małe, zgrabne okna w których dokonywało się ustawień, i to była ich zaleta. Niestety miały też coś co mi nie pasowało, ogólny bałagan w tych oknach oraz zakładki. W jednej zakładce wybierało się mikrokontroler, w innej ustawiało fusebity, w kolejnej wybierało się i ustawiało lockbity, potem zaś trzeba było wrócić do pierwszej żeby wgrać to wszystko do mikrokontrolera, a do tego jeszcze zaznaczyć co chcemy wgrać. Zresztą jedyna makowa aplikacja, której sam używałem, też nie odbiegała zbytnio od tego standardu, no może była bardziej uporządkowana. Zakładki były czymś czego chciałem uniknąć. Moja koncepcja była taka, żeby użytkownik cały czas widział co ustawił a nie zastanawiał się w jakiej zakładce co zmienił, i dodatkowo żeby robił to w określonej kolejności. Tak więc po rozpoznaniu mikrokontrolera i wczytaniu jego ustawień, kolejnym krokiem ma być ewentualna zmiana tychże ustawień, a więc fusebity, lockbity. Dokonuje zmian i już się nie zastanawia czy ma teraz zaznaczyć że zapisuje fusebity czy też lockbity, naciska jeden przycisk i wszystko ląduje w mikrokontrolerze. Przycisk od lockbitów jest w miejscu, w które celowo trzeba skierować wskaźnik myszy, z dala od najczęściej zmienianych ustawień, czyli fusebitów. Jeżeli nie ma zamiaru niczego zmieniać w ustawieniach, a chce tylko wgrać lub odczytać wsad, ma do tego osobne przyciski które zresztą są niewidoczne dopóty, dopóki nie wskaże się pliku do zapisu / odczytu.

Mam nadzieję żo po tych wyjaśnieniach, użytkownicy korzystający z mojej aplikacji na laptopach wybaczą mi to, że zajmuje im ona znaczną część ekranu a nawet wychodzi po za niego. Chciałem uniknąć bałaganu spowodowanego upakowaniem tak dużej ilości ustawień w małych oknach, no i zakładek :)

Przejdźmy teraz do opisu jak korzystać z programu.

Pierwszą czynnością jaką musimy wykonać po uruchomieniu aplikacji pierwszy raz, jest ustawienie preferencji. W tym celu z menu głównego wybieramy opcję "AVRFusesCalc - Preferencje...".

pic1Zaczynając od góry, najpierw ustalamy pełną ścieżkę dostępu do "avrdude". W tym celu naciskamy "Wybierz..." i za pomocą okna dialogowego wskazujemy miejsce w którym ten plik się znajduje. Ważna informacja jest taka, że ma to być wskazanie pliku wykonywalnego, czyli bez jakichkolwiek rozszerzeń, samo "avrdude". Od wersji 1.2, AVRFusesCalc umożliwia wykorzystanie "avrdude" z pakietu Arduino. Dzięki temu nie trzeba instalować całego środowiska AVR-GCC, co może być dla początkujących dość kłopotliwe, a wystarczy tylko pobrać i zainstalować aplikację Arduino. Po zainstalowaniu Arduino, na koncie użytkownika w folderze biblioteki utworzony zostanie folder o nazwie "Arduino15" i to w nim należy szukać programu "avrdude". Tu drobna uwaga, folder ten tworzony jest podczas pierwszego uruchomienia Arduino.app i znajduje się w nim tylko plik z preferencjami. Chcąc skorzystać z "avrdude" wbudowanego w Arduino, należy uaktualnić biblioteki. W tym celu w aplikacji Arduino, należy wybrać z menu: Narzędzia -> Płytka -> Menedżer Płytek. W oknie które się pojawi, należy zaznaczyć "Arduino AVR Boards by Arduino", będzie zapewne na pierwszej pozycji. Teraz trzeba wybrać wersję i albo zainstalować, albo zaktualizować. Dopiero po tej operacji w folderze "Arduino15" pojawią się potrzebne pliki, dzięki którym będzie można użyć "avrdude" z AVRFusesCalc. Tutaj chcę podziękować użytkownikowi Hubert, za zwrócenie uwagi na problem z pustym folderem Arduino15. Przykładowa ścieżka dostępu może wyglądać tak: /Users/Tutaj nazwa użytkownika/Library/Arduino15/packages/arduino/tools/avrdude/6.3.0-arduino9/bin/avrdude. Ścieżkę najlepiej wskazać poprzez okno dialogowe. Kolejna pozycja to "Programator" w której wybieramy z rozwijanej listy urządzenie za pomocą którego będziemy się łączyć z mikrokontrolerem. Jeśli programator który wybraliśmy korzysta z wirtualnego portu serial, musimy ustalić prędkość z jaką ma przebiegać komunikacja. Dokonujemy tego ustawiając żądaną prędkość w "Baud Rate". Jeśli natomiast używamy programatora typu USBAsp, zostawiamy wartość "DEFAULT". Ostatni parametr do ustawienia to "Port". Tutaj musimy wskazać port z jakiego ma korzystać avrdude podczas komunikacji z programatorem. Wiadomo że na Macu mamy tylko fizyczny port USB i taki wybieramy jeśli korzystamy z programatora do którego nie są wymagane sterowniki, np. USBAsp. Jeśli zaś musieliśmy zainstalować sterowniki, to wraz z nimi został zainstalowany wirtualny port, więc z rozwijanej listy należy wybrać właściwy dla naszego programatora. Ażeby taki port był widoczny na liście, należy mieć podłączony programator do USB. Jak wszystko jest poprawnie ustawione wybieramy "ZAPISZ".

Fusebity uproszczone.

Do korzystania z tej opcji zachęcam początkujących. Można tu ustawić taktowania wewnętrzne jak i zewnętrzne mikrokontrolera oraz niektóre bity. To do większości projektów na początku wystarczy, a przynajmniej nie zablokuje się mikrokontrolera przez przypadkowe włączenie lub wyłączenie jakiegoś bitu. Po otwarciu okna, jedyne aktywne elementy to: "Check AVR", "slowSCK" oraz "WYJDŹ". W celu odczytania ustawień podłączonego mikrokontrolera wybieramy "Check AVR".

pic2W zależności od tego jaki mikrokontroler będzie odczytany, ukażą się właściwe dla niego opcje. W polach na samej górze są widoczne wartości fusebitów w postaci HEX. Następna jest nazwa wykrytego mikrokontrolera oraz jego sygnatura. Kolejna sekcja to miejsce gdzie wybiera się źródło taktowania. To jaki mamy tu wybór zależne jest od opcji dostępnych w danym mikrokontrolerze. Może być dostępne tylko taktowanie wewnętrzne (1), oraz wewnętrzne lub zewnętrzne (2). Poniżej znajduje się pole (3) w którym jest możliwość włączenia lub wyłączenia niektórych bitów. Tu także wybór jest zależny od typu mikrokontrolera. Przycisk (4) daje możliwość przywrócenia fabrycznych ustawień fusebitów. Przyciskiem (5) zapisujemy fusebity do mikrokontrolera. Naciskając "WYJDŹ" zamykamy to okno i wracamy do ekranu startowego programu.

Wśród początkujących często się zdaża że ustawiąją niską częstotliwość taktowania, dodatkowo zostawiają załączony bit który dokonuje jeszcze podziału tej częstotliwości a następnie po zapisaniu fusebitów w mikrokontrolerze, zapominają że trzeba w programatorze włączyć slowSCK aby móc teraz dokonać odczytu mikrokontrolera. No i mamy "zablokowany" mikrokontroler ;). Jak już wspomniałem, w tym oknie nie ma możliwości aby ustawione fusebity zablokowały mikrokontroler. Nawet gdy zdaży się sytuacja jak opisana powyżej, program z tym sobie poradzi. Nie trzeba załączać fizycznie zworki slowSCK na programatorze, mikrokontroler i tak zostanie rozpoznany a fusebity będą odczytane. Oczywiście jeśli ustawimy taktowanie zewnętrzne, musimy pamiętać o tym aby do właściwych nóżek mikrokontrolera podąłczyć "kwarc".

pic3 pic4Przy próbie rozpoznania mikrokontrolera w którym nie ma możliwości ustawiania częstotliwości taktowania za pomocą fusebitów, zostanie wyświetlony odpowiedni komunikat. Częstotliwości taktowania jakie są dostępne w tym oknie, zawsze będą ustawiały czas wykonania pierwszej komendy po włączeniu mikrokontrolera na 65ms. Jeśli więc spróbujemy odczytać fusebity mikrokontrolera który by miał ustawiony inny czas startu, pokaże się komunikat informujący o tym. Po naciśnięciu "OK" w oknie komunikatu, wyświetlą się wszystkie dostępne opcje częstotliwości taktowania dla danego mikrokontrolera, lecz żadna nie będzie zaznaczona. Jeśli zależy nam na zachowaniu czasu startu mikrokontrolera, nie ruszamy częstotliwości.

Na koniec opisu tego okna wyjaśnię po co jest opcja slowSCK. Generalnie jest ona nie potrzebna ;) Uznałem jednak że ją zostawię. Po pierwsze dlatego iż włączenie jej przed odczytaniem mikrokontrolera, spowoduje że program od razu będzie próbował odczytać fusebity na wolniejszym połączeniu. A po drugie, służy ona też jako sygnalizacja że do odczytania fusebitów program musiał skorzystać ze spowolnienia linii odczytu. To tyle jeśli chodzi o "Fusebity uproszczone".

Fuse / Lock Bits AVR.

pic5Korzystając z opcji w tym oknie potrzebna jest już wiedza na temat fusebitów i lockbitów w mikrokontrolerach AVR. Nierozważne, przypadkowe włączenie lub wyłączenie bitu, może doprowadzić do zablokowania mikrokontrolera. Fusebity można ustawiać poprzez załączanie / wyłączanie konkretnych bitów (1). Dodatkowo gdy mikrokontroler posiada bity opcjonalne, wybiera się konkretne wartości tych bitów z list rozwijanych (2). Ustawiać też można lockbity (3), oraz kasować pamięć mikrokontrolera wraz z zerowaniem lockbitów (4). Wgranie oraz odczytanie wsadu z mikrokontrolera również jest możliwe (5). W polu tekstowym (6) u dołu okna wyświetlane są komunikaty z avrdude. Dla przypomnienia tylko napiszę, że bit włączony, w przypadku fusebitów i lockbitów, ma wartość 0 a wyłączony 1. Najeżdżając wskaźnikiem myszy na konkretny bit, wyświetlony zostanie tzw. "tooltip" z opisem za co dany bit odpowiada. Włączenie bitu sprowadza się do zaznaczenia nad nazwą bitu kontrolki.

 

 

pic6Ustawianie bitów opcjonalnych za pomocą kontrolek, jest w stu procentach bezpieczne. W sytuacji gdy program wykryje że dany mikrokontroler nie posiada ustawienia które zostało wybrane, wyświetli odpowiedni komunikat oraz przywróci wartość fusebitów do ostatniej poprawnej.

 

pic7Chcąc wgrać lub odczytać wsad z mikrokontrolera, należy najpierw wybrać plik do wgrania lub wskazać plik w którym chcemy zapisać wsad. Dokonuje się tego korzystając z okna dialogowego (1), dla pamięci FLASH oraz EEPROM. Dopiero po wybraniu / wskazaniu pliku, pojawią się przyciski (3) które umożliwią zapis lub odczyt wsadu z mikrokontrolera. Żeby jednak wykonać jedną z tych operacji należy jeszcze zaznaczyć kontrolkę (2), w zależności od rodzaju pamięci dla której dana operacja ma być wykonana. Jeśli żadna kontrolka (2) nie zostanie zaznaczona, to zapis / odczyt nie będą możliwe.

Zmieniania lockbitów nie będę opisywał, bo dokonuje się tego w identyczny sposób jak fusebitów. Aby wejść w ustawienia lockbitów należy nacisnąc przycisk "LOCKBIT" znajdujący się w górnym prawym rogu okna.

Naciśnięcie "Erase AVR" spowoduje skasowanie pamięci mikrokontrolera oraz ustawienie fusebitów na wartości fabryczne.

Z opcji jeszcze nie omówionych pozostały "Auto Verify" oraz "Auto Erase". Pierwsza dokonuje automatycznej weryfikacji podczas odczytywania / zapisywania mikrokontrolera, druga natomiast przed wgraniem wsadu do mikrokontrolera wyczyści jego pamięć.

Tak jak w oknie "Fusebity uproszczone" tak i tutaj można przywrócić ustawienia fabryczne fusebitów oraz wymusić spowolnienie linii odczytu poprzez slowSCK. Oczywiście użycie tej opcji nie jest konieczne, program bez względu na ustawioną częstotliwość taktowania poradzi sobie z odczytem fusebitów z mikrokontrolera.

I to by było wszystko w temacie obsługi AVRFusesCalc. Mam nadzieję że praca z tą aplikacją jest intuicyjna, a jeśli mimo wszystko pojawiły się jakieś wątpliwości, to że ten poradnik je rozwiał. W razie pytań, wykrycia błędów, proszę o kontakt na maila: Ten adres pocztowy jest chroniony przed spamowaniem. Aby go zobaczyć, konieczne jest włączenie w przeglądarce obsługi JavaScript. lub w komentarzach. Proszę też o ocenianie aplikacji w App Store.

 

 

Tags: Atmel, AVR, Fuses, Arduino

E-mail

Komentarze   
#10 Marcin 2018-06-17 16:30
Jeszcze raz dzięki Hubert za zauważenie problemu i znalezienie rozwiązania. Ja mam Arduino.app już od długiego czasu zainstalowane, i nie jedną aktualizację zrobiłem. W ogóle nie przyszło mi do głowy, że folder ten może być pusty dopóki się nie przeprowadzi aktualizacji bibliotek Ardunio.
Cytować
#9 Marcin 2018-06-17 16:02
No to się wszystko wyjaśniło. Zaraz uaktualnię opis w poradniku.
Cytować
#8 Hubert 2018-06-17 15:54
Ok, dziękuję. Ściągnąłem najnowszy pakiet AVR korzystając z menadzerta płytek Arduino wersja płytke 16.2.21 i znalazłem Avrdude tam gdzie trzeba więc jest OK. Pozdrawiam.
Cytować
#7 Hubert 2018-06-17 15:43
Gdzie można ściągnąć potrzebne pakiety?
Cytować
#6 Hubert 2018-06-17 15:41
Mam program XOD również zainstalowany. Poza tym ściągnąłem CrossPack.
Cytować
#5 Hubert 2018-06-17 15:40
Nie ja nie rozumiem.Mam katalog Arduino15 w Bibliotece w katalogu domowym ale nie ma tam "packages" ani avrdude. Może lepiej by było żeby takie konieczne rzeczy były dystrybuowane razem z programem.
Cytować
#4 Marcin 2018-06-17 15:24
No nie za bardzo. Folder Arduino15 tworzy aplikacja Arduino. Tam znajdują się wszelkie biblioteki, przykłady, wzory płytek itp. Tam też właśnie jest zainstalowane "avrdude" wraz z plikami do obsługi mikrokontrolerów. Jak przekopiujesz samo "avrdude" i jego plik konfiguracyjny, to mój program co prawda przestanie się "burzyć" o ścieżkę do "avrdude", ale czy odczyta mikrokontroler to już taki pewien nie jestem. Obawiam się że nie, bo nie będzie wiedział gdzie ma szukać plików nagłówkowych do mikrokontrolerów.
Cytować
#3 Hubert 2018-06-17 15:17
A czy nie mogę poprostu skopiować pliku avrdude do katalogu Arduino15 w Bibliotece?
Cytować
#2 Marcin 2018-06-17 15:06
Ścieżki nie ustawia się w Arduino.app, Apple za "chiny ludowe" nie pozwoli tam się dostać, ale właśnie w folderze Arduino15 należy szukać "avrdude".
Rzuć okiem na ten film https://www.youtube.com/watch?v=hMSW5Op1ebM tak od 3.40 minuty.
Cytować
#1 Hubert 2018-06-17 14:54
Nie mogę tego programu opanować.
Konkretnie podaję mu ścieżkę do pakietu
Arduino.app wew. którego jest avrdude a on
wciąż "sprawdź ścieżkę" a w katalogu Library
mam Arduino 15 katalog ale nie ma w nim avrdude.
Cytować
Dodaj komentarz