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

uC - jaki? jaki język? jaki programator? od czego zacząć?

budus2 21 Kwi 2008 20:21 3619 14
REKLAMA
  • #1 5061966
    budus2
    Poziom 12  
    Posty: 50
    Pomógł: 4
    Witam
    Szukałem na forum, ale nie znalazłem zadowalającej mnie odpowiedzi.

    Otóż chciałbym zacząć programować mikrokontrolery.
    Kiedyś bawiłem się na komputerze programowaniem w C++.
    Na forum wyczytałem, że skoro już jestem troszkę, podkreślam - TROSZKĘ, obeznany to nie bawić się w Bascom'y i inne Basic'i.
    Jednak mam jeszcze kilka pytań:
    1)Tak dla pewności - który język wybrać?
    2)Jakie procesory wybrać na początek?
    3)Jaki programator do tego? Lepiej kupić gotowy czy samemu zrobić? Ktoś pisał że przy niektórych programatorach jeśli procesor zostanie uszkodzony podczas programowania, to może zostać uszkodzona płyta główna komputera (a na tym mi akurat nie zależy).

    Proszę o jakieś ukierunkowanie mnie i polecenie jakiegoś projektu na początek. Naprawdę używałem szukaj, ale nie znalazłem tego czego chcę!

    Pozdrawiam
  • REKLAMA
  • Pomocny post
    #2 5062166
    Konto nie istnieje
    Poziom 1  
  • Pomocny post
    #3 5062227
    MacGyver 7
    Poziom 21  
    Posty: 417
    Pomógł: 37
    Ocena: 41
    1. Jeśli chcesz się naprawdę nauczyć jak działa procesor to wybierz assembler, jeśli µP ma tylko sterować diodami itp. to język C.
    2. Proponowałbym AVR, gdyż oprócz 8051 (które są już przestarzałe) jest o nich bardzo dużo publikacji.
    3. Kup jakiś tani programator ISP z allegro (ok 20pln). Nie będziesz musiał za każdym razem przekładać procka podczas testowania działania programów.
  • #4 5064017
    budus2
    Poziom 12  
    Posty: 50
    Pomógł: 4
    Wielkie dzięki za podpowiedzi.
    Czyli znając wasze zdanie i zdanie innych na forum, nastawiłem sięna zakup tego uC
    http://allegro.pl/item348962740_uc_atmega8_16pu_dip28_atmel_atmega_avr_f_vat.html
    jest tani a na początek chyba wystarczy nie?
    A czy możecie mi jeszcze polecićjakieś kursy albo książki?
    Mam symfonie c++ ale programowanie na PC jest trochę inne niż programowanie mikrokontrolerów.
  • REKLAMA
  • Pomocny post
    #5 5064996
    MacGyver 7
    Poziom 21  
    Posty: 417
    Pomógł: 37
    Ocena: 41
    Ja posiadam "Projektowanie systemów mikroprocesorowych" P. Hadama. Chodź książka skupia się na układach zewnętrznych (wyświetlaczach, przekaźnikach, klawiszach itp.) to są w niej przedstawione procedury sterujące w języku C.
    Jeśli chcesz się dokładnie skupić na µP to "Mikrokontrolery AVR ATMega w praktyce" Baranowskiego, ale tam wszystko jest opisywane w Assemblerze.

    Po za tym że koszt wysyłki jest wyższy niż cena samego µP to ten procek jest ok.
  • #6 5090229
    budus2
    Poziom 12  
    Posty: 50
    Pomógł: 4
    Witam po przerwie.
    Przeglądają elektrodę natknąłem się na:
    https://www.elektroda.pl/rtvforum/topic581242-0.html
    Bardzo mnie to zainteresowało :D, a sądzę że jest to dość prosty projekt.
    Zamierzam stworzyć włąśnie takie cudo tylko że na atmega8
    Ale, że jestem jeszcze zielony to pojawiły się kolejne problemy:
    1)
    Otóż czym różnią się atmega8L atmega8 atmega 8 16PU atmega8 8PU Atmega8 16AU
    Co oznaczją te literki AU PU i L??
    2)
    Poza tym chcę się również pozbyć termometru, zegarem zostanie, ale myślę nad kalendarzem, żeby wyświetlał poprostu 29.04.08.
    Jakiś inny układzik do tego potrzebny czy ten od zegarka i żeby co 24h zmieniało o jeden datę?
    3)
    Chcę zwiększyć też pamięć, ale nie wiem którą zastosować 24c02/04/08/16/32/64 i nigdzie nie mogę docieć jaką one mają pojemność w kilobajtach.

    Znalazłem taką książkę:
    http://allegro.pl/item348278156_mikrokontrolery_avr_atmega_od_ss_wysylka_0_.html

    jak myślicie, warto??

    i ostatnie 2 kwestie

    4)
    Bardzo proszę o link do schematu jakiegoś programatora oraz do aucji bądz oferty z gotowym
    Programator musi umieć programować właśnie atmege8( bo od niej będę zaczynać) Proszę Was, bo dla mnie te wszystkie parametry i nazwy są jeszcze jakimiś nieznanymi słowami :D
    5)
    Co do języka to zdecyduję się chyba na C bo zobaczyłem to:
    http://pl.wikipedia.org/wiki/Assembler
    tam niżej jest porównanie programu hello world w C i assemlerze :D:D
  • Pomocny post
    #7 5090255
    don diego
    Poziom 32  
    Posty: 1557
    Pomógł: 165
    Ocena: 63
    Książka bardzo dobra. Nauczyłem się assemblera AVR głównie dzięki niej. Koniecznie przeczytaj przyklejone tematy w dziale Mikrokontrolery. Znajdziesz tam masę informacji, między innymi o programatorach.
    Jest jeszcze książka "Mikrokontrolery AVR w praktyce" Jarosława Dolińskiego. Są w niej zawarte przykłady w C. Opiera się na AT90S2313, ale wiele informacji jest uniwersalnych dla całej rodziny AVR.
  • REKLAMA
  • #8 5090345
    wigor
    Poziom 12  
    Posty: 48
    Pomógł: 1
    Ocena: 1
    Hej!Też zaczynam właśnie edukację na temat tych urządzeń i widzę że trafiłem w samo sedno!co prawda miałem w szkole asembler na procku '51 ale mało materiałów i czasu też za dużo więc się odwlekło!interesuje mnie właśnie jakiś programator i procesor żeby coś tam sobie działać i nie wiem jaki na początek więc się rozglądam!
  • #9 5091793
    budus2
    Poziom 12  
    Posty: 50
    Pomógł: 4
    A ja w szkole niestety nie miałem nic o programowaniu, bo jestem w 3 gimnazjum.
    Don diego dzięki, że podałeś mi tę książkę
    Nie wiedziałem, że są różne wersje tego podręcznika.
    I chyba rzeczywiście zdecyduję się na tę podaną przez ciebie, bo ona wygląda mi na taką ogólniejszą, i początkującą.
    Jednak proszę o podpowiedzi, która księga na początek?
  • #10 5092073
    don diego
    Poziom 32  
    Posty: 1557
    Pomógł: 165
    Ocena: 63
    To są różne książki, różnych autorów. Ja uczyłem się assemblera, więc zacząłem od książki Baranowskiego. Jeśli chodzi o przystępność wiedzy, to są one na podobnym poziomie.
  • #11 5093828
    Paweł Es.
    VIP Zasłużony dla elektroda
    Posty: 6981
    Pomógł: 1236
    Ocena: 690
    Możesz też użyć Bascoma (jest książka Marcina Wiązani na ten temat) ale tak na prawdę to nie ma jednoznacznej odpowiedzi na takie pytania. Wszystko zależy do czego będziesz używał mikroprocesorów. Do jednych zadań będzie efektywniejszy asembler a do innych język wysokiego poziomu. Do szybkiego zaprogramowania czegoś tam i uruchomienia będzie wygodny Bascom, bo on wspiera od tworzenia programu, przez kompilację i symulację do zaprogramowania układu. Ma jednak wadę, że dość szybko zużywa zasoby procesora (pamięć programu). Jak znasz C to łatwiej ci będzie kontynuować w C np. przez WinAVR

    http://sourceforge.net/projects/winavr/

    Wymaga instalacji AVR Studio (także jeżeli chcesz walczyć tylko w asemblerze)

    http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2725

    Bascom

    http://www.mcselec.com/index.php?option=com_docman&task=cat_view&gid=73&Itemid=54
  • #12 5095841
    budus2
    Poziom 12  
    Posty: 50
    Pomógł: 4
    Teraz to się już troszkę zamotałem...
    Cytat:
    Do jednych zadań będzie efektywniejszy asembler a do innych język wysokiego poziomu.

    Co oznacz "wysokiego poziomu??
    Myślałem że Assembler to dobry, trudny język... co to znaczy??
    Ja dopiero zaczynam programowanie, więc żaden większy/trudniejszy/bardziej skomplikowany projekt się nie szykuje.
    I tu Was proszę:
    który Wy polecacie (który według Was jest dla mnie najlepszym wyjściem?)

    C , Bascom , Assembler
    ???
  • REKLAMA
  • Pomocny post
    #13 5096021
    Paweł Es.
    VIP Zasłużony dla elektroda
    Posty: 6981
    Pomógł: 1236
    Ocena: 690
    Do zadań gdzie musisz np. robić coś bardzo szybko i dokładnie móc wyliczyć zależności czasowe używasz asemblera. Ma on tę zaletę, że dokładnie panujesz nad sprzętem i wiesz dokładnie jak są realizowane poszczególne funkcje. Wadą jest jednak, że wszystkie wyższe formy (typu obliczenia zmienno przecinkowe, złożone formy zależności funkcyjnych, liczenie na zmiennych wyższej precyzji wymagają większego nakładu pracy i wprawy by się nie pomylić.
    Poza tym każdy typ procesora (typ w sensie konstrukcji a nie podwersji jednej serii) ma swój asembler przeważnie inny od sąsiada. Inny asembler ma seria 8051 (8031,8032,8052), inny procesory Atmela (serie ATiny, ATmega) jeszcze inny Microchipa (seria PIC), Ziloga (Z80 i nowsze), Rockwella (6500), Motoroli (6800, 68000), Intela (wersje od starych 8086 do najnowszych Pentium). Zasady pisania programów są podobne ale różnice są w możliwościach, nazwach rozkazów a nawet w dostępności pewnych rozkazów na dany typ procesora. Każdy producent stawia sobie chyba za punkt honoru wymyślić nowe nazwy rozkazów często mocno odbiegające od konkurencji co zmusza osobę chcącą napisać coś na dany procesor do żmudnego przebijania się przez nową "odkrywczą" filozofię nazewniczą. Do tego jeszcze dochodzą różne nazwy rejestrów bloków wewnętrznych procesora, więc jest z tym trochę pracy (aczkolwiek w granicach ludzkich możliwości, bo filozofia pisania jest podobna).


    Języki wysokiego poziomu to te, w których piszesz w pseudoangielskim: C,Basic, Pascal itd. Mają one tę zaletę, że są bardziej czytelne, operujesz na formach bardziej abstrakcyjnych i nie musisz się zastanawiać jak rozpisać złożone konstrukcje np.

    IF ((A=B) AND (B>=C)) OR (D IN [1...7]) THEN

    na proste rozkazy konkretnego procesora gdzie masz dostępne np. tylko operowanie na bajtach a zmienne A, B i C są wielobajtowe, nie trzeba pamiętać kiedy sprawdzać znacznik przeniesienia i czy możesz użyć rozkazu skoku względnego czy też jednak trzeba użyć bezwzględnego bo odległość skoku przekracza zasięg tego pierwszego.

    Z drugiej jednak strony zostajesz odseparowany od poziomu sprzętu co czasami powoduje, że napisany kod nie jest optymalny, np. jest za wolny albo za obszerny (bo wstawiane są w kod nawet te fragmenty bibliotek uniwersalnych, z których w programie nie korzystasz).

    Dlatego dobrze jest znać i podstawy asemblera jak i języki wyższego poziomu, bo do różnych zadań może być przydatna wiedza z wielu kierunków pozwalająca na efektywne wykonanie zadania i efektywne wykorzystanie dostępnego sprzętu.
    Nie musisz być specjalistą z każdego języka ale dobrze liznąć podstawy każdego, bo to wyrabia elastyczność w myśleniu i pozwala w miarę szybko przesiąść się na nowe narzędzie (bo nigdy nie wiesz co będziesz miał w danym miejscu dostępne narzędzia).


    Zacznij od podstaw czyli umiejętności tworzenia algorytmów, czyli opracowania metody wykonania zadania w skończonej ilości kroków.
    Naucz się rozpisać problem na kroki elementarne: przenoszenie wartości pomiędzy zmiennymi, operowania zmiennymi prostymi, tablicami, strukturami, stosowania warunków i stworzenia struktury przepływu danych czy realizacji programów.

    Konkretny język to sposób kodowania powyższego algorytmu dla procesora, bez powyższej wiedzy jest małoprzydatny.

    Jeżeli zdecydujesz się na konkretny typ procesora, to wtedy możesz uczyć się jego asemblera, to jest przydatna wiedza.

    A co do języków wysokiego poziomu (Basic, C, Pascal) to zapoznaj się z każdym (przynajmniej w zakresie podstawym) i wtedy dopiero podejmij decyzję, który ci najbardziej leży (z uwzględnieniem problemów jakie chcesz rozwiązywać, bo też nie ma sensu używać "armat" jak chcesz zapalać tylko diodki i na tym zakończyć zabawę).

    Dobrą nauką jest analiza gotowych programów napisanych przez inne osoby, bo poznajesz od razu jakw yglądają różne struktury w programie co w literaturze jest często zagmatwane w opisie (szczególnie dla osoby początkującej)

    Jeżeli chcesz się bawić w Atmele to zacznij od Bascoma, jest najprostszy a w książce M. Wiązani masz też podane podstawowe rozwiązania układowe, pozwalające krok po kroku robić co raz bardziej skomplikowane rzeczy. C (kompilator WinAVR) jest dobry jak już zaczniesz panować nad sprzętem, bo na początek jest nieczytelny poza tym wymaga sporo konfiguracji i kilku kroków dla zaprogramowania układu, co w Bascomie robisz w jednym programie.
  • #14 5096080
    budus2
    Poziom 12  
    Posty: 50
    Pomógł: 4
    Paweł Es. naprawdę wielkie dzięki.
    Na początek zabiorę się za C, bo miałem z nim już jakąś styczność.
    Poza tym skoro napisałeś, że każdy(prawie) procesor ma swoje (trochę inne niż sąsiad) nazwy rozkazów itd. , to narazie nie mam co się za niego brać.
    Wydaje mi się że dla mnie będzie narazie dobry właśnie język wysokiego poziomu, bo dość dobrze władam angielskim.

    Pozostaje tylko pytanie(trochę dziwne, ale...)
    Czy każdy uC można zaprogramować każdym językiem?
    To znaczy czy np. Atmege8 mogę zaprogramować przy pomocy C?

    Ps. to stare pytanie o te literki przy nazwach już nie aktualne.
    Znalazłem o co chodzi :D


    ---------
    Kupię programator STK200 za 12,99 na allegro (ktośnie wie gdzie to jest to w szukajke wpisać: Programator ISP STK200/300 RoHS AVR ATMEL (STK200) )

    pisałem wcześniej, że chcę zrobić coś takiego:
    https://www.elektroda.pl/rtvforum/topic581242-0.html

    jednak odkryłem problem. Otóż żeby zmieścił się jakiś sensowny kawałek tekstu, potrzebna jest jakaś pamięć.

    Czy dobrze mi się wydaje, że żeby zaprogramować pamięć potrzebuję innego programatora?

    Więc narazie będzie bez pamięci:D tylko zegarek i termometr:D - przyda się w szkole
  • #15 5097671
    Michal19881
    Użytkownik obserwowany
    Posty: 1015
    Pomógł: 57
    Ocena: 62
    Proponuję zestaw DSM-51 na uC 8051 i język asembler :)

Podsumowanie tematu

✨ Rozpoczynając naukę programowania mikrokontrolerów, zaleca się wybór popularnych układów RISC, takich jak PIC (Microchip) lub AVR (Atmel), ze względu na szeroką dostępność materiałów i wsparcie. Język programowania powinien być dostosowany do celu: asembler dla pełnej kontroli i krytycznych czasowo aplikacji, język C dla wygody i większych projektów, a Bascom jako szybkie narzędzie do prototypowania, choć mniej efektywne pamięciowo. Na start polecany jest mikrokontroler Atmega8 (AVR), który jest tani i dobrze udokumentowany. Do programowania warto kupić gotowy programator ISP, np. STK200, który jest tani i wygodny, choć można też wykonać własny, jeśli posiada się odpowiednią wiedzę elektroniczną. Warto zapoznać się z książkami takimi jak "Mikrokontrolery AVR ATMega w praktyce" Baranowskiego (assembler) oraz "Projektowanie systemów mikroprocesorowych" P. Hadama (język C i obsługa peryferiów). Różnice w oznaczeniach wersji mikrokontrolerów (np. atmega8L, 8PU, 16PU, 16AU) dotyczą parametrów technicznych i obudowy. Dodatkowo, do rozszerzenia pamięci można użyć układów EEPROM serii 24Cxx, gdzie liczba oznacza pojemność w kilobitach (np. 24C02 = 2 kbit). Programowanie mikrokontrolerów w języku C jest możliwe i powszechne, szczególnie dla AVR, z wykorzystaniem narzędzi takich jak WinAVR i AVR Studio. Wybór języka i sprzętu zależy od stopnia zaawansowania i planowanych zastosowań, jednak dla początkujących rekomendowany jest język C i popularne mikrokontrolery AVR z gotowymi programatorami ISP.
Wygenerowane przez model językowy.
REKLAMA