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

Od czego zacząć programowanie mikrokontrolerów, assembler.

MLukasz 19 Lip 2008 21:34 12305 6
REKLAMA
  • #1 5358513
    MLukasz
    Poziom 2  
    Posty: 2
    Witam.

    Chciałbym nauczyć się od podstaw programować mikrokontrolery. Swój początek przygody mam zamiar rozpocząć z zestawem uruchomieniowym dla mikrokontrolerów PIC16F690, który pozwoliłby mi nauczyć się na nim podstaw programowania w assemblerze.

    Zwracam się do użytkowników forum jako do doświadczonych w tym fachu osób z kilkoma pytaniami:

    1. Jak mogę poznać podstawy assemblera? (Assembler czy asembler?)

    2. Jaka obecnie dostępna literatura pozwoli mi na opanowanie postaw, wyjaśni mi czym dokładnie są stosy, rejestry i jak na nich mogę dokonywać konkretne operacje? Jakie pojęcia powinienem poznać?
    (Będąc w księgarni technicznej znalazłem tylko dwie książki, które były napisane dla osób zaawansowanych).

    3. Słyszałem, że mikrokontrolery można programować w wielu środowiskach, czy assembler ma przyszłość, czy jak później zmieniłbym "rodzinę" procesorów nie będę miał problemów z ich programowaniem?

    4. Czy jest coś na co powinienem uważać, zwrócić uwagę?

    Z góry bardzo dziękuję za pomoc.

    Stosując się do ogłoszenia w tej części forum podam wszystkie informacje, które zamieścił producent

    DV164120 Zestaw uruchomieniowy dla mikrokontrolerów PIC16F690 Grupa
    Producent: MICROCHIP Symbol oryginalny: DV164120

    Zdjęcie ze strony tme.pl.

    Pozdrawiam,
    MLukasz

    P.S. Przepraszam za błędy.
    Rozumiem, że nauka programowania to ciężka praca, co miałem okazję doświadczyć. Wiem, że na początku będę musiał zadowolić się bardzo prostymi programami.
  • REKLAMA
  • Pomocny post
    #2 5358573
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    MLukasz napisał:
    1. Jak mogę poznać podstawy assemblera? (Assembler czy asembler?)
    Ja zaczynałem od PC, dużo programów, przykładów i dokumentacji. Musisz zdobyć nawyki i przyzwyczaić się do projektowania algorytmów na bardzo niskim poziomie.

    MLukasz napisał:
    2. Jaka obecnie dostępna literatura pozwoli mi na opanowanie postaw, wyjaśni mi czym dokładnie są stosy, rejestry i jak na nich mogę dokonywać konkretne operacje? Jakie pojęcia powinienem poznać?
    (Będąc w księgarni technicznej znalazłem tylko dwie książki, które były napisane dla osób zaawansowanych).
    Rejestr jest są pojęciem podstawowym wywodzi się od sprzętu, stos jest strukturą programową. Jeśli chodzi o operacje to musisz już się nastawić na określoną rodzinę.

    MLukasz napisał:
    3. Słyszałem, że mikrokontrolery można programować w wielu środowiskach, czy assembler ma przyszłość, czy jak później zmieniłbym "rodzinę" procesorów nie będę miał problemów z ich programowaniem?
    Każda rodzina to trochę inny asembler, inna składnia, inna opcje, inne instrukcje. Do tego dochodzą różnice między określonymi asemblerami ("kompilatorami") które mają inny opis tego samego.

    MLukasz napisał:
    4. Czy jest coś na co powinienem uważać, zwrócić uwagę?
    99% problemów i błędów przy pisaniu jest to Twoja i tylko Twoja wina.
  • REKLAMA
  • #3 5358659
    MLukasz
    Poziom 2  
    Posty: 2
    Bardzo dziękuję za szybką odpowiedź.

    * * *

    W temacie [PIC + dsPIC] Jak się za to zabrać, czyli kompendium, w pierwszym poście autorstwa Pana Freddie Chopina mogę przeczytać:


    Cytat:
    III.1. Jaki assembler?

    Najlepszym wyborem do pisania programów w assemblerze będzie środowisko MPLAB, które w standardzie zawiera assemblery do wszystkich istniejących procesorów PIC. Dodatkowo zawiera ono bardzo rozbudowane symulatory układów, które pozwalają na szybkie sprawdzenie poprawności działania stworzonego kodu.

    Na postawie tej oraz powyższej wypowiedzi wnioskuję, że mikrokontroler mogę programować w dowolnym środowisku asemblera.
    W wyszukiwarkach znalazłem, że najbardziej popularnymi są:
    NASM, FASM, MASM.
    Czy mógłbym otrzymać radę opartą na Państwa doświadczeniach, związanych z wyborem środowiska?
    Czy mój wybór jest obojętny?
    W jednym z kursów internetowych przeczytałem
    Cytat:
    MASM (wersje 32-bitowe)

    czy to oznacza, że będę mógł programować mikrokontrolery tylko 32-bitowe?

    Z wyrazami wdzięczności,
    MLukasz
  • Pomocny post
    #4 5358760
    JollyRoger
    Poziom 21  
    Posty: 538
    Pomógł: 21
    Ocena: 30
    Każda rodzina procesorów ma inny kompilator ASM ponieważ w każdej rodzinie występują różne instrukcje.
    Np. dla AVR jest to AVRStudio.

    Jeżeli zależy Ci na uniwersalności to polecam C, albo łatwiejszy Basic (kompilator dostępny dla AVR, '51 (Bascom) i PIC ).

    Pamiętaj tylko że assembler to język niskiego poziomu operujący na rozkazach masynowych procesora a więc nie ma tam poleceń typu
    LCD "jakiś_tekst" itp - wszystko robisz ręcznie.

    Dodano po 1 [minuty]:

    Zresztą zobacz tutaj: www.mikrokontrolery.net
  • REKLAMA
  • Pomocny post
    #5 5367153
    pessos
    Poziom 12  
    Posty: 35
    Pomógł: 1
    Ocena: 1
    Witam,
    Ja zaczynałem przygodę z asemblerem od kursu
    MICROCONTROLLER TUTORIALS - PIC
    co prawda pisany (jak 95% kursów asm na PIC) pod 16f84 jednak bez problemu po przeczytaniu i zrozumieniu można nauczyć asm się na praktycznie każdym 8bitowym PIC - środowisko MPLAB
    Kolejny kurs z którego korzystam to
    PIC Elmer 160
    pisany pod kątem radiowców ale nie zaszkodzi jak zerkniesz i tam z pewnością też się nauczysz :)

    Pozdrawiam
    Szymon
  • #6 5368627
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    znajdz na stronie microchip'a user guide do pickit'a 2 - jest tam fajny kurs podstaw asm.

    Moderowany przez McRancor:

    Zbędne zaczepki i resztę nie na temat z tego tematu usunąłem


    4\/3!!
  • REKLAMA
  • Pomocny post
    #7 5372398
    Zaquadnik
    Poziom 27  
    Posty: 998
    Pomógł: 103
    Ocena: 25
    Cóż, po kolei opowiem co nieco z moich doświadczeń.

    MLukasz napisał:

    1. Jak mogę poznać podstawy assemblera? (Assembler czy asembler?)


    Musisz poczytać nieco o architekturze procka. W zasadzie może być dowolny. Może to być standardowy procek "PCtowy" (mam tu na myśli architekturę x86). Do tego polecam książkę "Jak pisać wirusy". Jest to podstawowy kurs asemblera x86 (na zwykłe PC). Jest tam omówiona od podstaw zarówno architektura x86 jak i sposób jej działania. Polecam kompilator TASM (lub inny podobny) i eksperymenty z pisaniem w asemblerze na PC. Sam się tak uczyłem. Jest to może skok na głęboką wodę. W sumie PC jest o wiele bardziej skomplikowany niż uC.
    Generalnie, nieważne od jakiego procka zaczniesz, poczytaj trochę o budowie i działaniu procesora.

    MLukasz napisał:

    2. Jaka obecnie dostępna literatura pozwoli mi na opanowanie postaw, wyjaśni mi czym dokładnie są stosy, rejestry i jak na nich mogę dokonywać konkretne operacje? Jakie pojęcia powinienem poznać?


    Co do literatury to patrz wyżej. Natomiast do mikrokontrolerów to tak:, do 8051 książka Andrzeja Rydzewskiego "Mikrokomputery jednoukładowe rodziny MCS-51". Co do AVR to nie używałem niczego poza datasheetem, ale forumowicze polecają książki z BTC. Na PICe podobnie, datasheet. Co do ARMów 7 to opis instrukcji asemblerowych można znaleźć w opisie architektury ARM7TDMI, natomiast pomijają go producenci w datasheetach. Generalnie, jeśli nauczysz się jak procesor myśli (czyli nauczysz się pisać w jednym asemblerze) to łatwo pójdzie z programowaniem innych procków.

    MLukasz napisał:

    3. Słyszałem, że mikrokontrolery można programować w wielu środowiskach, czy assembler ma przyszłość, czy jak później zmieniłbym "rodzinę" procesorów nie będę miał problemów z ich programowaniem?


    Do każdej rodziny jest inne środowisko, ponieważ każda rodzina ma inną architekturę i inną listę rozkazów. Ogólnie programy asemblerowe są najmniej "przenoszalne" pomiędzy różnymi rodzinami uC. Jeśli chcesz coś bardziej uniwersalnego to polecam C. Odradzam natomiast BASCOMa, oducza myślenia.

    MLukasz napisał:

    4. Czy jest coś na co powinienem uważać, zwrócić uwagę?


    Cóż, w asemblerze musisz nauczyć się panować nad tym co się dzieje w rejestrach, co jest w danych miejscach w pamięci i co wrzuciłeś oraz co powinieneś zdjąć ze stosu na przykład po zakończeniu danej procedury wywołanej rozkazem call (lub jego odmianą), gdyż program wyjdzie z niej na manowce, jeśli tego nie kontrolujesz. Alokacja pamięci na dane także należy do Ciebie, kompilator tego za Ciebie nie zrobi. Tyle mi się nasuwa.

    Powodzenia w zmaganiach:) Jak coś, służę pomocą :)

Podsumowanie tematu

✨ Rozpoczęcie nauki programowania mikrokontrolerów PIC16F690 w asemblerze wymaga zrozumienia podstaw architektury procesora, takich jak rejestry i stos, oraz specyfiki danej rodziny mikrokontrolerów, ponieważ każda z nich posiada własny zestaw instrukcji i składnię asemblera. Zaleca się zdobycie nawyków projektowania algorytmów na niskim poziomie oraz korzystanie z dokumentacji i przykładów. Popularne środowiska asemblerowe, takie jak NASM, FASM czy MASM, nie są uniwersalne dla mikrokontrolerów, gdyż każdy producent oferuje dedykowane narzędzia (np. MPLAB dla PIC, AVRStudio dla AVR). Dla początkujących polecane są kursy i literatura dostosowane do konkretnej rodziny, np. kursy PIC (np. MICROCONTROLLER TUTORIALS - PIC, PIC Elmer 160) oraz dokumentacja producenta (datasheet). Warto rozważyć naukę języków wyższego poziomu, takich jak C lub Basic (Bascom), dla większej uniwersalności i łatwości programowania. Asembler pozostaje językiem niskiego poziomu, wymagającym ręcznego zarządzania instrukcjami maszynowymi, bez abstrakcji typowych dla języków wysokiego poziomu. Przy nauce asemblera pomocne są także kursy dotyczące architektury procesorów x86, które choć bardziej skomplikowane, uczą podstaw działania procesora i asemblera. Ważne jest, aby zwracać uwagę na specyfikę i różnice między rodzinami mikrokontrolerów oraz ich narzędziami programistycznymi.
Wygenerowane przez model językowy.
REKLAMA