Popularny post Matthias Napisano Kwiecień 29, 2020 Popularny post Udostępnij Napisano Kwiecień 29, 2020 Witam. Od jakiegoś czasu bawię się arduino UNO, które wybrałem ze względu na niską cenę, ale jak również że jest to dobra platforma dla początkujących, którzy zaczynają od prostych projektów do których ATmega 328 nadaje się idealnie, a także na łatwość przenoszenia projektów na zaprojektowane przez nas PCB. Głównie dzięki temu, że procesor ten nie jest na stałe wbudowane w arduino tylko znajduje się w podstawce. Można go łatwo wyjąć i zastosować w naszym projekcie, lub na przykład gdy procesor ten jest uszkodzony, możemy wymienić go na inny działający w naszym arduino. Co więcej nie musi być to koniecznie ATmega328. Tak naprawdę arduino UNO umożliwia nam skorzystanie z takich procesorów jak choćby ATmega8/8A, która co ciekawe była używana w pierwszych wersjach arduino . Środowisko arduino IDE umożliwia nam także wykorzystanie ATmegi168. Aby wykorzystać wymienione procesory w ardunio najpierw musimy do nich wgrać bootloader. Środowisko arduino IDE wspiera te procesory i umożliwia nam wgranie właściwego bootloadera. Z mojego doświadczenia udało mi się grać bootloader do ATmega8A oprócz standardowej ATmegi 328, a także prosty standardowy sketch - blink LED. Tyle tytułem wstępu. Przejdziemy teraz do dalszego opisu dlaczego tak nie inaczej, projekt ten został zrealizowany. Na samym początku wgrywałem bootloader na odpowiednio przygotowanej do tego celu płytce stykowej. Jak wiadomo takie przygotowanie trwa trochę czasu i wymaga cierpliwości aby wszystko było właściwie podłączone. Co więcej czasem zdarzało się, że nie miałem kondensatorów, lub kwarcu bo wcześniej został on już gdzieś wykorzystany w innym projekcie. Także przy takim połączeniu na płytce stykowej zawsze istnieje ryzyko, że któreś połączenie może nie łączyć i w efekcie bootloader nie wgra nam się do procesora, a my będziemy zmuszeni szukać przyczyny zaistniałej sytuacji. Postanowiłem poszukać w internecie modułów do wgrywania bootloaderów do ATmeg dla arduino. Wyniki wyszukiwań są uzależnione od tego co wpiszemy w wyszukiwarce. Wysyp róźnych shieldów czyli nakładek na arduino, ale właściwy shield jak już znalazłem to przeważnie na zagranicznych stronach, ale na polskich stronach co mnie zdziwiło to komunikat: "wycofany ze sprzedaży" lub brak. Z kolei shieldy na zagranicznych stronach rozbudowane o dodatkowe elementy jak buzzer i ledy, które tak naprawdę nie są nam potrzebne. Generalnie cena max do 20 PLN nie uwzględniając kosztów wysyłki. Następną rzeczą jako, że posiadam klon arduino to niezbyt równo polutowane gniazda więc będę musiał się bawić w odpowiednie ukierunkowanie pinów do gniazd aby włożyć shield. Na koniec ostatnia kwestia, że przy takiej ilości pinów gniazda, takie shieldy nieraz ciężej się wyciąga , ale to indywidualna kwestia. Każdy może mieć własne zdanie na ten temat oraz sam fakt, że piny takiego shielda mogą się powykrzywiać w jakieś sytuacji, bo istnieje większe ryzyko, że gdzieś nimi o coś zahaczymy lub spadnie nam na podłogę. Na podstawie powyższych przemyśleń postanowiłem sam zaprojektować programator do bootloader-ów tylko, że nie w postaci schield-u ale normalnej płytki i tylko z podstawowymi elementami, bez których wgranie bootloadera byłoby niemożliwe. Jedyne dodatkowe elementy to dioda LED1 oraz rezystor R2 o tym do czego służą te elementy wyjaśnię później. Poniżej zdjęcia prezentowanego przeze mnie programatora: Mając garść elementów odpowiednio je rozmieściłem na płytce tzn. gęsto, dzięki czemu płytka ma znacznie małe wymiary w stosunku do shieldu, mimo zastosowania elementów THT oraz nie ma tak jak shieldy wystających pinów, co sprawia że łatwo możemy ją przenosić lub schować bez obawy o to, że jakiś pin złącza ulegnie wykrzywieniu. Dzięki opisom na stronie TOP płytki możemy bez problemu podłączyć programator do arduino. Jak widać opisy pinów gniazda programatora, odpowiadają opisom gniazd arduino. Programator ma wykonane nóżki z nylonowych słupków o wysokości 6mm przykręconych śrubą krzyżakową M3. Dzięki temu stoi prosto i stabilnie. Zamiast tego można zastosować gumowe samoprzylepne nóżki co doda-tkowo poprawi kontakt z podłożem i ustabilizuje nam programator. Na poniższym zdjęciu pokazana została płytka samego programatora, a na następnym zaś jak jest ona podłączona do arduino. Do podłączenia użyłem przewodów do połączeń na płytce stykowej. Nic nie stoi na przeszkodzie aby wykonać to jeszcze w inny sposób. Na przykład lutując przewody w miejscu złącza SV1, zaś na końcu tych przewodów dolutowując odpowiednie złącza goldpin, które możemy umieścić w gniazdach arduino. Jeżeli wgrywamy bootloader piny opisane jako Rx oraz Tx pozostają nie podłączone. Dokładny opis jak wgrywać bootloader do ATmegi 8/168/328 przedstawię za jakiś czas w osobnym wpisie. Na koniec jeszcze wyjaśnię dlaczego na złączu SV1 mamy piny Rx, Tx oraz do czego służy obwód złożony z R2 oraz LED1 1 przykład Jeżeli używamy Arduino do programowania ATmeg, czyli wgrywania stworzonego przez siebie sketcha, którą to ATmegę potem znów wyciągamy z arduino aby przełożyć do zapro-jektowanego przez nas urządzenia. Szczególnie często może się to zdarzać początkującym osobom, które muszą poprawiać coś w kodzie programu zanim znajdą lukę, która unie-możliwiała prawidłową pracę zaprojektowanego przez siebie urządzenia. Takie przekładanie ATmegi może być uciążliwe i wyrabia styki podstawki. Ponadto takie podważanie procesora może za którymś razem uszkodzić nam ubudowę podstawki a nawet procesora nie mówiąc już o powykrzywianych lub ułamanych pinach pinach procesora. O ile tę czynność będziemy musieli powtarzać na zaprojektowanym urządzeniu wyeliminujemy ją przynajmniej na arduino. Zawsze to połowę mniejsze ryzyko uszkodzeń i straty czasu. 2. przykład Jeżeli wgrywamy bootloader do dużo większej ilości ATmeg niż ma to miejsce w przypadku osób zajmujących się tym amatorsko, bo być może są osoby które programują procesory do urządzeń, które są potem gdzieś wykorzystywane na większą skale. Warto sprawdzić czy po wgraniu bootloadera jesteśmy w stanie wgrać do procesora prosty sketch. Sprawdzimy w ten sposób czy nasz procesor oprócz wgranego bootloadera-bez niego nie będziemy w stanie wgrać sketcha, uruchamia się. Tutaj wgrywamy sketch z migającą diodą LED. Uwaga: domyślny sketch w arduino-blink nie będzie działać, ze względu na inny port procesora, do którego jest podłączona dioda LED. Wykaz elementów: a) elektronika SV - złącze goldpin żeńskie, 8-pin IC1 - podstawka testowa ZIF28 (228-3341)-wąska C1,C2 - kondensator ceramiczny 22pF/50V C3,C4 - kondensator ceramiczny 100nF/50V Q1 - kwarc 16 MHz* (opcjonalny) R1 - 10k 0,2W R2 - 120R 0,2W LED1 - Zielona 5mm S1 - tact switch 6x6x5mm czarny J1 - kynar, srebrzanka 0.54mm b) mechanika Słupek dystansowy M3 6mm w/w poliamid 4 szt. Śruba walcowa na krzyżak M3x5mm DIN 7985 4 szt. * Programujemy tylko procesory taktowane częstotliwością 16MHz. Należą do nich ATMEGA8/328 ale są też spotykane wersje tych procesorów taktowane częstotliwością 8Mhz. Dlatego jeżeli wiemy jakich procesorów będziemy używać do tworzenia naszych projektów, bądź jakimi obecnie dysponujemy, musimy zamontować kwarc Q1 o odpowiedniej częstotliwości dla danego procesora. Co ciekawe Atmega168 jest taktowana częstotliwością 20 Mhz. Zatem mamy do wyboru kwarc o częstotliwości 8/16/20 MHz Dodatkowe uwagi odnośnie montażu: Użycie innej wersji podstawki ZIF28 niż ta wymieniona w wykazie może skutkować problemem z montażem takich elementów jak R1, Q1, R2, C3. Chodzi o wersję szerszą podstawki. Użyta w projekcie podstawka o numerze 22-3341 - wąska i pod nią zostało zaprojektowane PCB. Elementy LED1 i R2 są opcjonalne. Jeżeli nie będziemy wykorzystywać programatora do wgrywania sketcha testującego, nie ma potrzeby montowania tych elementów. Przedstawiona na zdjęciu płytka programatora w rev.1 co jak widać nie ma na niej kondensatora C4, który dolutowałem od strony BOTTOM programatora. W załączonych do opisywanego projektu plikach, znajduje się uaktualniony rysunek PCB w rev.2, na którym ten kondensator został dodany oraz dodatkowo płytka została jeszcze nieco zminiaturyzowana względem pierwotnej wersji. Oprócz zdjęć urządzenia zamieszczam schemat, rysunki PCB płytki programatora - do wykonania metodą termo transferu, dzięki czemu jak ktoś będzie chciał to będzie mógł go wykonać oraz sketch testowy blink. Wszystkie wyżej opisane pliki umieszczone są w pliku ZIP pod nazwą "bootloaderburn-Rev.2 W następnym poście opisze wgrywanie bootloaderów do ATmeg: 8/168/328 z użyciem wyżej opisanego programatora, wykorzystując do tego arduino UNO. Płytka została zaprojektowana w programie Eagle. Na początku montażu najpierw zacznijmy od montażu zworki J1, która jest kluczowa do zasilania procesora. Zworka ta znajduje się w miejscu gdzie później będzie montowana podstawka do procesorów. Montaż tradycyjnie zaczynamy od najmniejszych elementów, gdzie na końcu montujemy podstawkę pod procesor. Pobierz:bootloaderburn-Rev.2.zip 4 Cytuj Link do komentarza Share on other sites More sharing options...
Anonim Maj 4, 2020 Udostępnij Maj 4, 2020 Dnia 29.04.2020 o 21:56, Matthias napisał: Programujemy tylko procesory taktowane częstotliwością 16MHz. Należą do nich ATMEGA8/328 ale są też spotykane wersje tych procesorów taktowane częstotliwością 8Mhz. Dlatego jeżeli wiemy jakich procesorów będziemy używać do tworzenia naszych projektów, bądź jakimi obecnie dysponujemy, musimy zamontować kwarc Q1 o odpowiedniej częstotliwości dla danego procesora. Co ciekawe Atmega168 jest taktowana częstotliwością 20 Mhz. Zatem mamy do wyboru kwarc o częstotliwości 8/16/20 MHz Taktowanie rdzenia nie ma nic wspólnego z wersją procesora a ustawieniami fuse bitów i doborem odpowiedniego rezonatora. Możliwym jest również używanie wewnętrznego oscylatora od 1 - 8MHz dzięki czemu nie ma konieczności dołączania zewnętrznego kwarcu i wreszcie co najciekawsze, możliwe jest używanie wewnętrznego oscylatora do taktowania rdzenia i zewnętrznego kwarcu zegarkowego do taktowania timera w trybie asynchronicznym dzięki czemu zyskujemy funkcjonalność RTC w projekcie bez konieczności dołączania zewnętrznych modułów. Nie jest też konieczne wgrywanie bootloadera do procka aby móc go programować również pod arduino potrzebny będzie wtedy jednak zewnętrzny programator np. USBASP lub druga atmega zaprogramowana jako programator, dzięki czemu można bezpośrednio zmieniać ustawienia fusebitów i wgrywać pliki hex bez bootloadera za pomocą np. programu SINAProg. Informacyjnie dodam jeszcze, że sam bootloader niekoniecznie musi być bootloaderem w dosłownym sensie, może to być każdy inny program pełniący inne funkcje np. diagnostyka dołączonego do atmegi sprzętu lub automatyczne nadpisywanie bibliotek dołączonych do głównego programu innymi prekompilowanymi bibliotekami umieszczonymi w zewnętrznej pamięci flash przy czym trzeba pamiętać, że ilość cykli przeprogramowywania jest ograniczona ale to już wyższa szkoła jazdy na avr. Samą ilość pamięci przeznaczonej na bootloader w procku również określa się za pomocą fusebitów. Cytuj Link do komentarza Share on other sites More sharing options...
Matthias Maj 4, 2020 Autor tematu Udostępnij Maj 4, 2020 Witam. Dziękuje Ci atMegaTona za konstruktywną opinię. Bo powiem, że dzięki niej dowiedziałem się paru rzeczy, ale zaraz się odniosę do wszystkiego. Nie będę ukrywać, że pierwsza część wypowiedzi, odnośnie taktowania procesora jest mi dobrze znana. Jednakże początkującym osobom w programowaniu z użyciem arduino, chciałem to przedstawić w dość uproszczony sposób, bo fakt faktem Atmegi, które można zamówić lub kupić, są już ustawione do pracy z konkretną częstotliwością taktowania, mowa tu o zewnętrznym kwarcu, który łatwiej jest podłączyć do procesora, szczególnie początkującym osobom. Ja co prawda jeszcze się nie bawiłem w zmianę parametrów taktowania procesora, ale wiem że jest to możliwe u użyciem fuse bitów. Nie bawiłem się dlatego, że generalnie wszystkie programy piszę w środowisku Arduino IDE i generalnie używam do moich projektów ATmeg 8A/328, które są taktowane zewnętrznym generatorem z częstotliwością 16 MHz, które bardzo łatwo jest kupić. W sumie to za jakiś czas mam ochotę się pobawić w uruchomienie procesora na jego własnym wewnętrznym generatorze a nawet zmianę częstotliwości tego generatora. Odnośnie boot loaderów przyznaje się bez bicia, że tego co napisałeś nie wiedziałem i kto wie może kiedyś mi się ta wiedza przydać. Tak jak pisałem, projekt który opisałem jak i sposób jego użycia odnosi się do jedynego w tym momencie narzędzia jakim jest Arduino bez dodatkowych programatorów oraz innych metod. Dlatego tak a nie inaczej opisałem sposób wgrywania bootloaderów oraz taktowanie procesorów, podpierając się tym co znalazłem w internecie, co potem sam zweryfikowałem. Wszystko co opisałem wcześniej zostało przeze mnie sprawdzone. Ale nie zmienia to faktu, że dowiedziałem się kilku ciekawych rzeczy odnośnie boot loaderów i dziękuje za komentarz. Pozdrawiam. Cytuj Link do komentarza Share on other sites More sharing options...
mwwojcik Maj 5, 2020 Udostępnij Maj 5, 2020 Fajny pomysł. Myślę że warto byłoby pomyśleć też o wersji z podstawką do programowania Atmeg w wersji TQFP44 bo w punkcie drugim wspomniałeś o produkcji. Myslę że zdecydowana większość urządzeń idzie w stronę miniaturyzacji a co za tym idzie stosowania obudowy SMD. Podejrzewam tylko że cena takowej podstawki nie będzie atrakcyjna - sam zastanawiałem sie nad skonstruowaniem jej ze złącza PCI wydobytego ze starej płyty głównej, nie wiem czy ktoś już ma jakieś doświadczenia z takim rozwiązaniem... Pozdrawiam! 1 Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!