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.