Elektroda.pl
Elektroda.pl
X
CControls
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

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

MLukasz 19 Lip 2008 21:34 11555 6
  • #1 19 Lip 2008 21:34
    MLukasz
    Poziom 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.

    0 6
  • CControls
  • Pomocny post
    #2 19 Lip 2008 21:51
    elektryk
    Poziom 42  

    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.

    0
  • CControls
  • #3 19 Lip 2008 22:22
    MLukasz
    Poziom 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

    0
  • Pomocny post
    #4 19 Lip 2008 22:50
    JollyRoger
    Poziom 21  

    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

    0
  • Pomocny post
    #5 22 Lip 2008 18:00
    pessos
    Poziom 10  

    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

    0
  • #6 23 Lip 2008 00:33
    Freddie Chopin
    Specjalista - Mikrokontrolery

    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!!

    0
  • Pomocny post
    #7 24 Lip 2008 03:11
    Zaquadnik
    Poziom 27  

    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ą :)

    0