przewodnik krok po kroku do programowania mikrokontrolerów
jest to przewodnik krok po kroku dla tych, którzy chcą zacząć od programowania mikrokontrolerów. Artykuł zaczyna się od wprowadzenia kilku podstawowych pojęć, które będą używane w przewodniku, listy narzędzi, języków programowania i na końcu, przykład kodu do pobrania z przewodnikiem krok po kroku, który można wykorzystać do Ćwiczenia programowania mikrokontrolerów.
ale przed przejściem do programowania mikrokontrolerów. Zdefiniujmy pierwsze dwa podstawowe pojęcia: Sprzęt i oprogramowanie.
Sprzęt składa się z fizycznych komponentów systemu, takich jak Układy scalone, klawiatura, mysz, monitor, pamięci, urządzenia We/Wy. Sprzęt jest trudniejszy do opracowania w porównaniu z oprogramowaniem, musi być zaprojektowany do bardzo konkretnych zastosowań i jest bardzo wydajnym i doskonałym rozwiązaniem w szybkich systemach.
oprogramowanie to niefizyczne komponenty lub aplikacje działające na sprzęcie, takie jak systemy operacyjne, gry komputerowe i aplikacje sieciowe. Oprogramowanie jest wysoce konfigurowalne, łatwe i szybsze w opracowaniu, a także bardzo tanie w porównaniu do sprzętu.
czym jest mikrokontroler
aby zrozumieć, czym jest mikrokontroler, musimy najpierw zrozumieć, czym jest mikroprocesor lub procesor (jednostka centralna). Procesor jest sercem każdego systemu komputerowego, jest jak ludzki mózg podczas wykonywania zadania. Zasadniczo możemy podzielić go na dwie zasadnicze części:
Jednostka Sterująca: Ta jednostka służy do pobierania danych z pamięci.
Jednostka wykonania: Ta jednostka służy do wykonania lub uruchomienia danych.
rodzaje procesorów
istnieje wiele kategorii procesorów, takich jak procesory ogólnego przeznaczenia, procesor systemowy specyficzny dla aplikacji i system wieloprocesorowy. Procesor ogólnego przeznaczenia ma wiele typów:
Microp mikroprocesor
Microc mikrokontroler
Embedded procesor wbudowany
Digital Cyfrowy procesor sygnałowy
mikroprocesor jest urządzeniem półprzewodnikowym lub komputerem na chipie, ale nie w pełni funkcjonalnym komputerem. Jego centralna jednostka procesorowa zawiera
ALU ALU
▪ liczniki programów
▪ rejestry
Other inne układy (Taktowanie czasu, przerwanie)
mikrokontroler to układ scalony, który zawiera mikroprocesor i niektóre urządzenia peryferyjne, które mają być kompletnym funkcjonalnym komputerem, urządzeniami peryferyjnymi, np. ADC, RAM, ROM, DAC.
Historia mikrokontrolerów
pierwotnie firma Intel corporation była pierwszą produkcją mikrokontrolerów. Pierwszy mikrokontroler został wyprodukowany w 1971 roku w USA. Był to 4-bitowy mikrokontroler o nazwie i4004. Później Intel produkował bardziej wyrafinowane modele w tym czasie z mikrokontrolerem 8-bitowym, a następnie 12-bitowy mikrokontroler został opracowany przez Toshibę.
zastosowania mikrokontrolerów
mikrokontrolery mają wiele zastosowań w wielu branżach, np. motoryzacji, medycynie, automatyce przemysłowej, lotnictwie, robotyce.
na przykład w przemyśle motoryzacyjnym nowoczesne samochody mają obecnie ponad 100 mikroprocesorów do systemów takich jak klimatyzacja, ABS, EBD, a także ADAS lub zaawansowanych systemów wspomagania jazdy, takich jak adaptive curies controller i lane assist, poniżej znajduje się obraz ECU lub elektronicznej jednostki sterującej.
w dziedzinie medycyny istnieją urządzenia medyczne, które obejmują mikrokontrolery, takie jak MRI, zestaw testów glukozy, przenośne EKG. Poniższy obraz, jest urządzeniem do badania glukozy.
w lotnictwie większość samolotów została zaprojektowana z nowymi systemami awioniki wykorzystującymi mikrokontrolery. Dodatkowo, system sterowania lotem, system kontroli ruchu lotniczego, systemy nawigacji i pogody, które są oparte na mikrokontrolerach.
popularne mikrokontrolery
istnieje wiele typów i platform mikrokontrolerów, ale wybór mikrokontrolera zależy od wielu czynników:
Application zastosowanie
Budget budżet
Performance wydajność
Number Liczba pinów GPIO
size wielkość pamięci
Temperature Temperatura środowiska pracy
▪ Pobór mocy
mikrokontroler AVR
poniższy obrazek zawiera schemat blokowy Ave12da, jednego z najpopularniejszych mikrokontrolerów — mikrokontrolera AVR:
mikrokontrolery AVR produkowane są przez Atmel corporation (dziś: Microchip), Atmel ma 6 rodzin mikrokontrolerów AVR, 4 rodziny jako mikrokontrolery ogólnego przeznaczenia i 2 jako mikrokontrolery specjalnego przeznaczenia. Mikrokontrolery ogólnego przeznaczenia to:
▪ 8 bit – mega AVR
▪ 8 bit-AT Tiny
▪ 8 & 16 bit – AVR Xmega
▪ 32 bit – AVR
mikrokontrolery specjalnego przeznaczenia to:
Automotive Automotive AVR
Management Zarządzanie akumulatorami
Automotive AVR, od swojej nazwy, został opracowany do zastosowań motoryzacyjnych. Może pracować w bardzo wysokich temperaturach do 150 Stopni Celsjusza i zawiera systemy zabezpieczające przed zwarciem.
mikrokontroler zarządzania baterią został opracowany dla systemów zarządzania baterią w celu zabezpieczenia operacji ładowania i rozładowywania.
przykłady Platform AVR
AR Arduino Uno
Ad Adafruit Blue fruit Micro
Rasp Raspduino
Dig Digispark Pro
mikroprocesor/mikrokontroler ARM
mikroprocesor ARM jest najbardziej popularny procesor na świecie, zwłaszcza w aplikacjach konsumenckich. Możesz mieć urządzenie oparte na procesorze ARM,ale nie wiesz! ARM jest w większości kluczowym elementem wszystkich udanych 32-bitowych systemów wbudowanych. Pierwsze ramię zostało opracowane w 1985 roku.
technologia RISC
ARM jest używana technologia RISC, RISC oznacza zredukowany zestaw instrukcji komputer, jest to filozofia projektowania, aby dostarczyć proste instrukcje w ciągu jednego cyklu. Opiera się bardziej na oprogramowaniu. Z drugiej strony Technologia CISC polega bardziej na sprzęcie.
technologia RISC koncentruje się na zmniejszeniu zestawu instrukcji procesora. Z drugiej strony, procesor CISC ma niestandardowy numer zestawu instrukcji.
funkcje ARM
Arm ma wiele funkcji dla każdego projektanta systemów wbudowanych, np. niskie zużycie energii ze względu na kompaktowe rozmiary, również wysoka gęstość kodu to kolejna cecha ponieważ opracowujemy systemy wbudowane, w większości przypadków będziemy mieli ograniczone zasoby.
struktura wewnętrzna mikrokontrolera opartego na architekturze ARM
ten rysunek pokazuje wewnętrzną strukturę większości urządzeń opartych na architekturze ARM:
pola reprezentują funkcje, linie reprezentują autobusy. Porozmawiajmy więcej o każdym komponencie w szczegółach:
▪ procesor ARM jest głównym komponentem, który odpowiada za operacje przetwarzania
Controllers sterowniki służą do koordynowania funkcji systemu jako kontrolery pamięci i przerwań
Periph Urządzenia peryferyjne służą do dostarczania wejść i wyjść systemu
bus magistrala służy do wymiany danych między różnymi komponentami systemu
przykłady platform ARM
istnieje wiele urządzeń i platform wbudowanych, które mają mikroprocesor ARM np.
AR Arduino Due
Raspberry Raspberry Pi
St STM32F103C8T6
N NXP LPC1768
Inne mikrokontrolery i platformy
jak powiedzieliśmy przed wyborem mikrokontrolera lub platformy zależy od wielu czynników (budżet, Liczba pinów itp.…). Istnieją również inne mikrokontrolery i platformy np.
Microc mikrokontrolery PIC
▪ 8051
▪ ESP32
Motorola mikrokontrolery Motorola
oprogramowanie i narzędzia sprzętowe mikrokontrolera
od czasu utworzenia mikrokontrolera istnieje wiele rodzajów narzędzi programistycznych i sprzętowych. Oczywiście niektóre narzędzia mogą być używane w różnych typach mikrokontrolerów, ale niektóre są bardzo specyficzne dla mikrokontrolera. Przed rozpoczęciem programowania mikrokontrolerów warto zapoznać się z narzędziami do programowania mikrokontrolerów i, co nie mniej ważne, z procesem programowania.
używając wbudowanych narzędzi programistycznych, możemy potrzebować następujących narzędzi:
Assembler
jest to narzędzie programowe, które konwertuje Twój kod źródłowy w assemblerze na kod maszynowy, na przykład (GNU assembler).
kompilator
jest to program, który przykrywa kod źródłowy w języku programowania wysokiego poziomu do języka assembly lub kodu maszynowego. Kompilacja może być:
Native natywny: oznacza to, że uruchamiasz kompilator i wygenerowany kod na tej samej maszynie
Cross Cross: oznacza to, że uruchamiasz kompilator na maszynie, a wygenerowany kod działa na innej maszynie (architektura procesora).
Linker i lokalizator
linker to program, który zbiera i łączy Kompilacje i montuje operacje i tworzy pojedynczy exe.
Lokalizator jest narzędziem programu, które może być użyte do zmiany mapy pamięci wyjścia łącznika.
symulator
jest to program, który imituje rzeczywisty scenariusz, wytwarza przybliżenie systemów czasu rzeczywistego. Symulator jest używany:
if jeśli prawdziwy sprzęt nie jest dostępny
in w niebezpiecznych środowiskach testowych i scenariuszach
Debugger
to program i urządzenie sprzętowe, które mogą być podłączone do mojego komputera do mojego osadzonego celu. Używany jest debugger:
set ustawianie punktów przerwania
to śledzenie wykonania
dump zrzut pamięci
debuger sprzętowy może być
in debuger w obwodzie
DEB debugowanie oprogramowania agenta na pokładzie
Flash loader
jest to program i urządzenie sprzętowe, które można wykorzystać do:
Program Program ROM/Flash
Watch Watch variables
Erase Erase ROM/Flash
Profiler
Profiler to narzędzie do monitorowania wydajności kodu oprogramowania
zintegrowane środowisko programistyczne
jest to program, który ma większość narzędzi w jeden. Może zawierać
editors edytory tekstu
Comp Kompilatory
Deb debuggery
Prof Profilery
Sim symulatory
Sim Linkery
języki oprogramowania mikrokontrolerów
możemy klasyfikować dzielą się na dwa rodzaje:
wysoki poziom
▪ C/C++
Java Java
Ada Ada
użycie tego typu zapewni abstrakcję z poziomu sprzętu
niski poziom
kod maszynowy
It jest to 0 i 1s i trudne do napisania przez ludzi, ale łatwe do zrozumienia dla komputerów
montaż
jest to kod mnemoniczny i pseudo instrukcje poprawiające czytelność
przykłady:
Instrukcja składa się z mnemonicznego (opcode) + operandów
Opcode jest operacją wykonywaną przez procesor maszyny
operandów jest ostatecznym celem; opcode musi podjąć operację.
język Assembly jest bardziej czytelny i zrozumiały niż kod maszynowy, ale trzeba go używać na określonym procesorze i mieć wiedzę na temat jego architektury.
języki programowania C/C++
języki wysokiego poziomu mają następujące cechy
Easy łatwe do pisania
Flexible elastyczne
independent niezależne od procesora
High wysoka wydajność
przykład programowania mikrokontrolerów przy użyciu AVR ATMEGA16
atmega 16 posiada następujące funkcje:
▪ 16 Kb wewnętrznej programowalnej pamięci flash
5 512 bajtów EEPROM
▪ 1 Kbyte wewnętrznej pamięci SRAM
Lock Blokada programująca dla bezpieczeństwa
funkcje peryferyjne
▪ licznik czasu rzeczywistego z osobnym oscylatorem
Programm programowalny serial USART
Four cztery kanały PWM
8 8-Kanałowy, 10-bitowy ADC
oscill oscylator on-chip
detection wykrywanie spoczynkowe i Brown-out zasilania
Internal wewnętrzny oscylator RC i źródła przerwań
Vol napięcia (od 2,7 V do 5.5V)
przykład programu migania LED z wykorzystaniem ATmeg16 i Proteus
program migania LED w systemach wbudowanych, takich jak program „hello world” w tworzeniu aplikacji. W poniższym przykładzie nauczysz się i użyjesz symulatora Proteus do uruchomienia pierwszego programu. Aby pobrać pliki źródłowe, przejdź do tego folderu.
napisz swój program za pomocą Atmel studio
po pobraniu IDE,
otwórz go i wybierz nowy projekt i wybierz lokalizację pliku szesnastkowego jak na poniższym obrazku
następnym krokiem jest wybór rodziny mikrokontrolerów
po tym pojawi się następujące okno z kodem startowym
i teraz proszę napisać poniższy kod
następnym krokiem jest zbudowanie programu przez naciśnięcie F7
po tym znajdziesz plik hex w wybranej lokalizacji
następnym krokiem jest użycie symulatora Proteus
a teraz Utwórz schemat z wybranego szablonu
i wybierz Nie twórz układu PCB
w końcu skończyliśmy, ale musimy dodać plik hex jak na poniższym obrazku
teraz edytuj Bezpieczniki CKSEL
Zapisz i kliknij Odtwórz
, a zobaczysz, że dioda LED jest wyłączona dla 500ms (po lewej stronie) i włączona dla 500ms (po prawej stronie)
Wyjaśnienie programu linia po linii
aby pobrać pliki źródłowe, przejdź do tego folderu.
#define f_CPU 100000ul/ / aby utworzyć stałą i wybrać prędkość procesora
#include <avr / io.h>/ / aby przywołać niektóre pliki dla wejść i wyjść
#include < avr / delay.H> // recall this file to use delay functions
int main(void){ // the starting function and the main program
DDRA = 0B0000001; // to configure the pin a as an output / direction
While(1){ // to loop forever
PORTA = 0b00000001; // aby PA0 = 1 i wyjście 5V (dioda LED jest włączona)
_delay_ms(500); // opóźnienie o pół sekundy
PORTA = 0B0000000; // aby PA0 = 0 i wyjście 0V (DIODA LED jest wyłączona)
_delay_ms (500); //opóźnienie o pół sekundy
}
return 0;
} //koniec programu
wniosek
obecnie systemy wbudowane są używane w ważnych produktach i mogą być używane do zabezpieczenia i uratowania wielu ludzi, podobnie jak w dziedzinie medycyny i innych aplikacjach. Powinieneś kontynuować naukę po uzyskaniu przeglądu i wprowadzenia na temat programowania mikrokontrolerów. Następnym krokiem powinna być nauka projektowania oprogramowania wbudowanego i systemów uruchamianych w czasie rzeczywistym.
https://www.faa.gov/regulations_policies/handbooks_manuals/aviation/phak/
AVR micro controller and Embedded Systems: Pearson New International Edition: Using Assembly and C, Muhammad Ali Mazidi, DeVry University
arm System Developer ’ s Guide Designing and Optimizing System Software a volume in the Morgan Kaufmann Series in Computer Architecture and Design Book • 2004