Curs 11 1. Noțiuni generale despre Microcontrolerul MC9S12 Microcontrolerul MC9S12 este produs de firma Freescale (fost Motorola), are magistrala de date de 16 bit, și este destinat aplicațiilor comerciale, industriale, automotive. Câteva carectersitici de bază ale familiei S12 sunt: Flash până la 256 k RAM până la 8k EEPROM până la 2k Comunicație serială - CAN bus - SCI - SPI - I 2C Convertor analog numeric (notat ATD), până la 16 canale de 10 bit Port paralel 59 linii PWM – 8 canale de 8 bit Tensiune de alimentare 3 V la 5,5 V 80 pin Frecvenţa bus 25 MHz Timer 8 canale de 16 bit (captură și comparare) Sistem de întreruperi Magistrală de date și adrese externe multiplexate Background debug module (BDM1) care permite urmărirea derulării programului fără intervenția asupra acestuia (facilitate folosită –prin conversie la USB- pentru comunicația cu PC) Posibilitate de a seta breakpoints Frecvențe de clock programabile 11 BDM (Background Debug Module) este un standard de comunicație serial pe un fir care permite transferul de date direct în interiorul microcontrolerului fără a interveni asupra derulării programului. Se utilizează la depanare și la încărcarea programului de aplicație direct în memoria FLASH fără aportul Unității Centrale. Tabel 1. Caracteristici comparative ale variantelor de componente din familia MC9S12B Fig.11.1. Capsula LQFP Fig.11.2.Capsula LQFP de 80 pin 2. Sistemul de dezvoltare cu microcontroler Pentru a dezvolta aplicații cu microcontrolerul MC9S12B, se utilizează o placă ZK-S12_B Starter Kit. Structura plăcii de dezvoltare este prezentată în fig.11.3. Fig.11.3. Structura plăcii de dezvoltare cu microcontroler S12B 2.1. Placa de dezvoltare conține următoarele zone: 2.1.1. Zona microcontroler – conține - Microcontrolerul S12B plasat într-un soclu de tipul ZIF (Zero Insertion Force) care nu solicită pinii componentei la introducerea acesteia, ci stabilește contactul la acționarea unui levier. În fig.11.4. este prezentat o versiune de soclu de tip ZIF, iar în fig.11.5. este o imagine a plăcii de dezvoltare ZK _S12-B cu soclul ZIF deschis. Fig.11.4. Conector ZIF (Zero Insertion Force) Fig.11.5. Imagine a plăcii de dezvoltare ZK_S12-B Conectori de acces la toți pinii microcontrolerului Zona oscilator, în care se poate configura sursa de ceas penru microcontroler Jumperi pentru setarea modului de operare a microcontrolerului (regulatorul intern de tensiune, tensiunea de referință internă pentru convertorul analog-numeric). 2.1.2. Zona sursei de alimentare – conține o sursă de alimentare ce furnizează din 12 VDC, tensiunea necesară plăcii (5V sau 3.3V). 2.1.3. Zona convertorului USB-BDM conține un circuit ce transformă semnalul BDM în semnal USB pentru comunicare cu PC. 2.1.4. Zona conectorului BDM permite conectarea unui circuit de depanare expern pe magistrala serială BDM. 2.1.5. Zona RESET conține butonul de RESET și circuitele aferente de formare a unui semnal potrivit pentru microcontroler și perifericele conectate 2.1.6. Zona de intrări conține componente pentru intrarea analogică (potențiometru) și pentru intrările logice (butoane cu revenire și switch-uri). 2.1.7. Zona de ieșiri conține LED-uri de curent mic conectate la microcontroler cu Jumperi pentru o eventuală deconectare. 2.1.8. Zona comunicației seriale RS-232 conține adaptoarele de nivel 2.1.9. Zona de comunicații LIN2 conține adaptorul de la comunicația serială la LIN 2.1.10. Zona de setări pentru comunicația serială (selecția între RS232 și LIN) 2.1.11. Zona de comunicație CAN3 2.1.12. Zona de extindere și dezvoltare de aplicații – conține pad-uri pentru realizarea de montaje electronice. 2.2. Modurile de lucru ale plăcii de dezvoltare ZK_S12-B 2.2.1. Modul independent – în care microcontrolerul rulează un program încărcat în memoria sa FLASH, fără nici o conexiune cu exteriorul (cu PC sau modul de depanare) 2.2.2. Modul ”host” – în care execuția proramului este controlată de PC. Acesta poate fi utilizat pentru a permite execuția pas-cu –pas și urmărirea conținutului regiștrilor, prin intermediul CodeWarrior Development Studio. Modalitatea prin care PC poate face acest lucru este prin magistrala BDM (cu convertorul USB) sau fără PC, printr-n programator conectat direct la magistrala BDM. 2 LIN (Local Interconect Network) este un standard de comunicație serial ce se obține din semnalul 232 printr-un adaptor. Este folosit la comunicația în automotive, alături de CAN. 3 CAN (Controller Area network) standard de comunicație serial asincron, multimaster utilizat în automotive 3. Lansarea unei aplicații cu placa de dezvoltare Placa permite, prin intermediul Code Warrior Development Studio (ce conține Editor, Asamblor, Compilator C și Debugger) - Scrierea, compilarea, încărcarea și depanarea programului pe placă depanarea hardware și software în timp real. PC este conectat de placă prin linia USB,conexiunea cu microcontrolerul se face prin linia BDM, prin intermediul adaptorului USB-BDM. Pentru lansarea unei aplicații care este deja scrisă în Code Warrior se parcurg următorii pași: 3.1. Se verifică conectarea plăcii la PC prin cablul USB și la sursa de alimentare de 12V DC. 3.2. Se verifică corectitudinea setării Jumperilor (ei trebuie să se găsească în configurația setată de fabrică) 3.3. Se lansează Code Warrior Development Studio Din meniul principal se deschide folderul Demo cu următoarele comenzi: “File > Open”. Se selectează “Demo.mcp” care se găsește în “\Program Files\SofTecMicrosystems\SK and ZK-S12(X) Series\CodeWarrior Examples\[Your Starter Kit Code]\[Your Target Microcontroller]\Demo” și se dă comanda “ Open”. Microcontrolerul instalat pe placă este MC9S12DJ256CPV. Apare ferestra din fig.11.6 Fig.11.6. 3.4. Codul sursă se află în fișierul main.c. Se deschide acest fișier prin dublu click. Apare fereastra din fig.11.7 Fig.11.7. 3.5. Din meniul principal se selectează ”Project/Debug” care compilează codul sursă, asamblează și linkeditează, generează un fișier executabil și îl încarcă în microcontroler. 3.6. Se deschide mediul de programare (fig.11.8.) Fig.11.8. 3.7. Din meniul principal se selectează ”Run>Start/Continue”. Programul va fi executat în timp real. Programul demo citește tensiunea de la potențiometrul de pe placă prin Convertorul analog-numeric, transmițând rezultatul conversiei la portul paralel conectat la LED-uri. Pe cele 8 LED-uri va apărea codul biar al rezultatului conversiei. Cei mai puțin semnificativ biți nu sunt prezenți. 3.8. Dacă din meniul principal se selectează “Run > Halt”, execuția programului încetează și următoarea instrucție de executat este marcată în ecranul ”source”. 3.9. Dacă din meniul principal se selectează “Run > Single step”, instrucția marcată se execută, execuția programului încetează din nou și următoarea instrucție este marcată în ecranul ”source”. A fost executat un sigur pas (instrucție). 3.10. La selectarea comenzii ”Run>Start/Continue” se reia execuția programului. 4.Dezvoltarea unei aplicații noi Pentru a crea un nou proiect se urmăresc pașii: 4.1. Din meniul principal se selectează “File > New”. 4.2. Din căsuța de dialog apărută se selectează “HC(S)12 New Project Wizard”. 4.3. Se urmăresc pașii Project Wizzard. Trebuie acordată atenție opțiunii tipului de microcontroler. 5. Lansarea unei sesiuni de depanare (debug) Pentru a intra într-o sesiune de debug, din meniul principal se selectează “Project >Debug”. În casuța de dialog trebuie specificată placa și microcontrolerul cu care se lucrează (fig.11.9). Fig.11.9. Code Warrior are o serie de tool-uri pentru analiza controlul programului: - Breakpoints - Watchpoints - Trace buffer Dependent de microcontrolerul folosit, unele facilități pot să nu fie disponibile. 5. Microcontrolerul MC9S12DJ256CPV Core – 16-bit HCS12 CPU – MEBI (Multiplexed External Bus Interface) magistrala de date externă multiplexată – INT (Interrupt control) – BKP (Breakpoints) – BDM (Background Debug Mode) • CRG (Clock-Reset-Generator) -low current oscillator, PLL, reset, clocks, COP watchdog, real time interrupt, clock monitor • 8-bit and 4-bit ports with interrupt functionality – Digital filtering – Programmable rising or falling edge trigger • Memory – 256K Flash EEPROM – 4K byte EEPROM – 12K byte RAM Interfețe : • Two 8-channel Analog-to-Digital Converters – 10-bit resolution – External conversion trigger capability • Five 1M bit per second, CAN 2.0 A, B software compatible modules – Five receive and three transmit buffers – Flexible identifier filter programmable as 2 x 32 bit, 4 x 16 bit or 8 x 8 bit – Four separate interrupt channels for Rx, Tx, error and wake-up – Low-pass filter wake-up function – Loop-back for self test operation • Enhanced Capture Timer – 16-bit main counter with 7-bit prescaler – 8 programmable input capture or output compare channels – Two 8-bit or one 16-bit pulse accumulators • 8 PWM channels – Programmable period and duty cycle – 8-bit 8-channel or 16-bit 4-channel – Separate control for each pulse width and duty cycle – Center-aligned or left-aligned outputs – Programmable clock select logic with a wide range of frequencies – Fast emergency shutdown input – Usable as interrupt inputs • Serial interfaces – Two asynchronous Serial Communications Interfaces (SCI) – Three Synchronous Serial Peripheral Interface (SPI) • Byte Data Link Controller (BDLC) – SAE J1850 Class B Data Communications Network Interface Compatible and ISO Compatible for Low-Speed (