MM - Clases - Ing. José A. Picón

Anuncio
MICROPROCESADORES Y
MICROCONTROLADORES
FUNDAMENTOS TEÓRICOS
- EJEMPLOS DE APLICACIÓN
-
09/01/2009
Ing. José A. Picón - www.joseapicon.com.ve - (0416) 9519990
Informes de Laboratorio
y
Entregar
g informe con el siguiente
g
contenido:
◦
◦
◦
◦
◦
◦
◦
09/01/2009
Objetivo.
j
Base Teórica (necesaria para la práctica)
g
de bloques.
q
Diagramas
Diagramas circuitales.
Código de los programas.
Conclusiones y recomendaciones.
Bibliografía.
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Hoja de Datos del PIC 18F4550
y
Se sugiere imprimir o fotocopiar las siguientes
páginas numeradas según el documento PDF de
la hoja de datos del microcontrolador PIC
18F4550:
18F4550
3-6, 9-23, 45-57, 59-79, 81-89, 9195 99
95,
99-141,
141 239-260,
239 260 261-270,
261 270 287287
308, 309-358.
y
Revise el contenido antes de copiarlo por si
considera que no necesita algo en particular.
09/01/2009
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Memoria de Programas (Flash)
Memoria tipo
p Flash.
y 32KB de espacio, con
capacidad para 16384
instrucciones.
y Se
S di
direcciona
i
usando
d ell
Contador de Programa
de 21 bits.
y Pila de 31 niveles.
y
09/01/2009
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Memoria de Programas (Flash)
Puede ser leída, escrita y borrada.
y La lectura se efectúa sobre un byte en
cadaa operación.
ca
ope ac ó .
y La escritura se efectua en bloques de 8
bytes.
bytes
y El borrado se hace en bloques de 64
bytes.
bytes
y
09/01/2009
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Memoria de Programas (Flash)
y
Contador de Programa (PC)
◦ Se almacena el valor de este puntero en los
registros: PCU, PCH y PCL.
◦ Las operaciones de lectura y escritura de estos
registros se hacen por medio de los registros
PCLATU PCLATH,
PCLATU,
PCLATH PCLATL respectivamente
respectivamente.
y
Pila (stack)
◦ Bloque de memoria RAM de 31 palabras de 21
bits, almacena temporalmente el valor del PC
cuando se llama a subrutinas o interrupciones.
p
09/01/2009
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Memoria de Programas (Flash)
y
Operaciones
p
de Lectura y Escritura de
Tabla.
◦ Hayy dos instrucciones que
q ppermiten mover
bytes entre la memoria de datos y la de
programa, son: TBLRD y TBLWT.
◦ Para las operaciones de lectura, escritura y
borrado se usan los registros EECON1 y
EECON2 ((usados
d también
bié en ell acceso a
memoria EEPROM)
09/01/2009
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Memoria de Programas (Flash)
09/01/2009
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Memoria de Programas (Flash)
09/01/2009
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Set de Instrucciones (PIC 18F)
y
Hayy cuatro tipos
p de instrucciones:
◦
◦
◦
◦
09/01/2009
Operaciones
p
orientadas al byte.
y
Operaciones orientadas al bit.
p
con literales.
Operaciones
Operaciones de control.
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Set de Instrucciones (PIC 18F)
y
Operaciones
p
orientadas al byte.
y
◦ Tienen generalmente 3 operandos:
x El registro origen, especificado por “f”.
x El registro destino para almacenar el resultado,
especificado por “d”.
x El acceso a memoria,
i especificado
ifi d por ““a”.
”
◦ Ejemplo:
x movwff
09/01/2009
REG (mueve
(
ell valor
l de
d W a REG)
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Set de Instrucciones (PIC 18F)
y
Operaciones
p
orientadas al bit.
◦ Todas las instrucciones orientadas al bit
tienen 3 operandos:
x El registro origen, especificado por “f”.
x El bit dentro del registro origen, especificado por
“b”.
“b”
x El acceso a memoria, especificado por “a”.
◦ Ejemplo:
x bsf
09/01/2009
REG, BIT, a (coloca a 1 el bit BIT de REG)
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Set de Instrucciones (PIC 18F)
y
Operaciones
p
con literales.
◦ Pueden usar los siguientes operandos:
x Un valor literal para ser cargado dentro de un
registro RAM, especificado por “k”.
x El registro FSR deseado para cargar el valor literal,
especificado por “f”
f .
x No requiere operando, especificado por “-”.
◦ Ejemplo:
x movlw
09/01/2009
0x2E (Coloca en W el literal 2Eh)
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Set de Instrucciones (PIC 18F)
y
Operaciones
p
de control.
◦ Tienen generalmente 3 operandos:
x El registro origen, especificado por “f”.
x El registro destino para almacenar el resultado,
especificado por “d”.
x El acceso a memoria,
i especificado
ifi d por ““a”.
”
◦ Ejemplo:
x Call
C ll
09/01/2009
SUBRUTINA (llamado
(ll
d a di
dirección
ió
SUBRUTINA, PILA(31)=PC)
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Set de Instrucciones (PIC 18F)
09/01/2009
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Set de Instrucciones (PIC 18F)
09/01/2009
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Set de Instrucciones (PIC 18F)
y
Ejemplo
j p de uso de algunas
g
instrucciones:
BTG Cambio de Bit en f
Sintaxis: BTG f, b {,a}
Operandos:
0 ≤ f ≤ 255
0 ≤ b < 7
a ‫[ א‬0,1]
Operación: (f<b>) → f<b>
Registro Status: Sin cambio
Codificación: 0111 bbba ffff ffff
09/01/2009
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Set de Instrucciones (PIC 18F)
y
Ejemplo
j p de uso de algunas
g
instrucciones:
BTG Cambio de Bit en f
Descripción: Se invierte el Bit ‘b’ en la
posición de memoria ‘f’.
Si ‘a’ es ‘0’, se selecciona el Access
Bank. Si ‘a’ es ‘1’, se usa el BSR para
seleccionar el banco GPR (por defecto).
Si ‘a’ es ‘0’ y el set de instrucciones
extendido
está
habilitado,
esta
instrucción opera en el modo Indexed
Literal Offset Addressing
g siempre
p
que f ≤
q
95 (5Fh).
09/01/2009
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Set de Instrucciones (PIC 18F)
y
Ejemplo
j p de uso de algunas
g
instrucciones:
BTG Cambio de Bit en f
Ejemplo: BTG PORTC, 4, 0
Antes de la instrucción:
PORTC = 0111 0101 [75h]
Antes de la instrucción:
ó
PORTC = 0110 0101 [65h]
09/01/2009
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Set de Instrucciones (PIC 18F)
y
Ejemplo
j p de uso de algunas
g
instrucciones:
INCF Incrementa f
Sintaxis: INCF f {,d {,a}}
Operandos:
0 ≤ f ≤ 255
d ‫[ א‬0,1]
[0 1]
a ‫[ א‬0,1]
Operación: (f) + 1 → dest
Registro Status: C, DC, N, OV, Z
Codificación: 0010 10da ffff ffff
09/01/2009
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Set de Instrucciones (PIC 18F)
y
Ejemplo
j p de uso de algunas
g
instrucciones:
INCF Incrementa f
Descripción: Incrementa el contenido del
registro ‘f’. Si ‘d’ es ‘0’, el
resultado se guarda en W. Si ‘d’
d
es
‘1’, el resultado se devuelve al
registro ‘f’ (por defecto).
Si ‘a’ es ‘0’,
‘0’ se selecciona el Access
Bank. Si ‘a’ es ‘1’, se usa el BSR
para seleccionar el banco GPR (por
defecto).
09/01/2009
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Set de Instrucciones (PIC 18F)
y
Ejemplo
j p de uso de algunas
g
instrucciones:
INCF Incrementa f
Ejemplo: INCF CNT, 1, 0
Antes de la instrucción:
CNT = FFh; Z = 0; C = ?; DC = ?
Después
é de la instrucción:
ó
CNT = 00h; Z = 1; C = 1; DC = 1
09/01/2009
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Programación en Assembler
y
y
y
El lenguaje Assembler (lenguaje ensamblador) es
un lenguaje de programación de bajo nivel.
Se le llama lenguaje máquina debido a que es el
lenguaje de programación de más bajo nivel
usado para programar los microprocesadores o
microcontroladores.
microcontroladores
Las
instrucciones
vistas
anteriormente
representan el lenguaje ensamblador de los
microcontroladores PIC.
09/01/2009
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Ejemplo de Programación
y
A continuación se muestra un diagrama de
conexiones sencillo para luego crear programa
ejemplo a partir de él:
Puerto B
P1
D1
P2
D2
P3
PIC 18F4550
D8
Puerto D
D9
D10
09/01/2009
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Ejemplo de Programación - 1
;********************************************************************
;**
DECLARACIONES INICIALES
;********************************************************************
list p=18f4550
#include p18f4550.inc
;Se declara el microcontrolador a usar
;Se agrega al .asm el archivo de cabecera
;********************************************************************
;**
CONFIGURACION INICIAL DEL MICROCONTROLADOR (ejemplo)
;********************************************************************
CONFIG
CONFIG
CONFIG
CONFIG
CO
G
FOSC = HS
BOR = OFF
WDT = OFF
MCLRE
C
= O
ON
;Cristal de alta frecuencia (20MHZ)
;Reset por bajo voltaje
;Reset por WATCHDOG
;MCLR
;
C
como
co
o MCLR,
C , no
o co
como
o e
entrada
t ada RE3
3
... continúa
09/01/2009
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Ejemplo de Programación - 2
;********************************************************************
;**
DECLARACION DE VARIABLES
;********************************************************************
PULSADOR1 equ RB0 ;Agrega etiqueta a pin 0 de puerto B
PULSADOR2 equ RB1
;Agrega etiqueta a pin 1 de puerto B
CONTADOR equ 0x01
0 01 ;Agrega
A
etiqueta
ti
t a posicion
i i
F01 de
d mem
RETCONT0 equ 0x02
RETCONT1 equ 0x03 ;Etiquetas de mem para contador en
RETCONT2 equ 0x04 ; la rutina de retardo de 1 seg.
;********************************************************************
;**
VECTORES DE INTERRUPCION
;
;********************************************************************
org
0x00
;Vector
de RESET
nop
;No hay operación durante 1 ciclo maquina
goto INICIO
;Salto a rutina de inicio del programa
... continúa
09/01/2009
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Ejemplo de Programación - 3
;********************************************************************
;**
MAIN() - RUTINA PRINCIPAL DEL PROGRAMA
;********************************************************************
INICIO
clrf PORTB
;Coloca cada pin del puerto B a cero
clrf
l f LATB
;Coloca
C l
el
l registro
i t
LATB a cero
clrf PORTD
clrf LATD
movlw b'00000111‘
movwf TRISB
;0x07
;Habilita 3 bits del puerto B como entradas
movlw 0x00
movwf TRISD
;Habilita todo el puerto D como salidas
OTRAVEZ
movlw .9
;Repite 10 veces la secuencia
movwf CONTADOR ;Se coloca a 9 pero se ejecuta 10 veces el ciclo
... continúa
09/01/2009
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Ejemplo de Programación - 4
CICLO
movlw 0xAA
;Coloca b’10101010’ en acumulador
movwf PORTD
;Enciende leds (uno si y uno no)
call RETARDO
;Retardo de 1 segundo
movlw 0x55
;Coloca b’01010101’ en acumulador
movwf
f PORTD
;Rota
R t el
l encendido
did de
d los
l
l d en puerto
leds
t D
call RETARDO
decfsz CONTADOR, 1
;Decrementa CONTADOR y salta si es cero
goto CICLO
;Salta a CICLO
movlw 0x00
movwf PORTD
;Apaga todos los leds en puerto D
INFINITO
btfss PORTB,
PORTB RB2
;Verifica estado del PULSADOR 3
goto INFINITO
;Si no esta presionado salta a INFINITO
goto OTRAVEZ
;Si esta presionado salta a OTRAVEZ
... continúa
09/01/2009
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Ejemplo de Programación - 5
;********************************************************************
;**
RETARDO - RUTINA PARA RETARDO DE 1 SEGUNDO
;********************************************************************
********************************************************************
RETARDO
movlw .165
; 1 set numero de repeticiones (C)
movwf RETCONT0
; 1 |
SALTO0
movlw
l .41
41
; 1 set
t numero de
d repeticiones
ti i
(B)
movwf RETCONT1
; 1 |
SALTO1
movlw .147
; 1 set numero de repeticiones (A)
movwf RETCONT2
; 1 |
SALTO2
2
clrwdt
; 1 clear watchdog (solo para rellenar)
clrwdt
; 1 ciclo delay
(solo para rellenar)
decfsz RETCONT2, 1
; 1 + (1) es el tiempo 0 ? (A)
goto SALTO2
; 2 no, loop
decfsz RETCONT1, 1
; 1 + (1) es el tiempo 0 ? (B)
goto SALTO1
; 2 no, loop
decfsz RETCONT0, 1
; 1 + (1) es el tiempo 0 ? (C)
goto SALTO0
; 2 no, loop
return
; 2+2 Fin.
;*********************************************************************
end
;Fin del programa
09/01/2009
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Cálculo de Retardos
;********************************************************************
;**
RETARDO - RUTINA PARA RETARDO
;********************************************************************
********************************************************************
RETARDO
movlw X0
; X0 es una variable con valores entre
movwf RETCONT0
; 1 y 255
SALTO0
movlw
l X1
; X1 es una variable
i bl con valores
l
entre
t
movwf RETCONT1
; 1 y 255
SALTO1
movlw X2
; X2 es una variable con valores entre
movwf RETCONT2
; 1 y 255
S
SALTO2
O2
decfsz RETCONT2
; Ciclo (A) interno a los ciclos
goto SALTO2
; (B) y (C)
decfsz RETCONT1
; Ciclo (B)
goto SALTO1
;
decfsz RETCONT0
; Ciclo (C)
goto SALTO0
;
return
; Fin de la rutina
;*********************************************************************
09/01/2009
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Cálculo de Retardos
y
Para calcular el tiempo de ejecución de la subrutina
RETARDO se d
debe
b determinar
d
i
lla fó
fórmula
l adecuada
d
d
calculando los valores de X1, X2 y X3.
y
La fórmula para la rutina de ejemplo anterior es la
siguiente:
x = ((4/fosc)(
)(6 + ((4 + ((4 + 2(X2))X1)X0)
( )) ) )
donde 1 ≤ Xi ≤ 255, i = 0,1,2
09/01/2009
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Cálculo de Retardos
y
y
y
Se puede escoger un valor fijo para los Xi variando uno
o dos
d d
de ellos
ll hasta
h
encontrar ell valor
l adecuado
d
d de
d
tiempo.
Alguna variación en la rutina de retardo podría causar
cambios en el cálculo del tiempo.
Si su aplicación no requiere de precisión entonces no se
preocupe en calcular el tiempo con mayor exactitud de
la requerida, dos o tres cifras significativas podría ser
suficiente ppara obtener el tiempo
p requerido.
q
09/01/2009
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Tablas: Acceso a memoria Flash
…
TABLA_SECUENCIAS
EQU
0x003000
; TABLA EN MEMORIA DE DATOS
CONTA_MEM
EQU
0x10
; VARIABLE GENERAL
;------------------------TABLA-------------------------org TABLA_SECUENCIAS
; Origen de Tabla de Datos
data
b'10101010'
b 10101010 , b
b'01010101'
01010101
; 0x003000 - 0x003001
data
b'00011000', b'11000011'
; 0x003002 - 0x003003
FINTABLA
;---------------------FIN DE TABLA----------------------
09/01/2009
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Tablas: Acceso a memoria Flash
…
CAMBIO_LEDS
bsf
EECON1, EEPGD
bcf
EECON1, CFGS
movlw
0x00
movwf
TBLPTRU
movlw
0x30
movwf
TBLPTRH
movf
CONTA_MEM
movwf
TBLPTRL
TBLRD*
movf
return
; Escribe registro parte más alta
; Registro de tabla parte alta
; Registro de tabla parte baja
; Lectura de tabla
TABLAT
; Coloca en W el valor de TABLAT
; Retorna a rutina que llama
…
09/01/2009
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Tablas: Acceso a memoria Flash
…
SECUENCIA
movlw
0x00
movwf
CONTA_MEM
call
CAMBIO_LEDS
movwf
PORTD
call
RETARDO
incf
CONTA_MEM
movlw
0x07
cpfseq
CONTA_MEM
goto
SALTO
goto
SECUENCIA
SALTO
…
09/01/2009
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Multiplexado de Displays de 7seg
y
y
y
En muchas aplicaciones se hace necesario mostrar
i f
información
ió en múltiples
úl i l dispositivos
di
ii
usando
d un mismo
i
puerto o bus de transmisión.
Si se desea usar varios displays de 7 segmentos en un
sistema con microcontroladores, entonces será
necesario multiplexar la información hacia los distintos
di l
displays
d manera que sólo
de
ól sea necesario
i usar un
puerto de 8 bits y la cantidad de bits necesarios para la
activación de cada display de 7 segmentos.
La multiplexación en un sistema con microcontrolador
se hace por medio del programa, no se requiere agregar
más componentes electrónicos al sistema.
sistema
09/01/2009
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Multiplexado de Displays de 7seg
y
El siguiente es un ejemplo de diagrama de bloques para
un sistema
i
con displays
di l de
d 7 segmentos.
PIC18F4550
HABILITACIÓN
09/01/2009
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Multiplexado de Displays de 7seg
y
Asumiendo que los displays son de ánodo común
entonces ell programa se realiza
li de
d la
l siguiente
i i
manera:
Contenido no disponible por ahora.
ahora
09/01/2009
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Multiplexado de Displays de 7seg
y
y
y
Ahora, se necesita que “algo” produzca cada cierto
tiempo
i
un cambio
bi en ell multiplexado.
li l d
No debe sujetarse el programa a realizar el
multiplexado mientras está ejecutando alguna otra
tarea, por este motivo ese “algo” debería ser un
temporizador que cada cierto tiempo provoque una
i t
interrupción
ió de
d la
l operación
ió normall del
d l programa para
realizar el multiplexado sin alterar el orden de ejecución
del programa principal.
Esta una de las razones de ser de las
INTERRUPCIONES en los microcontroladores.
09/01/2009
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Interrupciones
y
y
El PIC 18F4550 tiene múltiples fuentes de interrupción
y dos
d niveles
i l de
d prioridad
i id d que permiten
i
a cada
d fuente
f
de interrupción ser asignada a un nivel de alta o baja
p
prioridad.
El vector de interrupción de alta prioridad está en la
posición de memoria 000008h y el de baja prioridad en
l posición
la
i ió 000018h.
000018h LLos eventos
t d
de iinterrupción
t
ió d
de
alta prioridad interrumpen cualquier interrupción de
baja prioridad que esté en proceso.
09/01/2009
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Interrupciones
y
Se usan diez registros para controlar la operación de las
i
interrupciones.
i
E
Estos
son:
◦ RCON
◦ INTCON
◦ INTCON2
◦ INTCON3
◦ PIR1, PIR2
◦ PIE1,, PIE2
◦ IPR1, IPR2
09/01/2009
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Interrupciones
y
Cada fuente de interrupción tiene tres bits para
controlar
l su operación.
ió La
L función
f ió de
d estos bits
bi se
describe a continuación:
◦ El bit Flag indica que un evento de interrupción ha
ocurrido.
◦ El bit Enable permite que la ejecución del programa
se dirija al vector de interrupción cuando el bit Flag
está activo.
activo
◦ El bit Priority selecciona la alta o baja prioridad de la
interrupción.
09/01/2009
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Interrupciones
y
El microcontrolador PIC 18F4550 tiene 21 fuentes de
i
interrupción.
ió Estas
E
se podrían
d í dividir
di idi en dos
d grupos:
◦ Grupo General de Interrupciones.
Interrupciones
x
x
x
x
x
09/01/2009
Interrupción del Temporizador 0.
Interrupción por cambio en PORTB.
Interrupción externa 0.
Interrupción externa 1.
Interrupción externa 2.
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Interrupciones
◦ Grupo de Interrupciones de Periféricos.
x
x
x
x
x
x
x
09/01/2009
Interrupción del SPP.
I
Interrupción
ió d
dell A/D.
A/D
Interrupción de RX/TX de la EUSART.
Interrupción del MSSP.
MSSP
Interrupción del CCP1 y CCP2.
Interrupción
p
de los temporizadores
p
1,, 2 y 3.
Interrupción de fallo del oscilador, del comparador,
del USB, de colisión de bus, de detección de
anomalías
lí en VDD y d
de escritura
it
en Flash/EEPROM.
Fl h/EEPROM
Ing. José A. Picón - www.joseapicon.com.ve - UNEXPO
Descargar