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

Początki programowania mikrokontrolerów AVR: Atmega328, USBasp i Microchip Studio

kaziogarus 27 Kwi 2023 22:07 903 18
  • #1 20558255
    kaziogarus
    Poziom 3  
    Witam niedawno zainteresowałem się tematem mikrokontrolerów i w zasadzie jedyne jakie kroki poczyniłem to zakup Atmega328 i budżetowy popularny programator UsbASP i dokonałem małego researchu z którego niewiele się dowiedziałem. Jeszcze zainstalowałem microchip studio do którego wiem by UsbASP było kompatybilne jest mi potrzebny AVRdude którym zajmę się później. Do brzegu, chciałbym dowiedzieć się jak zacząć naukę programowania do właśnie takich mikrokontrolerów w microchip studio, bo jedyne co widziałem na youtube to jakieś gotowe programy a poradnik do tego jak się nauczyć samodzielnie takie tworzyć już nie, także liczę na pomoc. I domyślam się, że zaraz będą komentarze odnośnie tego by bawić się z Arduino, ale już to przerabiałem i chcę tak jakby "na surowo" a nie gotowa płytka. Pozdrawiam
  • #2 20558302
    tmf
    VIP Zasłużony dla elektroda
    No to teraz musisz nauczyć sięjakiegoś języka - polecam C. Zaproponowałbym ci też małą zmianę, z ATMegi328, która jest ok, na ATMega328 na płytce Xplained lub kupić curiosity nano np. z ATMega4809 - jest to tanie i masz tam programator/debugger co znacznie ułatwia sprawę. Zobacz np. mój tutorial na YT:
    https://youtu.be/M6ffwF4RJeQ
  • #3 20559125
    khoam
    Poziom 42  
    kaziogarus napisał:
    I domyślam się, że zaraz będą komentarze odnośnie tego by bawić się z Arduino, ale już to przerabiałem i chcę tak jakby "na surowo" a nie gotowa płytka.

    Bardzo słusznie. Wszelkie płytki "arduinowe" typu Uno/Nano/Mini/Micro z procesorami ATMega328 to moim zdaniem jest w obecnych czasach inwestycja w elektrozłom.
  • #4 20559505
    kaziogarus
    Poziom 3  
    Odpowiedzi fajne, ale jednak jestem uparty i chcę zostać przy swoim sprzęcie a jedyne na czym mi zależy to jak i gdzie nauczyć się programowania do np Atmegi328 w microchip studio, bo samo nauczenie języka na pewno da dużo, ale jednak chcę tak bardziej do mikrokontrolerów, bo czymś na pewno się różni, jednak jakoś trzeba zdefiniować że jak będzie stan wysoki na wejściu to na wyjściu będzie niski(przykładowo) a nie coś prostego dla programu np. klawisz K na klawiaturze będzie wyświetlało obrazek nr. 3. Także właśnie o to mi chodzi, że jak mogę się nauczyć takiego programowania. Liczę, że dobrze opisałem swój problem.
  • #5 20559550
    miszcz310
    Poziom 24  
    Raczej tak średnio opisałeś, bo programowanie mikrokontrollerow jest dokładnie tym samym co programowanie PC (przynajmniej w C). Problem jest taki, że nie masz systemu operacyjnego więc z częścią funkcjonalności musisz sobie sam zapewnić. Jeżeli nie umiesz programować na PC nawet w stopni sredniozaawansowanym to szkoda nerow żeby tłuc się z mikrokontrolerem.
  • #6 20559552
    inot
    Poziom 35  
    kaziogarus napisał:
    nauczyć się programowania do np Atmegi328 w microchip studio

    Tak jak już poprzednio wskazano, podstawą programowania w microchip studio jest znajomość języka C albo C++ .
    Wprawdzie można też w asemblerze ale w tym przypadku należy się nauczyć także programowania w tym języku a także bardzo dobrze poznać zasadę działania tego kontrolera.
  • #7 20559774
    tmf
    VIP Zasłużony dla elektroda
    kaziogarus napisał:
    Odpowiedzi fajne, ale jednak jestem uparty i chcę zostać przy swoim sprzęcie a jedyne na czym mi zależy to jak i gdzie nauczyć się programowania do np Atmegi328 w microchip studio, bo samo nauczenie języka na pewno da dużo, ale jednak chcę tak bardziej do mikrokontrolerów, bo czymś na pewno się różni, jednak jakoś trzeba zdefiniować że jak będzie stan wysoki na wejściu to na wyjściu będzie niski(przykładowo)

    No to odpowiedź na to pytanie masz np. w mojej stopce, w postaci książek, które są dobrym punktem startu i nie tylko. Alternatywnie można sobie poszukać w necie różnego typu kursów, czytać noty producenta dla danego MCU itd. Innych opcji nie ma. Natomiast bez podstaw C się nie ruszy, niezależnie co byś nie robił. Zaczynanie od assemblera jakkolwiek możliwe, nie ma obecnie większego sensu. W przeciwieństwie do kierunku C->asm, co w bardzo ograniczonych sytuacjach sens ma.
    Poleciłem ci Xplained z Atmega328, bo debugger jest nie do przecenienia. Aczkolwiek na dzisiaj z AVR wybrałbym curiosity z ATMega4809, ze względu na prostszą przestrzeń adresową może wiele rzeczy ułatwić na początek.
    Tak przy okazji - jeśli jesteś początkujący to postawa ja wiem lepiej nie za bardzo ma sens. Jeśli chcesz korzystać z pomocy społeczności to musisz się nastawić na branie pod uwagę rad ludzi, którzy zapewne wiedzą więcej i zapewne kiedyś popełnili błędy, których ty popełniać nie musisz.
  • #8 20560278
    kaziogarus
    Poziom 3  
    tmf napisał:
    to postawa ja wiem lepiej nie za bardzo ma sens. Jeśli chcesz korzystać z pomocy społeczności to musisz się nastawić na branie pod uwagę rad ludzi
    I tu się z tobą zgodzę ale jednak udzielanie rad na odwrót niż ktoś potrzebuję według mnie też jest nie w porządku, tak jak pisałem nie chcę przerabiać znowu tematu gotowych płytek tylko programowanie czystego mikrokontrolera na np. płytce stykowej

    Dodano po 5 [minuty]:

    Dobra Panowie dowiedziałem się od was, że lepiej zacząć od nauki samego języka i dopiero później coś dla mikrokontrolerów, co jest rozsądnym i logicznym podejściem nad którym się zastanawiałem ale tak jak pisałem nie byłem pewny czy przypadkiem w tym programowaniu język będzie tylko pniem a oby dwa typy urządzeń do programowania to dwie absolutnie inne i rozległe gałęzie, ale pójdę waszymi radami i się nauczę tego "pnia" tylko teraz pytanie C czy C++? Możecie doradzić w wyborze, ale istotne jest dla mnie to czy w tym i w tym będę mógł programować mikrokontrolery w microchip studio przez mój programatorek.
  • #9 20560294
    miszcz310
    Poziom 24  
    kaziogarus napisał:
    jednak udzielanie rad na odwrót niż ktoś potrzebuję według mnie też jest nie w porządku, tak jak pisałem nie chcę przerabiać znowu tematu gotowych płytek tylko programowanie czystego mikrokontrolera na np. płytce stykowej

    No kolego, trochę zaczynasz stąpać po cienkim lodzie. Dostajesz wyważona odpowiedź od człowieka który kilka książek napisał, tworzy na swoim kanale wiele pomocnych materiałów (czyli chyba się zna i trochę już programuje i wie co się przydaje a co srednio), a ty tutaj wyskakujesz jakby Ci ktos krzywde robil bo pan w internecie napisal cos czego nie chciales uslyszec. Troche nie fajne zachowanie.

    Pozatym dostales tutaj informacje z pierwszej reki i wszyscy chyba zalozyli ze troche juz poczytsles. Bo jak die wpisze w google atmega programowanie C stykowka to wychodzi:

    https://mikrokontrolery.blogspot.com/

    Tutaj masz dokladnie programowanie na stykowce.
  • #10 20560295
    inot
    Poziom 35  
    kaziogarus napisał:
    tylko programowanie czystego mikrokontrolera na np. płytce stykowej

    To napisz jak masz to zamiar zrobić za pomocą środowiska Microchip Studio bez znajomości podstaw języka C.
    Do programowania niekoniecznie trzeba poznać wszystkie możliwości tego języka, wystarczy na początek tylko poznać kilka podstawowych funkcji i wtenczas można zrozumieć jak działają przykładowe programy.

    kaziogarus napisał:
    czy w tym i w tym będę mógł programować mikrokontrolery w microchip studio przez mój programatorek

    Oczywiście tak.
  • #11 20560319
    kaziogarus
    Poziom 3  
    Właśnie o to mi chodzi, i chciałem by ktoś poinstruował mnie w jakiejś sensownej kolejności bym na coś niepotrzebnie nie tracić czasu, o i wspomniałeś, że bez znajomości języka C a później, że można na tym i na tym poprostu nie chciałeś wymieniać dwóch czy jednak jest tu jakaś zależność, fajnie będzie jak wytłumaczysz mi to tak w skrócie czym się od siebie różnią w przypadku przygody z mikrokontrolerami i którego ty mi polecasz się nauczyć.
  • #12 20560336
    inot
    Poziom 35  
    Język C++ to praktycznie mówiąc oparty jest na C i posiada więcej możliwości.
    Najlepiej poczytaj na ten
    temat
    Jeśli chodzi o wybór mikrokontrolera, to trudno doradzić. Wszystko zależy od tego, do czego go masz zamiar wykorzystać.
  • #13 20560350
    kaziogarus
    Poziom 3  
    >>20560294
    Absolutnie mu nie ujmuję i wiedzą to mnie przerasta na pewno tysiące razy, ale jednak jestem osobą dość upartą i jak sobie założyłem cel że uda mi się zrobić najprostszy program ze sprzętem jaki mam, a widziałem, że na takim samym robili na youtubie z powodzeniem to będę jak osioł pod górę kombinował byleby to zrobić, i takie zachowanie ma minusy i plusy. Co to za problem zakupić kolejny sprzęt i zrobić krok po kroku tak jak pan na filmiku, a jednak determinacja i ambicja w dążeniu do celu nawet jeśli jest to porwanie się z motyką na słońce o wiele więcej mi da, bo będę musiał się nauczyć wszystkiego od podstaw a nie przepisać z filmiku kawałek kodu, a satysfakcja nawet z mrygającej diody będzie ogromna. I tak wiem kto mi nakazuje korzystać z gotowych kodów, no ale nie oszukujmy się jakby nam nie wychodziło w końcu byśmy przepisali i już by nie było satysfakcji. Gdzie też coś takiego zmusi mnie do działania na odwrót niż przy zabawie z Arduino czyli nie nauka kodu pod projekt tylko tworzenie projektu pod umiejętność programowania.
  • #14 20560433
    tmf
    VIP Zasłużony dla elektroda
    kaziogarus napisał:
    tak jak pisałem nie chcę przerabiać znowu tematu gotowych płytek tylko programowanie czystego mikrokontrolera na np. płytce stykowej

    Ale we włożeniu MCU w płytkę stykową nie ma nic twórczego, ani nawet fascynującego - jest za to sporo uciążliwości. Trzeba podłączyć kilka elementów zewnętrznych, programator, zasilanie - robi się bałagan i jest to raczej uciążliwe. Dlatego wymyślono płytki rozwojowe, a potem je maksymalnie uproszczono. Na takiej płytce Xplained lub curiosity (jeśli mówimy o Microchipie) masz właściwie tylko MCU + niezbędne elementy zewnętrzne i jest to zintegrowane z programatorem/debuggerem. Uwierz mi, że odpalenie sesji debuggera w Microchip Studio i zabawa na żywo z MCU i jego rejestrami jest o wiele ciekawsza niż podłączenie LEDa na płytce stykowej. Tacie np. curiosity potem wkładasz w płytkę stykową i rozbudowujesz o kolejne moduły. Jak już wiesz co i jak to przerysowujesz sobie schemat w CADzie i wysyłasz do płytkarni i masz to co chcesz.
    kaziogarus napisał:
    ale pójdę waszymi radami i się nauczę tego "pnia" tylko teraz pytanie C czy C++? Możecie doradzić w wyborze, ale istotne jest dla mnie to czy w tym i w tym będę mógł programować mikrokontrolery w microchip studio przez mój programatorek.

    C++ jest dużo bardziej skomplikowany niż C, w dodatku platforma AVR jest taka średniawa do startu z C++ (mimo, że Arduino na tym sklecono). Ja bym zaczął od C, bo trudniej sobie w tym języku odstrzelić stopę, a potem, w zależności co cie interesuje zawsze można się douczyć C++. Ponieważ język zawsze jest kompilowany do tego samego - kodu maszynowego - więc oczywiście dopóki dysponujesz kompilatorem danego języka to oczywiście będziesz go mógł użyć do programowania danego MCU. gcc dla AVR wspiera m.in. C i C++, więc nie ma problemu.
  • #15 20560447
    khoam
    Poziom 42  
    tmf napisał:
    Ja bym zaczął od C, bo trudniej sobie w tym języku odstrzelić stopę, a potem, w zależności co cie interesuje zawsze można się douczyć C++.

    Akurat w C to łatwiej sobie odstrzelić stopę niż w C++. Ale nie namawiam do C++, bo faktycznie jest trudniejszy.
  • #16 20560518
    kaziogarus
    Poziom 3  
    No dobra to może zacznę od nauczenia się byle czego z C i wtedy zobaczę czy zabawa z moim obecnym sprzętem będzie miała sens czy jednak zainwestować w tą płytkę xplained. I załóżmy, że faktycznie bym poszedł w tą płytkę i czy później przerzucenie się z niej na taki sprzęt jaki mam obecnie byłoby jakąś filozofią wielką? Zapewne nie, bo ta płytka to w sumie to samo w jednym kawałku tylko, że z 2 razy droższa.
  • #17 20560526
    tmf
    VIP Zasłużony dla elektroda
    kaziogarus napisał:
    czy później przerzucenie się z niej na taki sprzęt jaki mam obecnie byłoby jakąś filozofią wielką?

    Żaden problem, bo natej płytce masz właśnie praktycznie gołą ATMega328. Niemniej zachęcam co najmniej do ATMega4809.
    kaziogarus napisał:
    Zapewne nie, bo ta płytka to w sumie to samo w jednym kawałku tylko, że z 2 razy droższa.

    Droższa bo masz na niej programator i debugger - czyli dodatkowy procek.
  • #18 20560582
    kaziogarus
    Poziom 3  
    No dobra bo debugger z tego co się orientuje to do wykrywania błędów, czyli najlepszą opcją byłoby zrobienie na takiej płytce program po czym na tym samym MCU co jest na płytce wgrać już gotowy sprawdzony program dzięki czemu będzie można zaoszczędzić przy robieniu innych projektów kupując same MCU a prototypy budować na jednej płytce, jeżeli to działa jak myślę to faktycznie kupię tą płytkę i biorę się za naukę C i przy okazji macie jakieś sprawdzone kursy najlepiej jakieś łatwodostępne na youtube i programy do nauki a bardziej do opanowania i praktykowania języka?
  • #19 20560601
    inot
    Poziom 35  
    Przykład kursu C :Link
    Debugger służy nie tylko do wykrywania błędów.
    Przed rozpoczęciem debugowania, można zdefiniować miejsca w kodzie, w których wykonywanie oprogramowania powinno zostać wstrzymane: punkty przerwania lub punkty przerwania.
    Z jednej strony można teraz sprawdzić dokładny stan oprogramowania w danym momencie. Na przykład dostaje wgląd we wszystkie zmienne i może sprawdzić, czy oczekiwane wartości są dostępne. Z drugiej strony może odtwarzać program krok po kroku od punktu przerwania i dzięki temu dokładnie obserwować, co się dzieje. Staje się jasne, jak i kiedy zmieniają się wartości poszczególnych zmiennych.
    Ponadto możesz śledzić na żywo dokładnie, jak przebiega kod, czyli w jakiej kolejności wywoływane i przetwarzane są poszczególne instrukcje. Ta szczegółowa analiza pomaga lepiej zrozumieć procesy, a tym samym rozwiązać nawet skomplikowane błędy. W niektórych przypadkach możliwy jest również powrót do poprzednich kroków i ponowne uruchomienie programu.

Podsumowanie tematu

Użytkownik zainteresował się programowaniem mikrokontrolerów AVR, w szczególności Atmega328, oraz używaniem programatora USBasp i Microchip Studio. Poszukuje wskazówek dotyczących nauki programowania w C lub C++ oraz sposobów na samodzielne tworzenie programów dla mikrokontrolerów. Otrzymuje sugestie, aby najpierw nauczyć się podstaw języka C, co jest kluczowe dla programowania mikrokontrolerów, oraz rozważyć użycie płytek rozwojowych, takich jak Xplained lub Curiosity, które ułatwiają proces debugowania i programowania. Dyskusja obejmuje również różnice między C a C++, a także zalety korzystania z debuggerów w Microchip Studio.
Podsumowanie wygenerowane przez model językowy.
REKLAMA