ghid pas cu pas pentru programarea microcontrolerului
acesta este un ghid pas cu pas pentru cei care doresc să înceapă cu programarea microcontrolerului. Articolul începe cu introducerea câtorva termeni de bază care vor fi utilizați în ghid, o listă de instrumente, limbaje de programare și, la sfârșit, un exemplu de cod descărcabil cu un ghid pas cu pas pe care l-ați putea folosi pentru a practica programarea microcontrolerului.
dar înainte de scufundări în programare microcontroler. Să definim primii doi termeni de bază: Hardware și Software.
Hardware-ul este format din componentele fizice din sistem, cum ar fi chips-uri, tastatură, mouse, monitor, memorii, dispozitive I/O. Hardware-ul este mai greu de dezvoltat în comparație cu software-ul, trebuie proiectat pentru aplicații foarte specifice și este o soluție foarte eficientă și perfectă în sistemele de mare viteză.
Software-ul este componentele non-fizice sau aplicațiile care rulează pe hardware, cum ar fi sistemele de operare, jocurile pe calculator și aplicațiile de rețea. Software-ul este extrem de configurabil, ușor și mai rapid de dezvoltat, de asemenea foarte ieftin în comparație cu hardware-ul.
ce este un microcontroler
pentru a înțelege ce este un microcontroler, trebuie să înțelegem mai întâi ce este un microprocesor sau un procesor (unitate centrală de procesare). Un procesor este o inimă a oricărui sistem informatic, este ca creierul uman atunci când îndeplinește o sarcină. Putem împărți practic în două părți esențiale:
unitate de Control: această unitate este utilizată pentru a prelua datele din memorie.
unitate de execuție: această unitate este utilizată pentru a executa sau rula datele.
tipuri de procesoare
există multe categorii de procesoare, cum ar fi procesoare de uz general, procesor de sistem specific aplicației și sistem multi-procesor. Procesor de uz General are mai multe tipuri:
microprocesor
microcontroler
Procesor încorporat
procesor de semnal digital
microprocesor este un dispozitiv semiconductor sau un computer pe un cip, dar nu un computer complet funcțional. Unitatea sa centrală de procesare conține
alu
contoare de programe
registre
alte circuite (timp de pontaj, întrerupere)
un microcontroler este un IC care conține un microprocesor și unele periferice pentru a fi un computer complet funcțional, periferice de exemplu, ADC, RAM, ROM, DAC.
istoria microcontroler
inițial, Intel corporation a fost prima fabricarea de microcontrolere. Primul microcontroler a fost produs în 1971 în SUA. A fost un microcontroler pe 4 biți cu numele i4004. În cele din urmă, Intel a produs modele mai sofisticate în acel moment cu un microcontroler pe 8 biți și după aceea un microcontroler pe 12 biți a fost dezvoltat de Toshiba.
aplicațiile microcontrolerelor
microcontrolerele au multe aplicații în multe industrii, de exemplu, automotive, medicale, automatizări industriale, aerospațiale, robotică.
în industria auto, de exemplu, mașinile moderne au în prezent peste 100 de microprocesoare pentru sisteme precum aer condiționat, ABS, EBD și, de asemenea, ADAS sau sisteme avansate de asistență la conducere, cum ar fi controlerul adaptiv curies și lane assist, următoarea este o imagine a unui ECU sau a unei unități de control electronice.
în domeniul medical, există dispozitive medicale care includ microcontrolere, cum ar fi un RMN, set de teste de glucoză, EKG portabil. Următoarea imagine, este un dispozitiv de testare a glucozei.
în industria aerospațială, majoritatea aeronavelor au fost proiectate cu noi sisteme avionice care utilizează microcontrolere. În plus, există sistem de control al zborului, sistem de control al traficului aerian, sisteme de navigație și vreme care se bazează pe microcontrolere.
microcontrolere populare
există multe tipuri și platforme de microcontrolere, dar selectarea unui microcontroler depinde de mulți factori:
▪ Aplicarea
▪ Buget
▪ Performanță
▪ Numărul de pini GPIO
▪ dimensiunea Memoriei
▪ Temperatura mediu de operare
▪ consumul de Energie
Microcontroler AVR
imaginea De mai jos conține o diagramă bloc a AVE12DA, una dintre cele mai populare microcontroler famlily — AVR microcontroller:
microcontrolere AVR este produs de Atmel corporation (azi: Microchip), Atmel are 6 familii de microcontrolere AVR, 4 familii ca microcontrolere de uz general și 2 ca microcontrolere cu scop specific. Microcontrolerele de uz General sunt:
8 biți – mega AVR
8 biți-la mici
▪ 8 & 16 bit – AVR Xmega
32 bit – AVR
microcontrolerele cu scop Specific sunt:
AVR auto
managementul bateriei
AVR auto, de la numele său, a fost dezvoltat pentru aplicații auto. Poate funcționa la temperaturi foarte ridicate de până la 150 Celsius și include sisteme de protecție pentru probleme de scurtcircuit.
microcontrolerul de gestionare a bateriei este dezvoltat pentru sistemele de gestionare a bateriei pentru a asigura operațiunile de încărcare și descărcare.
Exemple de platforme AVR
Arduino Uno
microprocesor/microcontroler Arm
Arm Raspduino
Arm Digispark Pro
microprocesor / microcontroler Arm
ARM este cel mai popular procesor din lume, în special, în aplicațiile de consum. Este posibil să aveți un dispozitiv bazat pe procesor ARM, dar nu știți! ARM este în mare parte o componentă cheie a oricărui sistem încorporat de succes pe 32 de biți. Primul braț a fost dezvoltat în 1985.
RISC Technology
ARM este folosit tehnologia RISC, RISC standuri pentru redus calculator set de instrucțiuni, este o filozofie de proiectare pentru a oferi instrucțiuni simple într-un singur ciclu. Se bazează mai mult pe software. Pe de altă parte, tehnologia CISC se bazează mai mult pe hardware.
tehnologia RISC se concentrează pe reducerea setului de instrucțiuni al procesorului. Pe de altă parte, procesorul CISC are un număr non-fix al setului de instrucțiuni.
caracteristici ARM
Arm are multe caracteristici pentru fiecare proiectant de sistem încorporat pe care îl caută, de exemplu, consum redus de energie datorită dimensiunii sale compacte, de asemenea, densitatea mare a codului este o altă caracteristică, deoarece dezvoltăm sisteme încorporate, vom avea resurse limitate în majoritatea cazurilor.
structura internă a microcontrolerului bazat pe ARM
această figură arată structura internă a majorității dispozitivelor bazate pe ARM:
casetele reprezintă funcții, liniile reprezintă autobuze. Să vorbim mai multe despre fiecare componentă în detalii:
XV procesorul ARM este componenta de bază care este responsabil pentru operațiunile de procesare
controlerele de la ARM sunt utilizate pentru a coordona funcțiile sistemului ca controlere de memorie și de întrerupere
perifericele de la ARM sunt utilizate pentru a furniza intrările și ieșirile sistemului
un bus este utilizat pentru schimbul de date între diferitele componente ale sistemului
Exemple de platforme ARM
există multe dispozitive și platforme încorporate care au microprocesor ARM, de ex.
Arduino din cauza
Raspberry Pi
stm32f103c8t6
NXP LPC1768
alte microcontroler și platforme
așa cum am spus înainte de a selecta un microcontroler sau o platformă depinde de mulți factori (buget, număr de pini etc.…). Există, de asemenea, alte microcontrolere și platforme, de ex.
microcontrolere pic
▪ 8051
▪ ESP32
microcontrolere Motorola
software microcontroler și instrumente Hardware
de la crearea microcontrolerului, au existat multe tipuri de instrumente de dezvoltare software și hardware. Desigur, unele dintre instrumente pot fi utilizate în diferite tipuri de microcontrolere, dar unele sunt foarte specifice pentru fiecare microcontroler. Înainte de a începe cu programarea microcontrolerului, poate doriți să vă familiarizați cu instrumentele de programare a microcontrolerului și, nu în ultimul rând, cu procesul de dezvoltare.
folosind instrumente de dezvoltare încorporate, este posibil să avem nevoie de instrumente după cum urmează:
Assembler
este un instrument software care convertește codul sursă în asamblare în cod mașină, de exemplu (GNU assembler).
compilator
este un program software care acoperă codul sursă într-un limbaj de programare la nivel înalt în limbaj de asamblare sau cod mașină. Compilația poate fi:
nativ: acest lucru înseamnă că rulați compilatorul și codul generat pe aceeași mașină
cruce: aceasta înseamnă că rulați compilatorul pe o mașină și codul generat rulează pe o mașină diferită (arhitectura procesorului).
Linker și Locator
un linker este un program care colectează și leagă compilațiile și asamblează operațiunile și produce un singur exe.
un locator este un instrument de program care poate fi folosit pentru a schimba harta de memorie a ieșirii linker.
Simulator
este un program care imită scenariul real, produce o aproximare a sistemelor în timp real. Un simulator este folosit:
Irak în cazul în care hardware-ul real nu este disponibil
Irak în medii de testare periculoase și scenarii
Debugger
este un program software și dispozitiv hardware care poate fi interfațat la PC-ul meu la ținta mea încorporat. Se utilizează un depanator:
pentru a seta punctele de întrerupere
pentru a urmări execuția
pentru a descărca memoria
depanatorul Hardware poate fi
depanatorul în circuit
software-ul agentului de depanare la bord
Încărcător Flash
este un program și un dispozitiv hardware care poate fi utilizat pentru:
programul Rom/Flash
variabile de ceas
Erase Rom/Flash
Profiler
Profiler este un instrument pentru a monitoriza performanța codului software
mediu de dezvoltare integrat
este un program software care are cele mai multe instrumente toate în unu. Acesta poate include
▪ editoare de Text
▪ Compilatoare
▪ Debugger-ele
▪ Profileri
▪ Simulatoare
▪ Linkeri
Microcontroler Software Limbi
le putem clasifica în două tipuri:
nivel înalt
c/c++
java
Ada
utilizarea acestui tip va oferi o abstracție de la nivelul hardware
nivel scăzut
cod mașină
acesta este 0 și 1s și greu să fie scris de oameni, dar ușor pentru calculatoare pentru a înțelege
asamblare
este un cod mnemonic și instrucțiuni pseudo pentru a îmbunătăți lizibilitatea
Exemple:
o instrucțiune este format din mnemonic (opcode) + operanzi
Opcode este o operație luată de un procesor mașină
operanzi este ținta finală; opcode trebuie să ia o operație pentru.
limbajul de asamblare este lizibil și ușor de înțeles mai mult decât codul mașinii, dar trebuie să îl utilizați pe un procesor specific și să aveți cunoștințe despre arhitectura acestuia.
C/C++ limbaje de programare
limbaje de nivel înalt au următoarele caracteristici
ușor de scris
flexibil
procesor independent
productivitate ridicată
exemplu de programare microcontroler folosind AVR ATMEGA16
atmega 16 are următoarele caracteristici:
▪ 16 Kb de În-sistem de Auto-programabil cu memorie flash
▪ 512 Bytes EEPROM
▪ 1 Kbyte Internă SRAM
▪ Programare de Blocare pentru securitate
Periferice Caracteristici
▪ Contor în Timp Real cu Oscilator Separat
▪ Programabile Seriale USART
▪ Patru Canale PWM
▪ 8-canal, 10-bit ADC
▪ On-chip Oscilator
▪ Putere-pe Restul si Maro-Detectarea
▪ Interne Oscilator RC și Întrerupe Surse
▪ Tensiuni (de la 2,7 v la 5.5v)
LED clipește exemplu de Program folosind ATmeg16 și Proteus
LED clipește program în sisteme încorporate, cum ar fi programul „hello world” în dezvoltarea de aplicații. În exemplul următor, veți învăța și utiliza simulatorul Proteus pentru a rula primul program. Pentru a descărca fișierele sursă, accesați acest folder.
scrie programul folosind Atmel studio
după descărcarea IDE,
deschideți-l și alegeți proiect nou și alegeți locația fișierului hex ca în imaginea următoare
următorul pas este să alegeți familia microcontroler
după aceea veți primi următoarea fereastră cu cod de pornire
și acum vă rugăm să scrieți următorul cod
următorul pas este construirea programul apăsând F7
după care veți găsi fișierul hex pe locația aleasă
următorul pas este utilizarea simulatorului Proteus
și acum a crea o schemă de selectat un șablon
și alegeți nu creați un aspect PCB
în cele din urmă, am terminat, dar avem nevoie pentru a adăuga fișierul hex ca în următoarea imagine
acum edita siguranțe CKSEL
salvați și faceți clic pe redare
și puteți vedea că LED-ul este oprit pentru 500ms (partea stângă) și pentru 500ms (partea dreaptă)
explicație program linie cu linie
pentru a descărca fișierele sursă, vă rugăm să mergeți la acest dosar.
#define f_CPU 100000UL // pentru a crea o constantă și alegeți viteza procesorului
#include < avr/io.h > / / pentru a reaminti unele fișiere pentru intrări și ieșiri
#includ <avr/întârziere.h> // rechemați acest fișier pentru a utiliza funcțiile de întârziere
int main(void){ // funcția de pornire și programul principal
DDRA = 0b0000001; // pentru a configura pinul a ca ieșire / direcție
în timp ce(1){ // pentru a bucla pentru totdeauna
PORTA = 0b00000001; // pentru a face PA0 = 1 și ieșire 5V (LED-ul este pornit)
_delay_ms(500); // întârziere pentru o jumătate de secundă
PORTA = 0B0000000; / / pentru a face PA0 = 0 și ieșire 0v (LED-ul este oprit)
_delay_ms (500); / / întârziere pentru o jumătate de secundă
}
întoarcere 0;
} //sfârșitul programului
concluzie
în prezent, sistemele încorporate sunt utilizate în produse vitale și pot fi utilizate pentru a asigura și salva o mulțime de oameni, ca și în domeniul medical și alte aplicații. Ar trebui să continuați să învățați după ce ați obținut o imagine de ansamblu și o introducere despre programarea microcontrolerului. Următorul pas ar trebui să fie învățarea designului Software încorporat și a sistemelor declanșate în timp real.
https://www.faa.gov/regulations_policies/handbooks_manuals/aviation/phak/
AVR microcontroler și sisteme integrate: Pearson New International Edition: utilizarea de asamblare și C, Muhammad Ali Mazidi, DeVry University
Arm system Developer ‘ s Guide proiectarea și optimizarea software-ului de sistem un volum în seria Morgan Kaufmann în arhitectura de calculator și Design carte • 2004