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

Pierwsze starcie z mikrokontrolerami (dozwolone linki Allegro, eBay, itp)

Ślepiec 31 Gru 2004 18:09 554457 2015
Najlepsze odpowiedzi

Jakie elementy, oprogramowanie i sposób programowania są potrzebne, żeby zacząć pracę z mikrokontrolerami?

Do startu potrzebujesz mikrokontrolera z pamięcią Flash, programatora, kompilatora/środowiska na PC, dokumentacji układu oraz prostego zestawu testowego z LED-ami i przyciskami; na początek polecano AVR-y Atmela, a znając C najlepiej pisać właśnie w C i wgrywać gotowy plik HEX przez ISP lub prosty programator typu STK200/300 [#1101096][#1101109][#1835895] Program powstaje na komputerze, kompiluje się do postaci binarnej/HEX, a programator zapisuje go do pamięci programu mikrokontrolera, często bez wylutowywania układu [#1101109][#1101096] Jako pierwszy krok warto kupić gotowy zestaw uruchomieniowy albo płytkę testową z AVR, bo pozwala uniknąć błędów własnej konstrukcji i szybciej zacząć eksperymenty [#1101149][#2824895]
Wygenerowane przez model językowy.
  • #1681 13438066
    BlueDraco
    Specjalista - Mikrokontrolery
    Posty: 6479
    Pomógł: 939
    Ocena: 421
    dondu napisał:
    I nie wierz w powszechną opinię że 8-bitowce wymrą za kilka lat - nie wymrą, bo będą tańsze, a rynek na ceny zawsze patrzy. :)


    No tu bym akurat polemizował - 32-bitowe uC już są tańsze od 8-bitowych.
  • #1682 13438080
    dondu
    VIP Zasłużony dla elektroda
    Posty: 13906
    Pomógł: 1292
    Ocena: 809
    BlueDraco napisał:
    dondu napisał:
    I nie wierz w powszechną opinię że 8-bitowce wymrą za kilka lat - nie wymrą, bo będą tańsze, a rynek na ceny zawsze patrzy. :)

    No tu bym akurat polemizował - 32-bitowe uC już są tańsze od 8-bitowych.

    Ależ polemizuj: PIC10F200-I/P cena 1,16zł netto.
  • #1683 13438219
    BlueDraco
    Specjalista - Mikrokontrolery
    Posty: 6479
    Pomógł: 939
    Ocena: 421
    Faktycznie porównywalna z 40 MHz Cortexem z 8 K Flash, 2 K RAM, 9 timerami, ADC, UARTem, SPI, I2C. ;)

    No, ok, nie w detalu...
  • #1684 13438228
    dondu
    VIP Zasłużony dla elektroda
    Posty: 13906
    Pomógł: 1292
    Ocena: 809
    BlueDraco napisał:
    Faktycznie porównywalna z 40 MHz Cortexem z 8 K Flash, 2 K RAM, 9 timerami, ADC, UARTem, SPI, I2C. ;)

    Który i gdzie go można kupić w tej cenie i ile ma pinów - ja potrzebuję tylko 3 :)
  • #1685 13438252
    BlueDraco
    Specjalista - Mikrokontrolery
    Posty: 6479
    Pomógł: 939
    Ocena: 421
    Mini51FDN, jeszcze niedostępny, ale podobno niedługo mają być dostępne w detalu w Polsce. TSSOP20
    Za to podłączenie programatora dużo prostsze niż w PIC.
  • #1686 13438287
    dondu
    VIP Zasłużony dla elektroda
    Posty: 13906
    Pomógł: 1292
    Ocena: 809
    Gdzie są jakieś linki do niego - Google protestuje i nic sensownego nie daje?

    TSSOP20 jest niestety za duża do mojego projektu ... mam miejsce tylko 3mm x 3mm.

    Gdy Mini51FDN będzie w sprzedaży odczekamy pół roku i porównamy ceny oraz jego przydatność do mojego projektu i uwarunkowań projektowych opisanych w linku powyżej.
  • #1687 13438424
    ka_3
    Poziom 16  
    Posty: 295
    Ocena: 18
    @dondu dziękuję za punkty.
    w takim razie chyba odstawię AVR, i zacznę uczyć się ARM. Rok czasu to chyba wystarczający okres aby nauczyć się programowania ARM w takim stopniu aby dostać się na staż?
  • #1688 13438464
    dondu
    VIP Zasłużony dla elektroda
    Posty: 13906
    Pomógł: 1292
    Ocena: 809
    ka_3 napisał:
    w takim razie chyba odstawię AVR, i zacznę uczyć się ARM. Rok czasu to chyba wystarczający okres aby nauczyć się programowania ARM w takim stopniu aby dostać się na staż?

    Kierunek dobry, ale najpierw liźnij XMegi, bo mają sporo więcej niż ATmegi, a pozwoli Ci to nauczyć się łatwiej zadań typu DMA, itp. na bardziej rozbudowanych ARM, a dodatkowo będziesz miał o jedną rodzinę więcej, przy niewiele większym wysiłku i w miarę krótkim czasie. A później świat ARM będzie łatwiejszy, a Twoja wartość na rynku pracy wzrośnie :)

    EDIT:

    Jeszcze warto byłoby aby ktoś odpowiedział na pytanie:

    ka_3 napisał:
    Jak duża jest różnica pomiędzy programowaniem AVR a ARM?

    ... bo niedawno ktoś z ARM-owców napisał, że aby ustawić ADC w AVR wystarczą 3 rejestry, a w ARM kilkanaście - nie mogę znaleźć autora i zacytować :)
  • #1689 13438703
    tadzik85
    Poziom 38  
    Posty: 3404
    Pomógł: 415
    Ocena: 16
    dondu napisał:

    ... bo niedawno ktoś z ARM-owców napisał, że aby ustawić ADC w AVR wystarczą 3 rejestry, a w ARM kilkanaście - nie mogę znaleźć autora i zacytować :)

    Kłamał. góra 10. Góra 15 jak się wszystkie kanały chce przemiatać i dodać DMA.
  • #1690 13438751
    _coder
    Poziom 12  
    Posty: 47
    Pomógł: 5
    tak naprawdę bez różnicy jaki kontroler :D, w każdym jest warstwa sprzętu do której piszesz obsługę a później zajmujesz się tylko algorytmami, walczysz z poborem prądu itd. ,lepiej pracuj nad językiem algorytmami, obsługą jakiś układów, przetwarzaniem, poucz się przynajmniej trochę asm np na 8051, lepiej mieć pojecie trochę o wszystkim bo tak naprawdę nie wiesz gdzie będziesz pracować, może będziesz zajmował się wbudowanym linuxem, ja nie wiem co będzie jutro :D
  • #1691 13441659
    ka_3
    Poziom 16  
    Posty: 295
    Ocena: 18
    Właśnie myślałem nad ASM na AVR. Potem odstawić na chwilę AVR, zacząć zabawę z ARM, i wtedy zobaczyć co mi bardziej odpowiada.
    Mam pytanie od czego zacząć programowanie w ASM na AVR. Jaki dobry kurs lub książkę możecie polecić?
  • #1692 13442564
    tmf
    VIP Zasłużony dla elektroda
    Posty: 14318
    Pomógł: 2090
    Ocena: 2203
    Żadnej. Nie ma dobrej książki o asemblerze na AVR, a tym bardziej na ARM. Ktoś kto się za to bierze ma ku temu jakieś bardzo dobre powody i nie są to osoby początkujące. Wystarczy im więc wydany przez producenta np. AVR Instruction Set. Jeśli dopiero zaczynasz z mikrokontrolerami naucz się C, poznaj peryferia, a dopiero potem jak już będziesz wiedział co i jak zastanów się do czego potrzebujesz asemblera. Bo IMHO asembler obecnie potrzebny jest tylko do jednego - żeby podczas debugowania podglądnąć jak wygląda kod wynikowy i jak czasami debugger zostawi cię sam na sam z asemblerem, żeby mniej więcej się w tym połapać.
  • #1693 13446419
    ZbeeGin
    Poziom 39  
    Posty: 4299
    Pomógł: 600
    Ocena: 437
    tmf napisał:
    Nie ma dobrej książki o asemblerze na AVR

    Czyli, źle oceniasz obie książki Andrzeja Pawluczuka? :)
  • #1694 13446725
    tmf
    VIP Zasłużony dla elektroda
    Posty: 14318
    Pomógł: 2090
    Ocena: 2203
    Ok, żle to zabrzmiało :) Którą masz na myśli bo znalazłem tylko "Sztuka programowania mikrokontrolerów AVR. Przykłady" i o układach programowalnych. Jest tam coś o asemblerze na AVR?
  • #1696 13452848
    ka_3
    Poziom 16  
    Posty: 295
    Ocena: 18
    Tak jak pisałem moim celem jest dostanie się na staż związany z programowaniem mikrokontrolerów.
    Dowiedziałem od dwóch firm czym się zajmują obydwie mikrokontrolerami ARM, jedna z nich tylko ARM z rdzeniem Cortex M0, M3, M4. Jak tylko zrobię sobie coś na AVR, zaczynam zabawę z ARM. Jakie książki, jaki zestaw polecacie?
    Coś takiego będzie dobre? http://allegro.pl/stm32f429i-discovery-z-dotykowym-lcd-tft-i4089017339.html ??
  • #1697 13453141
    tmf
    VIP Zasłużony dla elektroda
    Posty: 14318
    Pomógł: 2090
    Ocena: 2203
    To może najpierw zrób coś na tym AVR. Bo bez obrazy, ale twoje pytania sugerują, że jesteś mocno początkujący. Więc zacznij obojętnie od czego, ale przede wszystkim poznaj mikrokontrolery, ich peryferia i C. Od jakiej rodziny zaczniesz ma mniejsze znaczenie.
  • #1698 13453144
    Tomq
    Poziom 38  
    Posty: 3408
    Pomógł: 363
    Ocena: 187

    Pierwsze starcie z mikrokontrolerami (dozwolone linki Allegro, eBay, itp)



    Edytuj

    Rozważam idee włącznika do uC który po włączeniu ma pracować do wystąpienia określonego warunku, a następnie ma całkowicie odłączyć się od sieci 230V.
    Czy powyższy schemat jest poprawny czy o czymś zapomniałem?

    W zamyśle działa to tak, że przełącznikiem chwilowym podajemy 230V do zasilacza, ten uruchamia mikrokontroler, a ten z kolei załącza przekaźnik i napięcie sieciowe jest już podawane do zasilacza poprzez przekaźnik (do czasu wystąpienia określonego warunku). Schemat jest mocno uproszczony i obrazuje jedynie idee. Zakładam, że pojemność kondensatorów zasilacza wystarczy do odpalenia uC.


    Czy taki układ ma szanse działać i czy będzie on bezpieczny w użytkowaniu?
  • #1699 13453343
    ka_3
    Poziom 16  
    Posty: 295
    Ocena: 18
    tmf napisał:
    To może najpierw zrób coś na tym AVR. Bo bez obrazy, ale twoje pytania sugerują, że jesteś mocno początkujący. Więc zacznij obojętnie od czego, ale przede wszystkim poznaj mikrokontrolery, ich peryferia i C. Od jakiej rodziny zaczniesz ma mniejsze znaczenie.

    Tak wiem, że jestem początkujący. Mikrokontrolerami interesuję się od nie dawna. Wszystkie firmy które organizują staże studenckie działają na ARM. Chciałbym od razu uczyć się tego.
  • #1700 13454804
    kamilszczygie
    Poziom 9  
    Posty: 39
    Ocena: 2
    Witam.
    Na wstępie zaznaczę, że przeczytałem tematy związane z programowaniem AVR'ów. Chciałbym zacząć zabawę z mikrokontrolerami no i tu się pojawia problem, jest dużo tematów z tym związanych, ale chciałbym poprosić kogoś doświadczonego żeby mi dobrał zestaw (budżetowy) taki na start, który pozwoli mi się nauczyć podstaw. Jestem na 4 roku technikum informatycznego lubie programowanie ale zawsze ciągnęło mnie do elektroniki. Kiedyś nawet uczęszczałem na koło z programowania mikrokontrolera 8051 (ASEMBLER) ale niestety za mało osób na to było chętnych i koło zamknięto. Asembler jest dla mnie jak na razie za trudny, chciałbym spróbować programowania w językach z rodziny C tu już mam jakieś podstawy ze szkoły.
    Pozdrawiam Kamil.
  • #1702 13454878
    kamilszczygie
    Poziom 9  
    Posty: 39
    Ocena: 2
    Wiem że jest tego od groma, ale chodzi mi o opinię osoby doświadczonej a nie gościa z byle strony który prowadzi sklep internetowy z częściami elektronicznymi.
  • #1703 13454893
    dedito
    Poziom 39  
    Posty: 4770
    Pomógł: 527
    Ocena: 593
    A skąd będziesz wiedział, że tutaj odpiszą Ci osoby doświadczone?
    Akurat te linki podane przez Mateusza prowadzą do osób, która zajmują się tym tematem przez wiele lat.
  • #1704 13454907
    dondu
    VIP Zasłużony dla elektroda
    Posty: 13906
    Pomógł: 1292
    Ocena: 809
    kamilszczygie napisał:
    Wiem że jest tego od groma, ale chodzi mi o opinię osoby doświadczonej ...

    Co do pierwszego linku: http://mikrokontrolery.blogspot.com/2011/01/autorzy-artykulow.html
    oraz liczniki POMÓGŁ, które znajdziesz po lewej stronie tego postu (będąc zalogowanym).
  • #1705 13459225
    tplewa
    Poziom 39  
    Posty: 6727
    Pomógł: 222
    Ocena: 988
    kamilszczygie

    Po pierwsze to własne chęci i inicjatywa tzn. szukanie sobie wyzwań :) Mówienie że coś jest za trudne to nie najlepsza droga ;)

    Co do zestawów to z mojego doświadczenia nie ma sensu kupować jakiś rozbudowanych. Ja z perspektywy czasu doszedłem że najlepsze są moduły z procesorem + ewentualnie układ zasilania, usb etc. i wszystkie porty wyprowadzone na goldpiny. Niestety zestawy wypakowane różnymi modułami w późniejszym czasie bardziej ograniczają niż pomagają (ot choćby przepięcie czegoś na inny port procesora). Jak już taki zestaw to aby miał możliwość rozłączania tego co jest na płycie za pomocą jumperów i możliwość łączenia kabelkami.

    Co do AVR-ów to chyba obecnie można polecić najlepiej xMega, nie wiem czy jest sens zaczynać od mniejszych (patrząc na ceny). Do tego z xMega przesiadka na małe AVR-y będzie łatwiejsza - tak samo na ARM-y (chodzi o DMA itd. czyli poznanie jak działają takie bloki).

    Poza samym C/C++ też warto przynajmniej liznąć trochę assemblera (ot podstawy) i całą wiedzę jak operować na rejestrach itd. czyli na początku unikanie gotowych bibliotek do minimum (one przydają się później jak nie chcemy tracić czasu).

    Na początek chyba obecnie niezłym wyborem będzie X3-DIL64 z ATxmega128A3U + płytki stykowe, trochę kabelków itd. aby coś na nich można było poskładać. No i do tego programować, programować i jeszcze raz programować bo bez tego nic nie wyjdzie. Ot bawić się i pisać od prostych programów to coraz bardziej rozbudowanych.

    He he i tak na to patrzę i niezły wywód mi wyszedł, a wystarczyło by poszukać i na forum znajdzie się nie jeden podobny ;) Więc zamiast szukać opinii poczytać to co jest na forum, kupić zestaw i brać się do pracy.
  • #1706 13460934
    kamilszczygie
    Poziom 9  
    Posty: 39
    Ocena: 2
    Dziękuję za wyczerpującą wypowiedź. Napewno dam znać jak mi idzie programowanie :)
  • #1707 13503440
    Tomq
    Poziom 38  
    Posty: 3408
    Pomógł: 363
    Ocena: 187
    Jak zapisuje się do EEPROMU w Atmedze liczbę typu integer? Zaznaczam, że nie chcę korzystać z gotowych funkcji (eeprom_read_word).

    Poniższy kod oparty o dokumentacje Atmegi32 bez problemu zapisuje zmienne 8-bitowe.
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod



    Czy przy zapisie zmiennej 16 bitowej (typu int) powinienem użyć wskaźników? Jeśli tak, to jak to zrobić?
  • #1708 13503449
    McMonster
    Poziom 32  
    Posty: 1942
    Pomógł: 182
    Ocena: 57
    Liczbę 16-bitową można łatwo pokroić na dwie części 8-bitowe i zapisać je obok siebie w pamięci.
  • #1710 13503499
    McMonster
    Poziom 32  
    Posty: 1942
    Pomógł: 182
    Ocena: 57
    Tego już nijak nie przeskoczyć. Rejestr danych ma 8 bitów i tyle jednocześnie zapiszesz, chcesz więcej, to musisz kroić. Z ciekawości tylko zapytam, dlaczego nie używasz funkcji bibliotecznych?
REKLAMA