Programmation du Microcontrôleur PIC en C 1
Les Elements D un Microcontôleur User input Input Peripherals CPU Output Peripherals User output Program download ROM Read Only Memory Central Processing Unit RAM Read & Write Memory Le microcontrôleur contient us ces éléments dans une seule puce 2
Figure 1.2 16F877 pin-out Les broches du microcontrôleur ont de multiples fonctions 3
Figure 1.3 PIC 16F877 MCU Block diagram Flash ROM Program Memory 8192 x 14 bits 0000 1FFF Instruction Register Instructions Address Program Counter (13 bits) Stack 13 bits x 8 levels File Address RAM File Registers 368 X 8 bits 000-1FF Program address Literal Working (W) Register File Select Register Opcode Status bits Arithmetic & Logic Unit Status (Flag) Register Data Bus (8 bits) Instruction Decode & CPU control MCU control lines EEPROM 256 bytes Ports, Timers ADC, Serial I/O Timing control Clock Reset Port A B C D E Présente les principales parties de la puce sous une forme simplifiée 4
Les registres du PIC16F877 Bank 0 (000 07F) Bank 1 (080 0FF) Bank 2 (100-180) Bank 3(180-1FF) Address Register Address Register Address Register Address Register 000h Indirect 080h Indirect 100h Indirect 180h Indirect 001h Timer0 081h Option 101h Timer0 181h Option 002h PC Low 082h PC Low 102h PC Low 182h PC Low 003h Status Reg 083h Status Reg 103h Status Reg 183h Status Reg 004h File Select 084h File Select 104h File Select 184h File Select 005h Port A data 085h PortA direction 105h - 185h - 006h Port B data 086h PortB direction 106h Port B data 186h PortB direction 007h Port C data 087h PortC direction 107h - 187h - 008h Port D data 088h PortD direction 108h - 188h - 009h Port E data 089h PortE direction 109h - 189h - 00Ah PC High 08Ah PC High 10Ah PC High 18Ah PC High 00Bh Interrupt Control 08Bh Interrupt Control 10Bh Interrupt Control 18Bh Interrupt Control 00Ch 01Fh 20 Peripheral Control Registers 08Ch 09Fh 20 Peripheral Control Registers 10Ch 10Fh 4 Peripheral Control Registers 18Ch 18Fh 4 Peripheral Control Registers 020h 06Fh 070h 07Fh 80 General Purpose Registers 16 Common Access GPRs 0A0h 0EFh 0F0h 0FFh 80 General Purpose Registers Accesses 70h 7Fh 110h 16Fh 170h 17Fh 96 General Purpose Registers Accesses 70h 7Fh 190h 1EFh 1F0h 1FFh 96 General Purpose Registers Accesses 70h 7Fh 5
Les types du microcontroller PIC MCU Pins Data word (bits) Program memory (bytes) Typical Instruction Set Speed MIPS Comment 10FXXX 12FXXX = 6 8 <= 512 33 x 12 bits <= 2 = 8 8 <= 2 KB 12 / 14 bits <= 5 Low pin count, small form facr, cheap No EEPROM, none low power, assembler program Low pin count, small form facr, cheap EEPROM, 10-bit ADC, some low power, assembler 16FXXX <= 64 8 <= 14 KB 35 x 14 bits <= 5 Mid-range, UART, I2C, SPI many low power, C or assembler program 18FXXXX <= 100 8 <= 128 KB 75 x 16 bits <= 16 High range, CAN, USB J series 3V supply, C program 24FXXXX <= 100 16 <= 128 KB 76 x 24 bits = 16 Power range, 3V supply, no EEPROM, data RAM < 8 KB, C program 6
I/O pin operation Write TRIS bit Data Direction Latch Tri-state Output Enable CPU Data Bus Write data bit Output Data Latch Output Current Driver Read data bit Input Data Latch Analogue input multiplexer La broche peut être réglée pour l'entrée ou la sortie de données 7
Operation du Timer Capture signal Capture register Instruction Clock External Pulse Clock Source Select Prescaler (clock divide) Binary Counter Post-scaler (output divide) Timer Overflow/ Timeout (Interrupt) Flag Compare register Match flag Un compteur binaire est utilisée comme une horloge lorsqu'il est entraîné à partir de l'horloge 8
Conversion analogique/numerique ADC Input volts 0-Vf Reference volts, Vf ANx Vref+ Analogue Digital Converter Setup ADC Read ADC 8-bit or 16-bit integer result Le ADC convertit une entrée analogique en un code binaire 9
Comparateur Vc+ Vc- Comparr status bit Vc+ > Vc- Le comparateur établit si une entrée est supérieure à l'autre 10
Opérations sur Port parallèle Chip select Read Write Parallel Slave Port Interrupt EXTERNAL Data x 8 INTERNAL Data x 8 La PSP permet à un bus de données externe pour être connecté à l'unité MCU 11
Les sources d interruptions pour PIC 16F877 Interrupt Source Interrupt trigger event CCS C Interrupt label TIMERS Timer 0 Timer 0 register overflow INT_TIMER0 Timer 1 Timer 1 register overflow INT_TIMER1 CCP 1 Timer 1 capture or compare detected INT_CCP1 Timer 2 Timer 2 register overflow INT_TIMER2 CCP2 Timer 2 capture or compare detected INT_CCP2 PORTS RB0/INT pin Change on single pin RB0 INT_EXT Port B pins Change on any of four pins RB4 RB7 INT_RB Parallel Slave Port Data received at PSP (write input active) INT_PSP Analog Converter A/D conversion completed INT_AD Analog Comparar Voltage compare true INT_COMP SERIAL UART Serial Port Received data available INT_RDA UART Serial Port Transmit data buffer empty INT_TBE SPI Serial Port Data transfer completed (read or write) INT_SSP I2C Serial Port Interface activity detected INT_SSP I2C Serial Port Bus collision detected INT_BUSCOL MEMORY EEPROM Non-volatile data memory write complete INT_EEPROM 12
Principe de l interruption Timer Program Execution 4 Jump ISR 1 Start counter statement Program Execution 7 Continue 3 Timeout Interrupt 2 Run Counter until overflow 5 Time-out Process (Interrupt Service Routine) 6 Return from Interrupt Force le délai d'expiration que le programme soit suspendu et que le ISR exécuté 13
Signal USART RS232 HOST PC PIC MCU TX1 Transmit RX1 Receive Ground Line Driver Interface +/- 12V RX2 TX2 COM PORT Ground Les Line Driver permets de convertir le signal à un bipolaire avec une tension plus élevée 14
Connections SPI Master Serial Data Out, SDO Serial Data In, SDI Serial Clock, SCK Slave 1 SDO SDI SCK!SS Slave 2 SDO SDI SCK!SS Slave Select Outputs SS1 SS2 SS3 SPI utilise la sélection matérielle de l esclave et de l'horloge séparée 15
Connections I 2 C +5V Master Slave1 Slave2 etc SDA SCL La sélection de l'esclave utilise des adresses émises par le maître 16
Un programme C simple #include "16F877A.h" void main() { output_d(255); } // MCU select // Main block // Switch on outputs Ce programme minimal envoi un code binaire «255» sur le Port D 17
Projet MPLAB Le programme C est compilé et testé en mode simulation 18
module Microchip ICD2/ICD3 ICD2/ICD3 fournit le débogage in-circuit 19
ICD fenêtres de débogage Interface utilisateur pour la programmation in-circuit et le débogage 20