INFORMATIQUE EMBARQUEE - Cours d`électronique et d
Transcription
INFORMATIQUE EMBARQUEE - Cours d`électronique et d
Institut Universitaire de Technologie de CRETEIL-VITRY Département de Génie Électrique et Informatique Industrielle Info2 INFORMATIQUE EMBARQUEE COURS Année universitaire 2013-2014 J. VILLEMEJANE - [email protected] M 2103 Coeff 3 Info2 60h 12h 5h 56h CM 4 x 1h15 + 2 DS dont 9h AA 1 Informatique embarquée 2 Mémoires et association 3 Microcontroleur PIC16F84 Architecture globale Espaces mémoire 4 Microcontroleur PIC16F84 Jeu d'instruction DS1 Informatique embarquée TD 20h 27 h 9 x 3h 1 Mémoires : capacité et utilisation Mémoires : association et plage d'adressage 2 Découverte des systèmes embarqués (carte d'étude) Découverte MPLABX Microcontroleur PIC16F690 – Documentation 3 Premiers programmes en assembleur Programmation structurée 4 Mémoires / Registres / Adressage indirect 5 Temporisation logicielle 6 Etude des entrées-sorties / Masquage 28h 24h 8 x 3h dont 1 TP Test 1 Entrées / Sorties numériques MEMOIRE + ARCHITECTURE MICRO 7 Interruptions 8 Timers DS2 TP LANGAGE ASSEMBLEUR 9 Programmation en C 2 Interruptions 3 Timers 4 ADC / PWM Test 5 Compilation : du C vers l'assembleur 6 Système embarqué et langage C 7 Mini-Projet C Info2 INFORMATIQUE EMBARQUEE Objectifs du module • • • • Comprendre l’architecture d’un système à microcontroleur Maîtriser l’utilisation des périphériques d’un microcontroleur Savoir modéliser une application embarquée Comprendre les mécanismes d’interruption Compétences visées • • • • Développer une application en langage évolué pour une cible à microcontroleur Gérer les périphériques d’entrées - sorties pour s’interfacer avec un environnement Mettre en oeuvre le mécanisme de fonctionnement en régime d’interruption de programme Utiliser un outil de développement croisé Organisation du module • 4 x 1h15 de cours (amphi) • 9 x 3h de TD (groupe) • 8 x 3h de TP (demi-groupe) > dont 1 TP Test (noté ! ! coeff. 1) Evaluation du module • • • • DS1 : microcontroleur et langage assembleur (semaine 7) - coeff 1 DS2 : périphériques et modules (semaine 13) - coeff 1 TP Test : langage assembleur (semaine 13) - coeff 1 Compte-Rendu TP : langage C (semaine 16) - coeff 1 Informations utiles Pour toute question sur le cours ou les TD/TP : [email protected] Les cours, TD et TP au format numérique : http ://cours.villemejane.net/ PIC / MPLAB / Microchip : http ://www.microchip.com/ MPLABX - version 1.90 XC8 - version 1.21 Microcontroleur PIC16F690 –3– GEII - Info2 C0 Introduction aux systèmes embarqués Objectifs • Comprendre et maîtriser l’organisation fonctionnelle d’une application embarquée • Connaître les principaux composants d’un système embarqué 1. Les systèmes embarqués Les systèmes embarqués sont de plus en plus présents dans notre quotidien : téléphone portable, distributeur de billet, box ADSL, GPS... Et la liste s’allonge chaque jour. La plupart d’entre eux ont pour but de nous rendre la vie plus simple, souvent en totale autonomie et assigné à une tâche très précise. Mais de quoi sont-ils constitués et comment sont-ils conçus ? 1.1. Définition Info2 INFORMATIQUE EMBARQUEE 1.2. Caractéristiques • Principalement numérique pouvant intégrer une partie analogique > conditionnement de signaux, modulation, filtrage • Exécution d’une application dédiée • Système matériel simplifié > Meilleure fiabilité > Réduction de la consommation électrique > Réduction des couts de fabrication • Ressources limitées (mémoires, E/S) 1.3. Contraintes • • • • Conditions environnementales extrêmes (température, humidité...) Consommation électrique minimale Faible encombrement et faible poids Gestion du temps précise Un système embarqué doit être : 2. Exemples d’applications Les domaines dans lesquels on trouve des systèmes embarqués sont de plus en plus nombreux. La liste suivante n’est pas exhaustive. • Automate programmable industriel, contrôle-commande • Electroménager : télévision, four à micro-ondes • Distributeur automatique bancaire • Métrologie • Applications militaires : drones, missiles • Télécommunication : box, routeur, pare-feu, serveur de temps, téléphone portable... • Transport : automobile, aéronautique... • Astronautique : fusée, satellite artificiel, sonde spatiale, etc. –5– Info2 INFORMATIQUE EMBARQUEE 3. Constitution Pour concevoir un système embarqué "intelligent", il existe deux solutions principales : • des architectures existantes : basées autour d’un processeur ou d’un microcontroleur ; • des architectures dédiées : basées autour de composants logiques programmables (FPGA ou ASIC). 3.1. Architecture à microcontroleur 3.2. Architecture à composants logiques AVANTAGES AVANTAGES Les architectures à composants logiques ont été étudiées dans le module SIN1 au premier semestre. Ce cours s’intéresse à l’étude et au développement de systèmes embarqués autour des microcontroleurs. –6– GEII - Info2 C1 Les microcontroleurs Objectifs • Connaître l’architecture des microcontroleurs 1. Les microcontroleurs 1.1. Définition 1.2. Constitution 1.3. Exemple du PIC16F84 • • • • • 35 instructions (RISC) Vitesse : DC - 10 MHz Mots de 14 bits Bus de données de 8 bits Mémoires > Programme : 1K mots > Données : 68 octets • 13 E/S indépendantes Info2 INFORMATIQUE EMBARQUEE 2. Architecture interne Exemple du PIC16F690 –8– Info2 INFORMATIQUE EMBARQUEE 2.1. Processeur / CPU Définition Un processeur est constitué des éléments suivants : • Unité de calcul > UAL : Unité Arithmétique et Logique • Unité de controle • Registres de controle • Gestion d’horloge 2.2. Mémoires Définition Il existe deux architectures possibles concernant les mémoires sur les systèmes à processeur : Mémoire Programme / ROM Mémoire Données / RAM Sur le PIC16F84 : • ROM-Flash : 1 024 mots de 14 bits • RAM : 68 mots de 8 bits (soit 68 octets) Sur le PIC16F690 : • ROM-Flash : 4 096 mots de 14 bits • RAM : 256 mots de 8 bits (soit 68 octets) –9– Info2 INFORMATIQUE EMBARQUEE 2.3. Entrées-Sorties Définition 2.4. Modules autres La plupart des microcontroleurs intègrent à présent d’autres modules supplémentaires afin de simplifier la conception des systèmes embarqués, en intégrant dans un même composant des fonctions indispensables à la commande de procédés industriels, par exemple. Parmi ces modules, on peut citer par exemple : • les timers : gestion du temps / compteur d’évènements • les convertisseurs analogiques-numériques : acquisition de données analogiques • les sorties modulées ou PWM : modulation de largeur d’impulsions (pulse width modulation) pour la commande de moteur par exemple – 10 – GEII - Info2 C2 Les mémoires Objectifs • Comprendre le fonctionnement des mémoires électroniques • Classifier les mémoires électroniques 1. Les mémoires dans l’informatique 2. Les mémoires électroniques Définition 2.1. Classement des mémoires • Caractéristiques : • Type d’accès : • Durée de vie de l’information : 2.2. Organisation d’une mémoire Une mémoire est un tableau de données indexé. L’information élémentaire est un bit (binary digit). Ces données sont rassemblées en mots binaires qui forme les lignes de ce tableau. On accède à l’une des lignes par une adresse qui se trouve ensuite sur les entrées/sorties de données. Info2 INFORMATIQUE EMBARQUEE Mot binaire Capacité Volatilité Il existe deux grands types de mémoires électroniques : • Mémoire non-volatile gardant leurs informations même sans courant (appelées également ROM) • Mémoire volatile perdant leurs informations dès que la source d’énergie est supprimée (appelées également RAM) 2.3. Exemple - ROM SANYO • Taille d’un mot (W M ) = • Nombre d’adresses (C M ) = • Désignation standard = • Capacité en bits (C B ) = • Capacité en octets (CO ) = – 12 – Info2 INFORMATIQUE EMBARQUEE 2.4. Méthode d’accès Il existe deux méthodes d’accès possibles pour les mémoires électroniques. Accès direct / aléatoire Accès séquentiel 3. Association de mémoires Mise en parallèle Extension de la taille d’un mot de donnée Mise en série Extension du nombre d’adresses disponible 4. Classification de mémoires • ROM (read-only memory ) : > PROM (programmable ROM) ou OTP ROM (one-time programmable) : > EEPROM (electrically erasable PROM) ou E2PROM : > Flash : EEPROM plus rapide • RAM (random-access memory ) : > statique (SRAM) : information conservée tant que la tension d’alimentation est présente > dynamique (DRAM) : rafraîchissement périodique des cellules – 13 – Info2 INFORMATIQUE EMBARQUEE 4.1. ROM 4.1.1 EEPROM EEPROM Rétention des informations : Longévité : Généralement à accès série, les protocoles de transfert utilisés le plus couramment sont : • I2C (Inter-Integrated Circuit Communication) - Philips - 100 kbits/s à 1 Mbits/s (2 fils) • SPI (Serial Protocol Interface) - 1 à 5 Mbits/s (4 fils) 4.1.2 Flash-ROM Flash-ROM Rétention des informations : Longévité : – 14 – Info2 INFORMATIQUE EMBARQUEE 4.2. RAM 4.2.1 SRAM Static RAM Rapidité de fonctionnement : Capacité : • Basé sur une bascule bistable RS (Q1 et Q2) • R1 et R2 souvent remplacées par des transistors • Au total : 6 composants pour 1 bit 4.2.2 DRAM Dynamic RAM Capacité : • Gain de place ! • RAFRAICHISSEMENT OBLIGATOIRE ! ! 4.2.3 • Information mémorisée sous forme d’une charge électrique • Un transistor et une capacité • Au total : 2 composants pour 1 bit Evlution des mémoires Augmentation de la capacité / Accélération des opérations • Synchronous DRAM / SDRAM transfert à grande vitesse > Single Data Rate (SDR) > Double Data Rate (DDR) • SDR : 1 Go/s (PC133) • DDR : 4.8 Go/s (PC4800) • DDR2 : 9.6 Go/s (PC9600) • DDR3-1800 : 14.4 Go/s (PC14400) • Video Memory transfert à très grande vitesse / lecture-écriture simultanées > VRAM > WRAM – 15 – GEII - Info2 C3 Espaces mémoires du PIC16F690 Objectifs • Savoir utiliser les différents espaces mémoires d’un microcontroleur • Différencier l’adressage direct et l’adressage indirect 1. Les espaces mémoires Programme Données • Flash-ROM • RAM • WM = • WM = • CM = • CM = • Variables • Suite d’instructions 2. Mémoire programme Reset Vector Interrupt Vector PCL / PC Info2 INFORMATIQUE EMBARQUEE 3. Mémoire données Décomposée en 4 banques sur le PIC16F690 • 128 adresses chacune • 7 fils d’adressage 1 adresse = 1 octet = 8 bits Deux zones distinctes : SFR GPR 4. Registres spéciaux 4.1. Registre de travail W Registre W MOVLW : déplace une valeur dans W ADDWF : additionne W et une adresse 4.2. Registre d’état STATUS (voir Annexe) – 17 – Info2 INFORMATIQUE EMBARQUEE 5. Adressage direct ou indirect 5.1. Adressage direct Définition 5.2. Adressage indirect Utilisation du registre FSR • Adresse de la case • Se comporte comme une case mémoire Utilisation du registre INDF • Case mémoire pointée par FSR Initialisation des 16 premières cases de la RAM etiquette NEXT FIN instruction MOVLW MOVWF CLRF INCF BTFSS GOTO GOTO opérande 0x20 FSR INDF FSR FSR,4 NEXT FIN – 18 – commentaires ; W = 0x20 ; FSR = W INDF = 0 FSR = FSR + 1 ; SI FSR,4 = 0 ALORS ; RETOUR A NEXT ; SINON FIN GEII - Info2 C4 Jeu d’instructions du PIC16F690 Objectifs • Découvrir le jeu d’instructions du PIC16F690 • Différencier les niveaux de programmation • Savoir écrire un programme en langage assembleur 1. Programme et compilation 1.1. Programme Que fait un programme ? • Lire des données en entrée (capteurs) • Effectuer des calculs • Fournir un résultat en sortie (actionneurs) Programme informatique 1.2. Langage de haut niveau et compilation Langage de haut niveau • Abstraction de la machine qui exécute le programme • Proche du langage humain • Non compréhensible par la machine 1.3. Langage de bas niveau ou langage machine Langage machine Info2 INFORMATIQUE EMBARQUEE 2. Instruction Instruction Mnémonique 3. Jeu d’instructions La famille des PIC16F possède au total 35 instructions différentes, découpées en 3 sous-catégories : • Opérations orientées octet • Opérations orientées bit • Opérations de contrôle La liste de toutes les instructions est donnée en annexe. 3.1. Instruction orientée octet Exemple de l’instruction ADDWF – 20 – Info2 INFORMATIQUE EMBARQUEE 3.2. Instruction orientée bit Exemple de l’instruction BCF 3.3. Instruction de contrôle Exemple de l’instruction MOVLW – 21 – Info2 INFORMATIQUE EMBARQUEE 4. Temps d’exécution 1 cycle d’instruction = 4 coups d’horloge Exemple de l’instruction ADDWF TCYC = 4 · T OS C A 4 MHz, le microcontroleur exécute 1 000 000 d’instructions par seconde. 5. Programme en assembleur 5.1. Structure d’un programme var equ RES_VECT CODE 0 x0000 ; processor reset vector START ; go t o b e g i n n i n g o f p r o g r a m GOTO 0 x22 MAIN_PROG CODE ; l e t l i n k e r p l a c e main p r o g r a m START repere fin movlw movwf decfsz goto goto end 0 x33 var var , 1 repere fin equ equ equ 0 x22 0 x23 0 x24 movlw movwf movlw movwf 0 x10 var1 0 x90 var2 movf addwf movwf var1 , 0 var2 , 0 res Deuxième exemple var1 var2 res – 22 – Info2 INFORMATIQUE EMBARQUEE 5.2. Sous-programme Sous-programme Un sous-programme porte un nom (étiquette), finit par l’instruction return et il est appelé avec l’instruction call. Exemple d’utilisation d’un sous-programme action incf return cpt clrf movlw movwf call decfsz goto goto end cpt 0 x10 var action var , 1 repere fin START repere fin – 23 – GEII - Info2 C5 Les entrées-sorties du PIC16F690 Objectifs • 1. Interaction avec l’environnement Type de données Exemple du PIC16F690 • 20 broches • dont 18 utilisables > en entrée > en sortie • Regroupées en PORT > PORTA / PORTB / PORTC 2. Entrées-Sorties numériques Registre TRISx Registre PORTx Info2 INFORMATIQUE EMBARQUEE 2.1. Exemple 1 banksel clrf TRISC TRISC banksel movlw movwf PORTC 0 x90 PORTC bsf PORTC , 1 banksel clrf clrf decf TRISC TRISC TRISB TRISB banksel movf movwf PORTC PORTB , 0 PORTC clrf incf btfss goto PORTC PORTC PORTB , 6 bcl 2.2. Exemple 2 bcl – 25 – Info2 INFORMATIQUE EMBARQUEE 3. Entrées analogiques 3.1. Conversion analogique-numérique 3.2. Registres de configuration – 26 – Info2 INFORMATIQUE EMBARQUEE 4. Sorties modulées 4.1. Application aux machines tournantes But : Faire varier la vitesse de rotation d’un moteur à courant continu Principe : Faire varier la tension d’alimentation du moteur 4.2. Structure de la sortie PWM – 27 – GEII - Info2 C6 Interruptions et timers Objectifs • 1. Gestion des évènements extérieurs Il existe deux méthodes de gestion des évènements extérieurs sur un microcontroleur. Scrutation Interruption 2. Interruptions 2.1. Principe Interruption Utilisation des interruptions Info2 INFORMATIQUE EMBARQUEE 2.2. Sources d’interruption sur les PIC16F 2.3. Configuration Voir la page de documentation du registre INTCON en annexe. 2.4. Exemple d’un programme varx EQU RES_VECT INT_VECT 0 x70 CODE GOTO CODE GOTO 0 x0000 START 0 x0004 INTER INTER BTFSS INTCON , RABIF RETFIE INCF varx BCF INTCON , RABIF RETFIE START CLRF v a r x banksel TRISB CLRF TRISB DECF TRISB banksel OPTION_REG bsf OPTION_REG , 7 banksel INTCON BSF INTCON , RABIE BSF INTCON , GIE banksel IOCB BSF IOCB , 4 b a n k s e l PORTA GOTO $ – 29 – Info2 INFORMATIQUE EMBARQUEE 3. Timers matériels Timer matériel 3.1. Timer 0 et registre OPTION_REG Registre OPTION_REG Fréquence des interruptions avec le timer 0 – 30 – Ordering number : EN*5087C LC371100SP, SM, ST-10/20LV CMOS LSI LC371100SP, SM, ST-10/20LV Pin Assignments Pin Functions 1 MEG (131072 words× 8 bits) Mask ROM Internal Clocked Silicon Gate Preliminary Overview The LC371100SP, LC371100SM and LC371100ST are 131,072-word × 8-bit organization (1,048,576-bit) mask programmable read only memories. The LC371100SP-10, LC371100SM-10 and LC371100ST-10 feature an access time of 100 ns, an OE access time of 40 ns, and a standby current of 30 µA, and are optimal for use in 5-V systems that require high-speed access. The LC371100SP-20LV, LC371100SM-20LV and LC371100ST-20LV feature an access time of 200 ns, an OE access time of 80 ns, and a standby current of 4 µA. Additionally, they provide high-speed access in 3.3-V systems (3.0 to 3.6 V) with a 150-ns access time and a 60ns OE access time. These ROMs adopt the JEDEC standard pin assignment which allows them to replace EPROM easily. To prevent bus line collisions in multi-bus microcontroller systems, pin 24 can be mask programmed to be either active high or active low. A0 to A16 Address input D0 to D7 Data output CE/CE Chip enable input OE/OE Output enable input VCC Power supply VSS Ground Package Dimensions unit: mm 3192-DIP32 [LC371100SP] SANYO: DIP32 Block Diagram unit: mm 3205-SOP32 [LC371100SM] Features • 131072 words × 8 bits organization • Power supply LC371100SP, SM, ST-10: 5.0 V ± 10% LC371100SP, SM, ST-20LV: 2.7 to 3.6 V • Fast access time (tAA, tCA) LC371100SP, SM, ST-10: 100 ns (max.) LC371100SP, SM, ST-20LV: 200 ns (max.) 150 ns (VCC = 3.0 to 3.6 V) • Operating current LC371100SP, SM, ST-10: 70 mA (max.) LC371100SP, SM, ST-20LV: 20 mA (max.) • Standby current LC371100SP, SM, ST-10: 30 µA (max.) LC371100SP, SM, ST-20LV: 5 µA (max.) • Full static operation (internal clocked type) • Fully TTL compatible (5 V supply) • 3 state outputs • JEDEC standard pin configuration • Package type LC371100SP-10/20LV: DIP32 (600 mil) LC371100SM-10/20LV:SOP32 (525 mil) LC371100ST-10/20LV: TSOP32 (8 mm × 20 mm) SANYO: SOP32 unit: mm 3224-TSOP32 [LC371100ST] Truth Table CE/CE OE/OE Output Current drain L/H X High-impedance Standby mode H/L L/H High-impedance Operating mode H/L H/L DOUT Operating mode X: H or L level should be offered. SANYO: TSOP32 (type-I) SANYO Electric Co.,Ltd. Semiconductor Bussiness Headquarters TOKYO OFFICE Tokyo Bldg., 1-10, 1 Chome, Ueno, Taito-ku, TOKYO, 110-8534 JAPAN 43098HA (OT)/51195TH (OT)/41095TH (OT) No. 5087-1/5 No. 5087-2/5 LC371100SP, SM, ST-10/20LV LC371100SP, SM, ST-10/20LV 5 V Operation Specifications Absolute Maximum Ratings *1 Parameter DC Recommended Operating Ranges at Ta = 0 to +70°C Symbol Maximum supply voltage Conditions Ratings VCC max Supply input voltage VIN Supply output voltage VOUT Allowable power dissipation Pd max Unit Parameter –0.3 to +7.0 V –0.3*2 to VCC + 0.3 V Supply voltage –0.3 to VCC + 0.3 V 1.0 W Operating temperature Topr Ta = 25°C; Reference values for the SANYO DIP package 0 to +70 °C Storage temperature Tstg –55 to +125 °C Parameter Input capacitance Symbol CIN Output capacitance COUT Ratings min typ Unit max 8 pF 10 pF VIN = 0 V; Reference values for the SANYO DIP package VOUT = 0 V; Reference values for the SANYO DIP package Note: * This parameter is periodically sampled and not 100% tested. Ratings min 4.5 Input high level voltage VIH Input low level voltage VIL typ 5.0 Unit max 5.5 V 2.2 VCC + 0.3 V –0.3 +0.6 V DC Characteristics at Ta = 0 to +70°C, VCC = 5.0 V ±10% Parameter Operating supply current Conditions Conditions VCC max Note: 1. Permanent device damage may occur if Absolute Maximum Ratings are exceeded. Functional operation should be restricted to Recommended Operating Conditions. 2. VIN (min) = –3.0 V (pulse width ≤ 30 ns) Input/Output Capacitance* at Ta = 25°C, f = 1.0 MHz Symbol Standby supply current Ratings Symbol Conditions ICCA1 CE = 0.2 V (CE = VCC – 0.2 V), VI = VCC – 0.2 V/0.2 V 30 mA ICCA2 CE = VIL (CE = VIH), IO = 0 mA, VI = VIH/VIL, f = 10 MHz 70 mA ICCS1 CE = VCC – 0.2 V (CE = 0.2 V) ICCS2 CE = VIH (CE = VIL) min typ Unit max 30 (1.0*) µA 1.0 (300*) mA (µA) Input leakage current ILI VIN = 0 to VCC ±1.0 µA Output leakage current ILO CE or OE = VIH (CE or OE = VIL), VOUT = 0 to VCC ±1.0 µA Output high level voltage VOH IOH = –1.0 mA Output low level voltage VOL IOL = 2.0 mA 2.4 V 0.4 V Note: * Guaranteed at Ta = 25°C 3 V Operation DC Recommended Operating Ranges at Ta = 0 to +70°C Parameter Symbol Supply voltage AC Characteristics at Ta = 0 to +70°C, VCC = 5.0 V ±10% Ratings Conditions min VCC max typ 2.7 Unit max 3.0 Parameter 3.6 V Cycle time Symbol Conditions tCYC Ratings min typ Unit max 100 ns Input high level voltage VIH 0.8 VCC VCC + 0.3 V Address access time tAA 100 Input low level voltage VIL –0.3 +0.4 V CE access time tCA 100 ns OE access time tOA 40 ns Output hold time tOH Output disable time* tOD DC Electrical Characteristics at Ta = 0 to +70°C, VCC = 2.7 to 3.6 V Parameter Operating supply current Standby supply current Symbol Conditions ICCA1 CE = 0.2 V (CE = VCC – 0.2 V), VI = VCC – 0.2 V/0.2 V Ratings min typ Unit max 15 mA ICCA2 CE = VIL (CE = VIH), IO = 0 mA, VI = VIH/VIL, f = 5 MHz 20 mA ICCS1 CE = VCC – 0.2 V (CE = 0.2 V) 5 (0.5*) µA ICCS2 CE = VIH (CE = VIL) 50 (10*) µA Input leakage current ILI VIN = 0 to VCC ±1.0 µA Output leakage current ILO CE or OE = VIH (CE or OE = VIL), VOUT = 0 to VCC ±1.0 µA Output high level voltage VOH IOH = –0.5 mA Output low level voltage VOL IOL = 0.5 mA VCC – 0.2 V 0.2 V Note: * Guaranteed at Ta = 25°C AC Characteristics at Ta = 0 to +70°C, VCC = 2.7 to 3.6 V Parameter Cycle time Symbol Ratings Conditions tCYC min 200 typ 200 (150*2) ns CE access time tCA (150*2) ns OE access time tOA Output hold time tOH tOD ns Note: * tOD is measured from the earlier edge of the CE (CE) or OE(OE)’s going high impedance. This parameter is periodically sampled and not 100% tested. AC Test Conditions Input pulse levels 0.4 V to 0.8 VCC (3 V measurement), 0.6 V to 2.4 V (5 V measurement) Input rise/fall time 5 ns Input timing level 1.5 V Output timing level 1.5 V Output load 70 pF (3 V measurement) See figure (5 V measurement) ns tAA Output disable ns 30 Unit max (150*2) Address access time time*1 20 ns 200 80 (60*2) 25 ns ns 50 ns Note: 1. tOD is measured from the earlier edge of the CE (CE) or OE(OE)’s going high impedance. This parameter is periodically sampled and not 100% tested. 2. Guaranteed at VCC = 3.0 to 3.6 V Output Load (5 V measurement) No. 5087-3/5 No. 5087-4/5 PIC16F631/677/685/687/689/690 FIGURE 2-8: PIC16F690 SPECIAL FUNCTION REGISTERS File Address Indirect addr. (1) TMR0 PCL STATUS FSR PORTA PORTB PORTC File Address Indirect addr. (1) OPTION_REG PCL STATUS FSR TRISA TRISB TRISC PCLATH INTCON PIR1 00h 01h 02h 03h 04h 05h 06h 07h 08h 09h 0Ah 0Bh 0Ch PIR2 TMR1L TMR1H T1CON TMR2 T2CON 0Dh 0Eh 0Fh 10h 11h 12h PIE2 PCON OSCCON OSCTUNE SSPBUF SSPCON CCPR1L CCPR1H CCP1CON RCSTA TXREG RCREG 13h 14h 15h 16h 17h 18h 19h 1Ah 1Bh 1Ch 1Dh 1Eh 1Fh 20h SSPADD(2) SSPSTAT WPUA IOCA WDTCON TXSTA SPBRG SPBRGH BAUDCTL PWM1CON ECCPAS ADRESH ADCON0 PR2 ADRESL ADCON1 80h 81h 82h 83h 84h 85h 86h 87h 88h 89h 8Ah 8Bh 8Ch Indirect addr. (1) TMR0 PCL STATUS FSR PORTA PORTB PORTC 8Dh 8Eh 8Fh 90h 91h 92h EEADR EEDATH EEADRH 93h 94h 95h 96h 97h 98h 99h 9Ah 9Bh 9Ch 9Dh 9Eh 9Fh A0h General Purpose Register General Purpose Register 7Fh Bank 0 accesses 70h-7Fh Bank 1 PCLATH INTCON EEDAT WPUB IOCB VRCON CM1CON0 CM2CON0 CM2CON1 ANSEL ANSELH File Address 100h 101h 102h 103h 104h 105h 106h 107h 108h 109h 10Ah 10Bh 10Ch Indirect addr. (1) OPTION_REG PCL STATUS FSR TRISA TRISB TRISC 10Dh 10Eh 10Fh 110h 111h 112h EECON2(1) 113h 114h 115h 116h 117h 118h 119h 11Ah 11Bh 11Ch 11Dh 11Eh 11Fh 120h PCLATH INTCON EECON1 PSTRCON SRCON 180h 181h 182h 183h 184h 185h 186h 187h 188h 189h 18Ah 18Bh 18Ch 18Dh 18Eh 18Fh 190h 191h 192h 193h 194h 195h 196h 197h 198h 199h 19Ah 19Bh 19Ch 19Dh 19Eh 19Fh 1A0h General Purpose Register 80 Bytes 96 Bytes Note 1: 2: PCLATH INTCON PIE1 File Address 80 Bytes EFh F0h FFh accesses 70h-7Fh Bank 2 16Fh 170h 17Fh accesses 70h-7Fh 1F0h 1FFh Bank 3 Unimplemented data memory locations, read as ‘0’. Not a physical register. Address 93h also accesses the SSP Mask (SSPMSK) register under certain conditions. See Registers 13-2 and 13-3 for more details. © 2006 Microchip Technology Inc. Preliminary DS41262C-page 31 PIC16F631/677/685/687/689/690 TABLE 2-1: Addr Name PIC16F631/677/685/687/689/690 SPECIAL FUNCTION REGISTERS SUMMARY BANK 0 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Value on POR, BOR Page Bank 0 00h INDF Addressing this location uses contents of FSR to address data memory (not a physical register) xxxx xxxx 44,201 01h TMR0 Timer0 Module Register xxxx xxxx 81,201 02h PCL Program Counter’s (PC) Least Significant Byte 0000 0000 44,201 03h STATUS 36,201 04h FSR 05h PORTA(7) 06h PORTB(7) RB7 RB6 RB5 RB4 — — — — xxxx ---- 69,201 07h PORTC(7) RC7 RC6 RC5 RC4 RC3 RC2 RC1 RC0 xxxx xxxx 76,201 — IRP RP1 RP0 TO PD Z DC C 0001 1xxx xxxx xxxx 44,201 RA4 RA3 RA2 RA1 RA0 --xx xxxx 59,201 Indirect Data Memory Address Pointer — — RA5 08h — Unimplemented — 09h — Unimplemented — — 0Ah PCLATH — — — ---0 0000 44,201 0Bh INTCON GIE PEIE T0IE INTE RABIE T0IF INTF RABIF(1) 0000 000x 38,201 — ADIF(4) RCIF(2) TXIF(2) SSPIF(5) CCP1IF(3) TMR2IF(3) TMR1IF -000 0000 41,201 OSFIF C2IF C1IF EEIF — — — — Write Buffer for upper 5 bits of Program Counter 0Ch PIR1 0Dh PIR2 0Eh TMR1L Holding Register for the Least Significant Byte of the 16-bit TMR1 Register 0Fh TMR1H Holding Register for the Most Significant Byte of the 16-bit TMR1 Register 10h T1CON 11h TMR2(3) 12h T2CON(3) 13h SSPBUF(5) 14h SSPCON(5, 6) 15h CCPR1L(3) 16h CCPR1H(3) 17h CCP1CON(3) T1GINV TMR1GE TOUTPS3 42,201 86,201 xxxx xxxx 86,201 T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON 0000 0000 88,201 0000 0000 91,201 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 -000 0000 92,201 SSPM2 SSPM1 Timer2 Module Register — 0000 ---xxxx xxxx Synchronous Serial Port Receive Buffer/Transmit Register xxxx xxxx 178,201 0000 0000 177,201 Capture/Compare/PWM Register 1 (LSB) xxxx xxxx 128,201 Capture/Compare/PWM Register 1 (MSB) xxxx xxxx 128,201 WCOL SSPOV SSPEN CKP SSPM3 SSPM0 P1M1 P1M0 DC1B1 DC1B0 CCP1M3 CCP1M2 CCP1M1 CCP1M0 0000 0000 127,201 SPEN RX9 SREN CREN ADDEN FERR OERR RX9D 18h RCSTA(2) 0000 000x 159,201 19h TXREG(2) EUSART Transmit Data Register 0000 0000 151 1Ah RCREG(2) EUSART Receive Data Register 0000 0000 154 1Bh — 1Ch PWM1CON(3) 1Dh ECCPAS(3) ECCPASE ECCPAS2 1Eh ADRESH(4) A/D Result Register High Byte 1Fh ADCON0(4) Legend: Note 1: 2: 3: 4: 5: 6: 7: Unimplemented PRSEN ADFM PDC6 VCFG — — PDC5 PDC4 PDC3 PDC2 PDC1 PDC0 0000 0000 144,201 ECCPAS1 ECCPAS0 PSSAC1 PSSAC0 PSSBD1 PSSBD0 0000 0000 141,201 CHS3 CHS2 CHS1 CHS0 GO/DONE ADON xxxx xxxx 115,201 0000 0000 113,201 – = Unimplemented locations read as ‘0’, u = unchanged, x = unknown, q = value depends on condition, shaded = unimplemented MCLR and WDT Reset do not affect the previous value data latch. The RABIF bit will be cleared upon Reset but will set again if the mismatch exists. PIC16F687/PIC16F689/PIC16F690 only. PIC16F685/PIC16F690 only. PIC16F677/PIC16F685/PIC16F687/PIC16F689/PIC16F690 only. PIC16F677/PIC16F687/PIC16F689/PIC16F690 only. When SSPCON register bits SSPM<3:0> = 1001, any reads or writes to the SSPADD SFR address are accessed through the SSPMSK register. See Registers 13-2 and 13-3 for more detail. Port pins with analog functions controlled by the ANSEL and ANSELH registers will read ‘0’ immediately after a Reset even though the data latches are either undefined (POR) or unchanged (other Resets). DS41262C-page 32 Preliminary © 2006 Microchip Technology Inc. PIC16F631/677/685/687/689/690 2.2.2.1 STATUS Register The STATUS register, shown in Register 2-1, contains: • the arithmetic status of the ALU • the Reset status • the bank select bits for data memory (GPR and SFR) The STATUS register can be the destination for any instruction, like any other register. If the STATUS register is the destination for an instruction that affects the Z, DC or C bits, then the write to these three bits is disabled. These bits are set or cleared according to the device logic. Furthermore, the TO and PD bits are not writable. Therefore, the result of an instruction with the STATUS register as destination may be different than intended. REGISTER 2-1: For example, CLRF STATUS, will clear the upper three bits and set the Z bit. This leaves the STATUS register as ‘000u u1uu’ (where u = unchanged). It is recommended, therefore, that only BCF, BSF, SWAPF and MOVWF instructions are used to alter the STATUS register, because these instructions do not affect any Status bits. For other instructions not affecting any Status bits, see Section 15.0 “Instruction Set Summary” Note 1: The C and DC bits operate as a Borrow and Digit Borrow out bit, respectively, in subtraction. See the SUBLW and SUBWF instructions for examples. STATUS: STATUS REGISTER R/W-0 R/W-0 R/W-0 R-1 R-1 R/W-x R/W-x R/W-x IRP RP1 RP0 TO PD Z DC(1) C(1) bit 7 bit 0 Legend: R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’ -n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown bit 7 IRP: Register Bank Select bit (used for indirect addressing) 1 = Bank 2, 3 (100h-1FFh) 0 = Bank 0, 1 (00h-FFh) bit 6-5 RP<1:0>: Register Bank Select bits (used for direct addressing) 00 = Bank 0 (00h-7Fh) 01 = Bank 1 (80h-FFh) 10 = Bank 2 (100h-17Fh) 11 = Bank 3 (180h-1FFh) bit 4 TO: Time-out bit 1 = After power-up, CLRWDT instruction or SLEEP instruction 0 = A WDT time-out occurred bit 3 PD: Power-down bit 1 = After power-up or by the CLRWDT instruction 0 = By execution of the SLEEP instruction bit 2 Z: Zero bit 1 = The result of an arithmetic or logic operation is zero 0 = The result of an arithmetic or logic operation is not zero bit 1 DC: Digit Carry/Borrow bit (ADDWF, ADDLW,SUBLW,SUBWF instructions)(1) 1 = A carry-out from the 4th low-order bit of the result occurred 0 = No carry-out from the 4th low-order bit of the result bit 0 C: Carry/Borrow bit(1) (ADDWF, ADDLW, SUBLW, SUBWF instructions)(1) 1 = A carry-out from the Most Significant bit of the result occurred 0 = No carry-out from the Most Significant bit of the result occurred Note 1: For Borrow, the polarity is reversed. A subtraction is executed by adding the two’s complement of the second operand. For rotate (RRF, RLF) instructions, this bit is loaded with either the high-order or low-order bit of the source register. DS41262C-page 36 Preliminary � 2006 Microchip Technology Inc. PIC16F631/677/685/687/689/690 2.2.2.3 INTCON Register Note: The INTCON register, shown in Register 2-3, is a readable and writable register, which contains the various enable and flag bits for TMR0 register overflow, PORTA change and external RA2/AN2/T0CKI/INT/C1OUT pin interrupts. REGISTER 2-3: R/W-0 INTCON: INTERRUPT CONTROL REGISTER R/W-0 GIE Interrupt flag bits are set when an interrupt condition occurs, regardless of the state of its corresponding enable bit or the global enable bit, GIE of the INTCON register. User software should ensure the appropriate interrupt flag bits are clear prior to enabling an interrupt. PEIE R/W-0 T0IE R/W-0 R/W-0 R/W-0 R/W-0 R/W-x INTE RABIE(1,3) T0IF(2) INTF RABIF bit 7 bit 0 Legend: R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’ -n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown bit 7 GIE: Global Interrupt Enable bit 1 = Enables all unmasked interrupts 0 = Disables all interrupts bit 6 PEIE: Peripheral Interrupt Enable bit 1 = Enables all unmasked peripheral interrupts 0 = Disables all peripheral interrupts bit 5 T0IE: Timer0 Overflow Interrupt Enable bit 1 = Enables the Timer0 interrupt 0 = Disables the Timer0 interrupt bit 4 INTE: RA2/INT External Interrupt Enable bit 1 = Enables the RA2/INT external interrupt 0 = Disables the RA2/INT external interrupt bit 3 RABIE: PORTA/PORTB Change Interrupt Enable bit(1,3) 1 = Enables the PORTA/PORTB change interrupt 0 = Disables the PORTA/PORTB change interrupt bit 2 T0IF: Timer0 Overflow Interrupt Flag bit(2) 1 = TMR0 register has overflowed (must be cleared in software) 0 = TMR0 register did not overflow bit 1 INTF: RA2/INT External Interrupt Flag bit 1 = The RA2/INT external interrupt occurred (must be cleared in software) 0 = The RA2/INT external interrupt did not occur bit 0 RABIF: PORTA/PORTB Change Interrupt Flag bit 1 = When at least one of the PORTA or PORTB general purpose I/O pins changed state (must be cleared in software) 0 = None of the PORTA or PORTB general purpose I/O pins have changed state Note 1: 2: 3: IOCA or IOCB register must also be enabled. T0IF bit is set when Timer0 rolls over. Timer0 is unchanged on Reset and should be initialized before clearing T0IF bit. Includes ULPWU interrupt. DS41262C-page 38 Preliminary � 2006 Microchip Technology Inc. PIC16F631/677/685/687/689/690 2.2.2.2 OPTION Register Note: The OPTION register, shown in Register 2-2, is a readable and writable register, which contains various control bits to configure: • • • • Timer0/WDT prescaler External RA2/INT interrupt Timer0 Weak pull-ups on PORTA/PORTB REGISTER 2-2: To achieve a 1:1 prescaler assignment for Timer0, assign the prescaler to the WDT by setting PSA bit of the OPTION register to ‘1’. See Section 6.3 “Timer1 Prescaler”. OPTION_REG: OPTION REGISTER R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 RABPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 bit 7 bit 0 Legend: R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’ -n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown bit 7 RABPU: PORTA/PORTB Pull-up Enable bit 1 = PORTA/PORTB pull-ups are disabled 0 = PORTA/PORTB pull-ups are enabled by individual PORT latch values bit 6 INTEDG: Interrupt Edge Select bit 1 = Interrupt on rising edge of RA2/INT pin 0 = Interrupt on falling edge of RA2/INT pin bit 5 T0CS: Timer0 Clock Source Select bit 1 = Transition on RA2/T0CKI pin 0 = Internal instruction cycle clock (FOSC/4) bit 4 T0SE: Timer0 Source Edge Select bit 1 = Increment on high-to-low transition on RA2/T0CKI pin 0 = Increment on low-to-high transition on RA2/T0CKI pin bit 3 PSA: Prescaler Assignment bit 1 = Prescaler is assigned to the WDT 0 = Prescaler is assigned to the Timer0 module bit 2-0 PS<2:0>: Prescaler Rate Select bits Bit Value Timer0 Rate WDT Rate 000 001 010 011 100 101 110 111 1:2 1:4 1:8 1 : 16 1 : 32 1 : 64 1 : 128 1 : 256 1:1 1:2 1:4 1:8 1 : 16 1 : 32 1 : 64 1 : 128 � 2006 Microchip Technology Inc. Preliminary DS41262C-page 37 PIC16F631/677/685/687/689/690 TABLE 15-2: PIC16F684 INSTRUCTION SET Mnemonic, Operands Description Cycles 14-Bit Opcode MSb LSb Status Affected Notes BYTE-ORIENTED FILE REGISTER OPERATIONS ADDWF ANDWF CLRF CLRW COMF DECF DECFSZ INCF INCFSZ IORWF MOVF MOVWF NOP RLF RRF SUBWF SWAPF XORWF f, d f, d f – f, d f, d f, d f, d f, d f, d f, d f – f, d f, d f, d f, d f, d Add W and f AND W with f Clear f Clear W Complement f Decrement f Decrement f, Skip if 0 Increment f Increment f, Skip if 0 Inclusive OR W with f Move f Move W to f No Operation Rotate Left f through Carry Rotate Right f through Carry Subtract W from f Swap nibbles in f Exclusive OR W with f 1 1 1 1 1 1 1(2) 1 1(2) 1 1 1 1 1 1 1 1 1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 dfff dfff lfff 0xxx dfff dfff dfff dfff dfff dfff dfff lfff 0xx0 dfff dfff dfff dfff dfff ffff ffff ffff xxxx ffff ffff ffff ffff ffff ffff ffff ffff 0000 ffff ffff ffff ffff ffff 00bb 01bb 10bb 11bb bfff bfff bfff bfff ffff ffff ffff ffff 111x 1001 0kkk 0000 1kkk 1000 00xx 0000 01xx 0000 0000 110x 1010 kkkk kkkk kkkk 0110 kkkk kkkk kkkk 0000 kkkk 0000 0110 kkkk kkkk kkkk kkkk kkkk 0100 kkkk kkkk kkkk 1001 kkkk 1000 0011 kkkk kkkk 0111 0101 0001 0001 1001 0011 1011 1010 1111 0100 1000 0000 0000 1101 1100 0010 1110 0110 C, DC, Z Z Z Z Z Z Z Z Z C C C, DC, Z Z 1, 2 1, 2 2 1, 2 1, 2 1, 2, 3 1, 2 1, 2, 3 1, 2 1, 2 1, 2 1, 2 1, 2 1, 2 1, 2 BIT-ORIENTED FILE REGISTER OPERATIONS BCF BSF BTFSC BTFSS f, b f, b f, b f, b Bit Clear f Bit Set f Bit Test f, Skip if Clear Bit Test f, Skip if Set 1 1 1 (2) 1 (2) 01 01 01 01 1, 2 1, 2 3 3 LITERAL AND CONTROL OPERATIONS ADDLW ANDLW CALL CLRWDT GOTO IORLW MOVLW RETFIE RETLW RETURN SLEEP SUBLW XORLW Note 1: 2: 3: k k k – k k k – k – – k k Add literal and W AND literal with W Call Subroutine Clear Watchdog Timer Go to address Inclusive OR literal with W Move literal to W Return from interrupt Return with literal in W Return from Subroutine Go into Standby mode Subtract W from literal Exclusive OR literal with W 1 1 2 1 2 1 1 2 2 2 1 1 1 11 11 10 00 10 11 11 00 11 00 00 11 11 C, DC, Z Z TO, PD Z TO, PD C, DC, Z Z When an I/O register is modified as a function of itself (e.g., MOVF GPIO, 1), the value used will be that value present on the pins themselves. For example, if the data latch is ‘1’ for a pin configured as input and is driven low by an external device, the data will be written back with a ‘0’. If this instruction is executed on the TMR0 register (and where applicable, d = 1), the prescaler will be cleared if assigned to the Timer0 module. If the Program Counter (PC) is modified, or a conditional test is true, the instruction requires two cycles. The second cycle is executed as a NOP. DS41262C-page 214 Preliminary � 2006 Microchip Technology Inc.