Documente Academic
Documente Profesional
Documente Cultură
incorporate
Microcontrolere si sisteme
integrate
Microchip AVR 8 biți
2 2
Atmel Studio 6
• Atmel Studio 6 este un mediu integrat de dezvoltare a aplicațiilor software
produs de Atmel, din categoria freeware
• El a inlocuit in primul rând AVR Studio 5 (pe care este de recomandat să-l
evitați!) constituind o platformă unică de dezvoltare pentru microcontrolerele
AVR de 8 biți si 32 de biți precum si pentru familiile de microcontrolere de 32 de biți
Atmel ARM Cortex-M (familia SAM), cu avantajele dar si dezavantajele de rigoare!
• Are integrate propriile compilatoare de C, AVR GNU C Compiler (GCC) – din
familia compilatoarelor Gnu C, astfel că nu mai este nevoie de instalarea/utilizarea
unui alt compilator (ca la AVR Studio 4)
• Este un mediu de dezvoltare care suportă 3 arhitecturi de calcul diferite!
• Include editor, simulator, depanator, aplicații de programare care suportă o
gamă largă de mijloace hardware de programare si depanare
• Poate importa explicit proiectele mai vechi create cu AVR Studio 4 (AVR 8 biți)
• Este bazat pe tehnologiile Microsoft Visual Studio si .NET, kitul de instalare este
mare, are nevoie de o mașină gazdă puternică, cu multe resurse, dar oricum va
fi relativ lent!
• Utilizarea lui Atmel Studio 6 pentru AVR 8 biți nu se justifică decât dacă trebuie
utilizată o platformă hardware nouă care nu este suportată si nici nu va fi de
AVR Studio 4
• Observație Începând cu 2015 a fost lansat Atmel Studio 7. Ultima versiune
este (a rămas) Atmel Studio 6.22 3
– El este descris ca un mediu de dezvoltare de productivitate maxima pentru toate procesoarele
produse de Atmel (achizitionat intre timp de Microchip)
Microchip Studio for AVR® and
SAM Devices
• Pentru AVR 8 biti este de fapt Microchip (Atmel) Studio 7 (versiunea 7.0)
care la rândul lui reprezintă o dezvoltare a lui Atmel Studio 6, fiind descris acum
ca un IDP (Integrated Development Platform) , adică o platformă integrată de
dezvoltare a aplicațiilor
• https://www.microchip.com/en-us/development-tools-tools-and-
software/microchip-studio-for-avr-and-sam-devices
– Este in continuare un produs freeware
• Este o platformă unică de dezvoltare pentru toate microcontrolerele AVR de 8
biți si AVR 32 de biți precum si pentru familiile de microcontrolere de 32 de biți
SAM (aka ARM Cortex-M), adică pentru peste 500 de variante AVR si SAM
• Se conectează direct cu toate sistemele de programare/depanare precum si cu
toate sistemele de dezvoltare Atmel/Microchip si nu numai
• Include si un (Atmel) Gallery un apps store online care permite extensia
mediului de dezvoltare cu multe module suplimentare (plug-ins) dezvoltate de
Atmel/Microchip sau terțe părți, multe din ele din categoria freeware
• Permite importul direct de programe/proiecte/schițe(sketches) Arduino ca
proiecte C++, asigurând o tranziție simpla de la Makerspace la Marketplace
• Este bazat pe tehnologia Microsoft Visual Studio Shell 2015
4
MPLAB X
• MPLAB este un IDE freeware, proprietate Microchip, in mod
tradițional utilizat pentru dezvoltarea aplicațiilor cu
microcontrolerele PIC si dsPIC
• Varianta clasică s-a oprit la MPLAB8.x fiind apoi urmată de actualul
MPLAB X, actualmente (2021) la varianta MPLAB X 5.50
– MPLAB X este un IDE cross platforma, existând variante si pentru MacOS sau
Linux
• In ciuda promisiunilor Microchip că va păstra si dezvolta in
continuare produsul bazat pe Atmel Studio 7 se pare că viitorul nu
arată chiar așa ..
– Oricum deja exista probleme de compatibilitate pentru codul AVR 8 biti generat
de MPLAB X (vezi simulator de sistem Proteus VSM..)
• Începând cu MPLAB X versiunea 5.05 beta (sfârșitul lui 2018)
acesta include si suport pentru majoritatea microcontrolerelor AVR
8 biți din fabricație curentă
• In compilatorul C standard XC8 (cel utilizat pentru aplicații PIC)
este adăugat acum si AVR MCU GNU Compiler Collection (GCC)
făcând posibilă dezvoltarea aplicațiilor si cu AVR 8 biți 5
– XC8 înglobeaza acum tot suportul pentru portarea GCC pentru AVR 8 biti
Ecosistemul AVR 8 biți Microchip cuprinde de fapt un
vast set de unelte software ! 6
Singura limită este curiozitatea voastră!
IAR Embedded Workbench
for Atmel AVR
• Este un mediu integrat complet, similar lui (AVR) Studio, care conține
cel puțin toate componentele acestuia, pentru toate familiile AVR 8 biți
• Este un IDE / compilator comercial (contracost)
• Compilatorul de C/C++ este unul de firmă (proprietar), oarecum diferit
de WinAVR (sintaxa specifică nu este identică, exista macroinstrucțiuni
si biblioteci diferite), dar este cel mai performant compilator C (ca
optimizare dimensiune cod - viteză de execuție) pentru AVR 8 biți
– Majoritatea exemplelor in C din notele de aplicații Atmel/Microchip AVR
folosesc sintaxa IAR Systems
– IAR Systems a lucrat împreuna cu ATMEL (in anii ‘90) la dezvoltarea
simultană a compilatorului de C odată cu unitatea centrală AVR 8 biți
• Foarte multe facilitați suplimentare, funcție si de costul plătit; de
exemplu verificare MISRA C, suport pentru diverse RTOS-uri, etc.
• Este disponibila o varianta de evaluare aproape integral funcțională,
pentru 30 de zile si o variantă freeware (Kickstart) cu limita maximă a
codului generat de 4kOcteti
• Actualmente (2021) este la versiunea 7.30
– https://www.iar.com/products/architectures/microchip/iar-embedded-
workbench-for-avr/ 7
Alte medii integrate de dezvoltare, alte
compilatoare – MikroElektronika
• Compania sârbă (da, este vorba de Republica
Serbia!) MikroElektronika produce o serie
întreagă de compilatoare (împreună cu IDE-urile
corespunzătoare) pentru limbajele C, Pascal si
Basic pentru microcontrolerele AVR 8 biți
• Compilatoarele respective sunt numite mikroC
(limbaj C), mikroPascal (limbaj Pascal) si
mikroBasic (limbaj Basic)
• Sunt compilatoare/IDE-uri performante dar din
categoria celor comerciale (contracost)
– https://www.mikroe.com/compilers/compilers-avr
– Compania mai produce si hardware AVR 8 biti:
programatoare, sisteme de dezvoltare
disponibile la marii distribuitori mondiali
(Mouser, DigiKey, Future, etc.)
8
Alte medii integrate de dezvoltare,
alte compilatoare si interpretere –
Arduino IDE
• Platforma Arduino IDE este o platformă de dezvoltare scrisă in Java,
este una din categoria open-source (la fel ca si hardware-ul utilizat) si
este derivată dintr-o serie de proiecte open-source mai vechi, cum ar fi
cele numite “Wiring” sau “Processing”
• Este destinată învățării programării de microcontrolere de către persoane
care nu sunt familiare cu dezvoltarea de aplicații software (nespecialiști!)
• Programele Arduino sunt scrise intr-un limbaj asemănător C/C++.
– Compilatorul este unul derivat din Gnu C/C++(gcc)
• Programarea efectiva a aplicației se face cu ajutorul unui bootloader
serial asincron sau USB
• Programele/proiectele Arduino, ca unități de cod, poartă denumirea de
“schițe”(sketches)
• Foarte important este că Arduino IDE are inclusă o bibliotecă extensiva
de funcții numită "Wiring" care facilitează in mod major operațiile de
intrare-ieșire (cu avantajele si dezavantajele de rigoare!)
– http://arduino.cc/
OBSERVATIE Nu toate platformele (plăcile) Arduino folosesc procesoare AVR de
8 biti! De exemplu Arduino Due folosește un procesor Atmel SAM3X8E un ARM
Cortex-M3, un procesor de 32 de biți din familia ARM! 9
AVR 8 biti - Programarea “in sistem”-
ISP
• In System Programming (ISP)
• Microcontrolere: majoritatea variantelor MEGA si TINY
• Exemple de programatoare (hardware): AVR ISP MKI/II, AVR JTAG ICE MKII,
STK500, STK600, Dragon, diverse clone AVRISP, programatoare AVR910 (un
protocol descris in nota de aplicații ATMEL AVR910), AVR ONE
– STK500, STK600, Dragon sunt sisteme de dezvoltare universale
– AVR JTAG MKII si AVR ONE (cel mai recent si cel mai complet) sunt unelte de
programare si depanare evoluate
• Este poate cea mai comună metodă de programare a memoriei FLASH,
EEPROM, a fuzibilelor (inclusiv a celor de zăvorâre - lock) pentru aproape toate
variantele de AVR, fiind varianta preferată de hobby-isti datorită informației
bogate existente pe Internet (scheme, cablaje, software, etc)
• Folosește interfața SPI si poate asigura programarea la viteze de ceas foarte
mari (daca ele sunt suportate de microcontroler si de programator)
• AVR ISP este un produs mai vechi, pentru care există multe clone sau produse
similare (de exemplu PonyProg), in variante care se pot conecta la mașina
gazdă (PC) la:
– Un port paralel (imprimanta) obsolete
– Un port serial (mai lente)
• Atenție: programarea ISP cere ca frecvența de ceas a microcontrolerului
programat sa fie de cel puțin 4 ori mai mare decât frecvența ceasului utilizat de
programatorul ISP
10
AVR ISP- Programarea se poate face cu ajutorul unor programatoare
dedicate sau cu ajutorul unor sisteme de dezvoltare
AVR Dragon
STK-500
AVR ISP
STK-600
AVR ONE!
STK-500 si STK-600
sunt de fapt niste sisteme de
dezvoltare multifuncționale cu AVR,
produse de ATMEL
Similar AVR Dragon este un sistem Cele 2 variante de pin-out (6 pini si 10 pini)11ale
de dezvoltare mai simplu conectorului standardizat
AVR 8 biți- Programarea cu ajutorul
interfeței JTAG
• JTAG(Joint Test Action Group)
• Microcontrolere: majoritatea variantelor MEGA si XMEGA (cu număr mai mare de pini)
• Exemple de programatoare (hardware): JTAG-ICE MKII, JTAG-ICE3, Dragon, diverse
clone JTAG-ICE, AVR ONE, STK600
• Tehnic vorbind JTAG este un sistem de depanare “in - sistem”, cu o interfață serială, nu
o metodă de a programa un AVR, dar acest sistem de interfață, intre alte funcții, permite
si programarea
– JTAG este un sistem care permite manipularea si examinarea stării unui microcontroler AVR (in
acest caz) in timpul execuției programului
– Interfața / sistemul de depanare JTAG permite oprirea execuției programului, examinarea
registrelor , a memoriilor si multe alt lucruri
• Programatorul JTAG-ICE MKII care a înlocuit mai vechiul JTAG-ICE, suportă majoritatea
variantelor de AVR care au interfața JTAG;
– in plus suportă si un nou protocol de depanare/programare numit DebugWire (pentru variante de
AVR cu număr mic de pini)
• Diversele “clone” neoficiale JTAG-ICE sunt disponibile si/sau realizabile pentru prețuri
mici (comparativ cu originalele) dar mai au probleme de compatibilitate cu toată seria de
AVR-uri cu interfață JTAG
12
JTAG ICE-3
13
Sisteme (mai) moderne de dezvoltare din perioada Microchip si Atmel
pre-Microchip
Sistemele Xplained
• Provin din perioada Atmel
• Mai sunt încă programabile si ISP..
14
Sisteme (mai) moderne de programare/testare din perioada Microchip
MPLAB® SNAP
ATMEL-ICE
POWER DEBUGGER
https://www.microchip.com/en-us/development-tools-
15
tools-and-software/programmers-and-debuggers
16
Programarea cu ajutorul interfeței
DebugWire
• DebugWire (dW) - o interfata ISP
• Microcontrolere: majoritatea variantelor MEGA si XMEGA cu număr mic de pini,
unele ATTiny (de exemplu ATtiny2313)
• Exemple de programatoare (hardware): AVR ISP Mk II, JTAG-ICE MKII, JTAG-
ICE3, Dragon, AVR ONE
• DebugWire este mai degrabă o interfață de depanare decât una de programare, dar
printre funcțiile sale este si una care permite programarea.
• Interfața dW folosește un singur pin, pinul /RESET, pentru a comunica cu
microcontrolerul AVR, făcând-o ideală pentru variantele cu un număr mic de pini
– Pinul /RESET (RST, NRST) se află oricum printre semnalele din conectorul programatoarelor
ISP si JTAG, așa că nu este nevoie de un conector special
OBSERVAȚIE
Utilizarea interfeței dW sau JTAG si a celei ISP
sunt exclusive (ori un ori alta), alegerea
făcându-se prin programarea unui fuzibil
numit SPI Enable.
Implicit este selectata interfața ISP, fuzibilul fiind
programat. 17
Programarea cu ajutorul unui programator paralel
(High Voltage - de înaltă tensiune)
• High Voltage Parallel Programming (HVPP)
• Microcontrolere: majoritatea variantelor MEGA si XMEGA cu număr
mare de pini
• Exemple de programatoare (hardware): STK500, STK600, Dragon,
AVRONE, diverse programatoare universale
• Este o metodă de programare mai rar utilizată, deoarece presupune
scoaterea microcontrolerului din sistem
• Este disponibilă doar la variantele cu număr mare de pini, pentru că se
folosesc magistrale externe de date, adrese plus semnale de control
pentru transferul paralel al informație către microcontroler
• Este utilizată si pentru a “învia” microcontrolerele AVR făcute
nefuncționale de o programare greșită a fuzibilelor (cu o altă metodă de
programare)
– Se numește de înaltă tensiune deoarece in acest proces pinul /RESET al
microcontrolerului este adus la tensiunea de +12 V (este înaltă fată de
+5V!)
– La microcontrolerele care suportă acest tip de programare, pinul /RESET
este singurul pin a cărui tensiune poate fi ridicată la tensiune de +12V, in
condiții de siguranță!
18
19
AVR 8 biti- Alte interfețe de
programare
• High Voltage Serial Programming (HVSP)
• Microcontrolere: multe variante de ATTiny cu număr mic de pini
• Exemple de programatoare (hardware): STK500, STK600, Dragon,
AVRONE, diverse diverse programatoare artizanale
• HVSP este similara HVPP, doar că datele sunt transferate serial, nu paralel,
făcând-o adecvată pentru variantele de AVR cu număr mic de pini (la care nu
putem avea o interfață externă paralelă)
21
AVR 8 biti- Programarea cu ajutorul unui
bootloader pre-programat
• Bootloaders
• Microcontrolere: toate variantele ATMEGA, XMEGA, doar unele din
ATTiny
• Exemple de programatoare (hardware): Nu sunt necesare, este
nevoie doar de “o sursă de date” cum ar fi tipic o conexiune serială
funcțională (RS-232, RS-485, CAN bus, I2C, etc. )
• Din punct de vedere tehnic nu este direct o metodă de programare
• Un bootloader este un mic program AVR rezident intr-o zonă specială
a memoriei de program FLASH, zona de bootloader (la variantele de
AVR care au o astfel de zonă! )
• Un program bootloader valorifică existența instrucțiunilor care permit
scrierea in memoria FLASH de program (de fapt in zona de aplicații a
ei) a informației care provine dintr-o sursa externă
• In mod tipic aceasta sursă este o conexiune serială funcțională (de ex.
RS-232), dar poate fi si un SD card sau un Data FLASH
• După programarea memoriei de program cu codul aplicație, tot
bootloaderul este responsabil cu lansarea ei in execuție
• Cu alte cuvinte un bootloader este un program mic care încarcă
(programează) si apoi lansează in execuție un program mare 22
Programarea cu ajutorul unui bootloader
(pre-programat) -2
• Principalele limitări ale unui bootloader sunt:
– dimensiunea relativ redusă a zonei bootloader din memoria FLASH
(deci el trebuie să fie foarte compact) trebuind ca spațiul cel mai
mare să fie rezervat aplicației propriu-zise
– in mod tipic, nu poate modifica/ programa si fuzibilele
• Un bootloader pune problema clasică a oului si găinii, in sensul
că, daca nu a fost deja programat la fabricant, totuși ne trebuie un
programator (din tipurile menționate anterior) pentru programarea
lui!
• Există multe exemple de bootloadere AVR pe Internet, freeware
sau contra cost, si nu la toate este disponibil codul sursă;
– Vă sunt necesare atât codul bootloaderului cat si o aplicație care să
ruleze pe o mașină gazdă (PC) si să transfere datele (codul care va
fi programat)
– Aveți nevoie si de un programator din categoria celor deja
mentionate pentru a programa bootloaderul
– De exemplu o pereche aplicație PC - bootloader găsiți aici:
http://www.chip45.com/avr_bootloader_atmega_xmega_chip45boot2
.php
• Evident sunt disponibile pe piata si AVR-uri cu un bootloader pre-
programat, vezi cazul sistemelor Arduino sau al placii AVR
Butterfly https://www.microchip.com/en-us/development-
tool/ATAVRBFLY
23
Programarea cu ajutorul unui bootloader pre-
programat - interfata USB
Actualmente (2021) avem următoarele variante AVR 8 biți cu interfață
USB integrata si bootloader USB:
• ATMEGA 8U2/ 16U2 / 32U2
• ATMEGA 16U4 / 32U4
• ATXMEGA A1U / A3U / A4U (familii)
• ATXMEGA C3U/C4U (familii)
25
AVRDUDE – o soluție de programare
AVR 8 biti open source
Ea poate fi accesibilă
prin intermediul meniului
Tools
29
Programarea si depanarea
(debugging) aplicației
• La fel de importantă ca programarea (codului aplicației) este testarea si
depanarea aplicației in sine.
• După programarea aplicației, depanarea presupune cel puțin: posibilitatea
lansării in execuție si opririi aplicației, a definirii unuia sau mai multor
puncte de oprire (breakpoints), a execuției pas cu pas (instrucțiune cu
instrucțiune sau linie cu linie), a examinării si modificării stării unor resurse
(memorii, registre, etc.).
• Cel puțin in ce privește mediile IDE Atmel (AVR Studio 4 sau Studio 6/7
pentru AVR 8 biți) programarea codului si depanarea lui este extrem de
asemănătoare, ca interfețe utilizator, ca proceduri de lucru, ca informație
utilă, fie că folosim simulatorul (AVR Simulator), fie că folosim o platformă
hardware (emulator, sistem de dezvoltare) din categoria celor menționate.
• Cu alte cuvinte, din punct de vedere al utilizatorului, există puține diferențe
intre o sesiune de depanare realizată cu ajutorul simulatorului si una
realizată cu o platformă hardware dedicată: deci dacă știți să utilizați
simulatorul pentru depanare, veți ști, cu eforturi minimale, să utilizați si o
platformă hardware in același scop..
30