View
231
Download
0
Category
Preview:
Citation preview
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
1/81
XXXVI aniversario del InstitutoTecnolgico de Tuxtla Gutirrez
Programacin avanzada de recursosespeciales de Microcontrolador
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
2/81
DIA 2
CONVERTIDOR ANALOGI A DIGITAL.
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
3/81
Elaborado por Ing. Alvaro Hernndez Sol
DEFINICIONCONVERTIDOR ANALOGICO A DIGITADispositivo perifrico programable quetiene la facultad de llevar a cabo laconversin de una seal analgica a sucorrespondiente valor digital.
CONVERTIDOR SEAL ANALOGICA
1, 2, 3, 4, 5, 6, 7, 8,...
Aproximaciones sucesivas
SEAL DIGITAL
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
4/81
Elaborado por Ing. Alvaro Hernndez Sol
Convertidor analgico a digitalSeales analgicas:
Temperatura.Peso.Flujo.
Velocidad.Posicin.Humedad.
Aceleracin.Intensidad luminosa.Sonido.Etc.
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
5/81
Elaborado por Ing. Alvaro Hernndez Sol
CAD
CAD ...
CPU
Seal analgica Dato binario( 4, 8, 12, 16, 18 )
CAD CPU
Paralelo
Serial
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
6/81
Elaborado por Ing. Alvaro Hernndez Sol
CADBus dedatos
Entradasanalgicas
C
CPU
MUL
TIPLEXOR
C AD
B
UFFER
.
.
.
D0D1D2
D3D4D5D6D7
AN0
AN1 AN
2 AN3
ANn
D0D1D2
D3D4D5D6D7
CAD
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
7/81
Elaborado por Ing. Alvaro Hernndez Sol
Convertidor analgico a digital. Voltaje de referencia (VREF).- Es el valormximo de seal analgica con el cual seobtiene el mximo valor digital.
Convertidoranalogicoa digital Voltaje de
referencia
AlCPU
Seal analgicaR EGI
STR O
5 volts
0 - 5volts 255
(11111111)
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
8/81
Elaborado por Ing. Alvaro Hernndez Sol
Convertidor analgico a digital.Convertidoranalogicoa digital Voltaje de
referencia
AlCPU
Seal analgica R EGISTR O
5 volts
0 - 2.5volts 128
(10000000)
Convertidor
analogicoa digital Voltaje dereferencia
AlCPU
Seal analgicaR EGISTR O
5 volts
0 - 1.25volts 64
(01000000)
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
9/81
Elaborado por Ing. Alvaro Hernndez Sol
Convertidor analgico a digital.
Convertidoranalogicoa digital Voltaje de
referencia
AlCPU
Seal analgica R EGISTR O
2.5 volts
0 - 2.5volts 255
(11111111)
Convertidor
analogicoa digital Voltaje dereferencia
AlCPU
Seal analgicaR EGISTR O
2.5 volts
0 - 1.25volts 128
(10000000)
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
10/81
Elaborado por Ing. Alvaro Hernndez Sol
Convertidor analgico a digital.
Convertidor
analogicoa digital Voltaje dereferencia
AlCPU
Seal analgicaR EGISTR O
1.25 volts
0 - 1 volts 204
(11001100)
Convertidoranalogicoa digital Voltaje de
referencia
AlCPU
Seal analgicaR EGISTR O
2.5 volts
0 - 0.63volts 64
(10000000)
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
11/81
Elaborado por Ing. Alvaro Hernndez Sol
Convertidor analgico a digital.
El PIC16F877 tiene un CAD8 entradas analgicas.
Capacitor como muestreador yretenedor de entrada. Convertidor de aproximacionessucesivas.
Salida digital de 10 bits. Voltaje de referencia seleccionable porsoftware.(V DD , V SS , RA 2 o RA 3).
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
12/81
CAD
Modulo convertidor analgico adigital de 10 bits.
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
13/81
Elaborado por Ing. Alvaro Hernndez Sol
CADEste convertidor tiene cuatro registrosdenominados:
1. ADRESH.- Resultado parte alta.2. ADRESL.- Resultado parte baja.3. ADCON0.- Registro de control 0.4. ADCON1.- Registro de control 1.
El registro de control 0 controla la operacindel modulo CAD.
El registro de control 1 configura las funcionesde las terminales de los puertos (ent/sal digitalo ent. analgica).
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
14/81
Elaborado por Ing. Alvaro Hernndez Sol
CADEl resultado de la conversion se almacena en los dos
registros ADRESH y ADRESL.El resultado se puede almacenar de dos formas,
justificado a la derecha o justificado a la izquierda.
Resultado Justificacin Binario ADRESH ADRESL
10Derecha
000000101000000000 00001010
Izquierda 00000010 10000000
200Derecha
001100100000000000 11001000
Izquierda 00110010 00000000
500Derecha
011111010000000001 11110100
Izquierda 01111101 00000000
1000Derecha
111110100000000011 11101000
Izquierda 11111010 00000000
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
15/81
Elaborado por Ing. Alvaro Hernndez Sol
CAD ( registro ADCON0 )
Bit Nombre Funcin7-6 ADCS1:
ADCS0Seleccin del reloj para la conversin00 = FOSC/201 = FOSC/810 = FOSC/3211 = FRC (el reloj es derivado del modulo del oscilador interno RS)
5-3 CHS2:CHS0
Selecciona del canal de entrada (terminal) analogica.000 = channel 0, (RA0/AN0)001 = channel 1, (RA1/AN1)010 = channel 2, (RA2/AN2)011 = channel 3, (RA3/AN3)100 = channel 4, (RA5/AN4)101 = channel 5, (RE0/AN5)(1)110 = channel 6, (RE1/AN6)(1)111 = channel 7, (RE2/AN7)(1)
2 GO/DONE Bit de estado de la conversin.If ADON = 1:1 = A/D conversion in progress (setting this bit starts the A/D conversion)0 = A/D conversion not in progress (this bit is automatically cleared by hardware when the A/Dconversion is complete)
0 ADON Seleccin de encendido del convertidor1 = Activado.
0 = Apagado.
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
16/81
Elaborado por Ing. Alvaro Hernndez Sol
CAD ( registro ADCON1 )
Bit Nombre Funcin7 ADFM Seleccin del formato del resultado de la conversin
0 = Justificado a la derecha. Los 6 BMS de ADRESH son leidos como 0.1 = Justificado a la izquierda. Los 6 bms de ADRESL son leidos como 0.
3-0 PCFG3:PCFG0
Control de configuracin de puertos.
AN7RE2
AN6RE1
AN5RE0
AN4RA5
AN3RA3
AN2RA2
AN1RA1
AN0RA0
V REF+ V REF- CANAL/REF
0000 A A A A A A A A VDD VSS 8/0 0001 A A A A VREF+ A A A RA3VSS 7/10010 D D D A A A A A VDD VSS 5/00011 D D D A VREF+ A A A RA3VSS 4/10100 D D D D A D A A VDD VSS 3/00101 D D D D VREF+ D A A RA3 VSS 2/1011X D D D D D D D D VDD VSS 0/01000 A A A A V
REF+V
REF- A A RA3RA2 6/2
1001 D D A A A A A A VDD VSS 6/01010 D D A A VREF+ A A A RA3VSS 5/11011 D D A A VREF+ VREF- A A RA3RA2 4/21100 D D D A VREF+ VREF- A A RA3RA2 3/21101 D D D D VREF+ VREF- A A RA3RA2 2/21110 D D D D D D D A VDD VSS 1/01111 D D D D VREF+ VREF- D A RA3 RA2 1 /2
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
17/81
Elaborado por Ing. Alvaro Hernndez Sol
CAD
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
18/81
Elaborado por Ing. Alvaro Hernndez Sol
Configuracin del convertidorSe tiene que asignar valores a lossiguientes registros:
TRISA.- Configuracin de puerto A.
TRISE.- Configuracin de puerto E.
ADCON0.- Seleccin de operacin.
ADCON1.- Configuracin de terminales.
INTCON (opcional) .- Configuracin de interrupcin.PIE1 (opcional) .- Encendido de convertidor.
PIR1 (opcional) .- Bandera de convertidor.
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
19/81
Elaborado por Ing. Alvaro Hernndez Sol
Adc_Read(?)unsigned Adc_Read(unsigned short channel);
Descripcin:Inicializa:
Reloj interno RC (min 12TAD). Antes de usar la funcin configurar:Terminales de los puertos A y E como entrada (Bits del TRISA y TRISE ).
Terminar deseada como entrada analogica ( ADCON1 ). Valor del voltaje de referencia adecuado,V ref + yV ref- ( ADCO0 )
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
20/81
Elaborado por Ing. Alvaro Hernndez Sol
Adc_Read(?)El Parmetrochannel representa el canal desde el cual laseal analogica sera adquirida.
Canal Puerto Terminal0 PORTA RA01 PORTA RA12 PORTA RA23 PORTA RA34 PORTA RA55 PORTE RE06 PORTE RE17 PORTE RE2
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
21/81
Elaborado por Ing. Alvaro Hernndez Sol
Adc_Read(?)
Example
unsigned tmp;
.
.
.
tmp = Adc_Read(1); /* Lee el valor analogico del canal 1*/
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
22/81
Elaborado por Ing. Alvaro Hernndez Sol
Configuracin del CAD1.- Se tiene la necesidad de muestrear la seal analgicaque entrega un sensor de temperatura, con valores
mnimos y mximo de voltaje, de 0 volts 5 volts:
Respuesta:Se selecciona una configuracin para una sola entradaanalogica y se justifica la conversion resultante a laderecha (ADCON1).
Se configura la terminal fisica como entrada (TRISE oTRISA).
//Instrucciones de configuracin ADCON1 = 0b00001110; //Vref+ = VDDy Vref- = VSSTRISA.F0 = 1; // RA0 como entrada
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
23/81
Elaborado por Ing. Alvaro Hernndez Sol
Configuracin del CAD2.- Se desea muestrear tres seales analogicas,con valores mnimos y mximo de voltaje, de
0 volts 3.5 volts:
Respuesta:Se selecciona una configuracin para tres entradas analgicascon voltaje de referencia positivo externo (RA3) y se justifica laconversin resultante a la derecha (ADCON1).
Se configura la terminal fsica como entrada (TRISE o TRISA).
//Instrucciones de configuracin ADCON1 = 0b00000011; // 4 entradas analogicas y Vref+ = RA3TRISA = 0b00101111; // RA0, RA1, RA2, RA5 como entradas
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
24/81
Elaborado por Ing. Alvaro Hernndez Sol
Configuracin del CAD3.- Se desea muestrear cinco seales analgicas, con valoresmnimos y mximo de voltaje, de 0.5 volts 3.5 volts:
Respuesta:Se selecciona una configuracin para cinco entradas analgicas convoltaje de referencia positivo y negativo externo (RA3 y RA2) y se justifica la conversin resultante a la derecha (ADCON1).
Se configura la terminal fsica como entrada (TRISE y TRISA).
//Instrucciones de configuracin ADCON1 = 0b00001000; // 6 entradas analgicas, Vref+ = RA3 y Vref- = RA2TRISA = 0b00101111; // RA0, RA1, RA2, RA3 y RA5 como entradas.TRISE = 0b00000111; // RE0, RE1 y RE2 como entradas.
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
25/81
Elaborado por Ing. Alvaro Hernndez Sol
Registros asociados al CAD
El registro INTCON nos sirve para:
Activar el vector de interrupciones ( GIE ) Activacin de los registros PIE1, PIE2, PIR1 y PIR2 (PEIE).El registro PIE1 nos sirve para:
Activa el convertidor analgico digital para usar el vector deinterrupcin. (ADIE).
El registro PIR1 nos sirve para:Bandera del convertidor analgico digital. (ADIF).
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
26/81
Elaborado por Ing. Alvaro Hernndez Sol
1.- Conversion analgica (problema)
Se desea llevar a cabo la conversin deuna seal analgica..
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
27/81
Elaborado por Ing. Alvaro Hernndez Sol
1.- Conversin analgica (algoritmo)
1. Inicializa variables, puertos y LCD.2. Realiza la conversin.
3. Convierte valor convertido a a cadena.4. Enva a LCD.5. Retardo de 1 segundo.
6. Ir a 2.
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
28/81
Elaborado por Ing. Alvaro Hernndez Sol
1.- Conversin analgica(diagrama de flujo)contador
Inicia puertos yLCD
Conversin analgico a digital
Inicia variable
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
29/81
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
30/81
Elaborado por Ing. Alvaro Hernndez Sol
1.- Conversin analgica(programa)char cadena[6];unsigned valor;
void main ( void ){
TRISA = 0b00000001; ADCON1= 0b00001110;Lcd_Init ( &PORTD );Lcd_Out (1,1,"Conversin analogica");Lcd_Out (2,1,"valor decimal :");Lcd_Out (3,12,"volts");
while(1){ valor = Adc_Read ( 0 );WordToStr ( valor, cadena );Lcd_Out ( 2, 13, cadena );
}}
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
31/81
Elaborado por Ing. Alvaro Hernndez Sol
Problema propuesto 11. Modifique el problema, de tal forma, que
adems de mostrar el valor decimal de laconversin, se muestre el valor devoltaje convertido. Suponga adems queese valor de voltaje, corresponde a lasalida de un sensor de temperatura
LM35, para un rango de 10 C. - 45 C.Muestre el resultado intercalado con unretardo de 1 segundo entre uno y otro.
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
32/81
Elaborado por Ing. Alvaro Hernndez Sol
2.- Conversin con referencia(problema)Se necesita realizar un programa que lleve a cabo
la conversin analgica a digital con lassiguientes condiciones:
Se tiene una seal de entrada de voltaje quetiene un rango 0 v 3.5 v.
Se requiere que la conversion se ajuste al rango. V entrada Codigo Convertido
0 v. 0 decimal.
3.5 v. 1023 decimal.
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
33/81
Elaborado por Ing. Alvaro Hernndez Sol
2.- Conversin con referencia(algoritmo)
1. Inicializa variables, puertos y LCD.2. Realiza la conversin.
3. Convierte valor convertido a a cadena.4. Enva a LCD.5. Retardo de 1 segundo.
6. Ir a 2.
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
34/81
Elaborado por Ing. Alvaro Hernndez Sol
2.- Conversin con referencia(diagrama de flujo)
contador
Inicia puertos yLCD
Conversin analgico a digital
Inicia variable
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
35/81
Elaborado por Ing. Alvaro Hernndez Sol
2.- Conversin con referencia(diagrama esquemtico )
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
36/81
Elaborado por Ing. Alvaro Hernndez Sol
Contador de segundos condicionado (programa 12_1)
char cadena[6];unsigned valor;
void main ( void ){
TRISA = 0b00001011;
ADCON1= 0b00000101;Lcd_Init ( &PORTD );Lcd_Out (1,1,"Conversin analogica");Lcd_Out (2,1,"valor decimal :");Lcd_Out (3,12,"volts");while(1){ valor = Adc_Read ( 0 );
WordToStr ( valor, cadena );Lcd_Out ( 2, 13, cadena );
}}
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
37/81
Elaborado por Ing. Alvaro Hernndez Sol
Problema 21. Modifique el programa para que se
pueda visualizar el valor de voltaje en lamisma pantalla.
2. Modifique el problema anterior, para estaocasin el sensor unicamente da valoresde 1.5 a 4 volts. Y se requiere manejar lamayor resolucion posible.
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
38/81
T I M E R 1
Temporizador numero 1 de pulsosde reloj interno y contador de
pulsos externos.
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
39/81
Elaborado por Ing. Alvaro Hernndez Sol
TMR1
Tiene las misma caracteristicas que elTMR0. Temporizador y contador (RC0).
Diferencias:Registro de 2 bytes (TMR1H y TMR1L).Preescalador (1:1, 1:2, 1:4, 1:8)Generador de reloj (RC0 y RC1)
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
40/81
Elaborado por Ing. Alvaro Hernndez Sol
TMR1 como oscilador
Cuando se habilita (T1OSCEN) las terminalesRC1/T1OSI/CCP2y RC0/T1OSO/T1CKIseconvierten en entradas.
Se genera una frecuencia de oscilacin dehasta 200 kHz, usando un cristal de:
32.768 kHz 100 kHz 200 kHz.
Funciona a pesar de la condicin SLEEP.
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
41/81
Elaborado por Ing. Alvaro Hernndez Sol
TMR1
EjemplosSe quiere contar 5 pulsos pero no se recarga
el valor de conteo.
TMR1H : TMR1L = 65531 ( 0xFFFB )
TMR1H : TMR1L = 65532TMR1H : TMR1L = 65533TMR1H : TMR1L = 65534TMR1H : TMR1L = 65535TMR1H : TMR1L = 0 desborde del timerTMR1H : TMR1L = 1TMR1H : TMR1L = 2TMR1H : TMR1L = 3
TMR1H : TMR1L = 4TMR1H : TMR1L = 5 no hay desbordeTMR1H : TMR1L = 6
.
.
.
Se quiere contar 4 pulsos recargando el valor de conteo.
TMR1H : TMR1L = 65532 ( 0xFFFC )
TMR1H : TMR1L = 65533TMR1H : TMR1L = 65534TMR1H : TMR1L = 65535TMR1H : TMR1L = 0 desborde del timerTMR1H : TMR1L = 65532TMR1H : TMR1L = 65533TMR1H : TMR1L = 65534TMR1H : TMR1L = 65535
TMR1H : TMR1L = 0 desborde del timerTMR1H : TMR1L = 65532TMR1H : TMR1L = 65533TMR1H : TMR1L = 65534TMR1H : TMR1L = 65535TMR1H : TMR1L = 0 desborde del timerTMR1H : TMR1L = 65532TMR1H : TMR1L = 65533
TMR1
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
42/81
Elaborado por Ing. Alvaro Hernndez Sol
TMR1
Bit Nombre Funcin5:4 T1CKPS1:
T1CK0S0Seleccin del preescalador del Timer111 = 1:810 = 1:401 = 1:2
00 = 1:13 T1OSCEN Habilitacion del oscilador del Timer1 .
1 = Habilita el oscilador.0 = El oscilador esta desactivado (el inversor se apaga para eliminar el consumo de potencia).
2 /T1SYNC Control de sincronizacin de entrada del reloj externo del Timer1Cuando TMR1CS = 1:1 = No se sincroniza la entrada del reloj externo.0 = Se sincroniza la entrada del reloj externo.Cuando TMR1CS = 0:Este bit es ignorado. El Timer1 usa el reloj interno.
1 TMR1CS Selecciona la fuente de reloj para el Timer1.1 = El reloj es extrerno desde la terminar RC0/T1OSO/T1CKI (En el filo de caida)0 = Reloj interno (FOSC/4)
0 TMR1ON Encendido del Timer1.1 = Encendido.
0 = Detiene el Timer1
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
43/81
Elaborado por Ing. Alvaro Hernndez Sol
TMR1
Cuando T1OSCEN esta desactivado (0) el inversor se deshabilita evitando elconsumo de energa.
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
44/81
Elaborado por Ing. Alvaro Hernndez Sol
Configuracin del TMR1Se tiene que asignar valores a los siguientesregistros:
TMR1H y TMR1L.- valor de conteo.
TMR1H : byte altoTMR1L : byte bajo.
T1CON.- Configuracin del TIMER 1.
INTCON (opcional) .- Configuracin de interrupcin.PIE1 (opcional) .- Habilitacin del Timer 1.PIR1 (opcional) .- Bandera de desborde del Timer 1.
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
45/81
Elaborado por Ing. Alvaro Hernndez Sol
Configuracin del TMR1Si queremos que el Timer 1 haga:Un conteo de 10 microsegundos usando un cristal de 20 MHz.
Como los registros puede contar desde 1 hasta 65536 pulsos,en esta ocacin no sera necesario usar el preescalador.
)0(6548650655362.0
10655361:1
05.041
1065536
4Pr655361:1
xFFCE LTMR H TMR
segseg
T eescalador
T LTMR H TMR
relojdeciclo
segenbuscado
//Instrucciones de configuracinT1CON = 0b00000001;TMR1H = 0xFF;TMR1L = 0xCE;
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
46/81
Elaborado por Ing. Alvaro Hernndez Sol
Configuracin del TMR1Si queremos que el Timer 1 haga:Un conteo de 200 ms ( 200000 microsegundos ) usando un
cristal de 8 MHz.
Como no podemos contar los 200000 pulsos con el registrotenemos que usar el preescalador.
)030(1553650000655364
200000655361:1
125.048200000
655364Pr
655361:1
CB x LTMR H TMR
segseg
T eescalador
T LTMR H TMR
relojde periodo
segenbuscado
//Instrucciones de configuracinT1CON = 0b00110001;TMR1H = 0x3C;TMR1L = 0xB0;
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
47/81
Elaborado por Ing. Alvaro Hernndez Sol
Configuracin del TMR1Si queremos que el Timer 1 haga:Un conteo de 7500 pulsos externos utilizando RC0/T1OSCI/T1C
No es necesario usar el preescaladorSin sincronizacin.
)420(580361:1
7500655361
750065536
Pr
#655361:1
B xE LTMR H TMR
eescalador LTMR H TMR externos pulsos
//Instrucciones de configuracinT1CON = 0b00000011;TMR1H = 0xE2;TMR1L = 0xB4;
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
48/81
Elaborado por Ing. Alvaro Hernndez Sol
Registros asociados al TMR1
INTCON.- Configurando GIE y PEIE, para activar el vector de interrupciones y activar losregistros PIE1, PIE2, PIR1 y PIR2, respectivamente.
PIE1.- Activar TMR1IE ( Inicia el uso de la bandera de desborde del Timer 1 ).
PIR1.- Verificar TMR1IF ( Bandera de desborde del Timer 1 ).
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
49/81
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
50/81
Elaborado por Ing. Alvaro Hernndez Sol
3.- Frecuencmetro ( Algoritmo)1. Configurar interrupcin externa para detectar
vuelta del motor.2. Configurar Timer 1 como temporizador, sin
encenderlo.3. Si es el segundo pulso, ir a 5.4. No es el segundo pulso, ir a 3
5. Determina frecuencia.6. Imprime frecuencia.7. Ir a 3.
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
51/81
Elaborado por Ing. Alvaro Hernndez Sol
3.- Frecuencmetro (algoritmo ISR )1. Reinicia la interrupcin externa.2. Cuenta pulso.3. Si es primer pulso ir a 5
4. No es el primer pulso ir a 75. Enciende temporizador 1.6. Salir de ISR.7. Apaga temporizador.8. Reinicia contador de pulsos.9. Salir de ISR.
F i ( )
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
52/81
Elaborado por Ing. Alvaro Hernndez Sol
Frecuencimetro (diagrama de flujo 1)frecuencimetro
Configura INT-EXTTimer 1
Encuentra frecuenciaImprime frecuencia
2 pulsos?Si
No
F i ( )
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
53/81
Elaborado por Ing. Alvaro Hernndez Sol
Frecuencimetro (diagrama de flujo 2)ISR
Reinicia la INT-EXTCuenta el pulso
Apaga Timer 12 pulsos?
Si
No
Enciende Timer 1
Terminar
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
54/81
Elaborado por Ing. Alvaro Hernndez Sol
3.- Frecuencmetro (programa)unsigned frecuencia, pulso, conteo;char cad[10];
void interrupt (void){ INTCON.F1 = 0;
pulso ++;
if ( pulso == 1 ){ T1CON.F0 = 1; }else
{ T1CON.F0 = 0;INTCON = 0;}
}
void main (void){ TRISB = 255;
OPTION_REG = 0b0100000;INTCON = 0b10010000;T1CON = 0b00110000;Lcd_Init ( &PORTD );Lcd_Out(1,1, Frecuencmetro); Lcd_Out(3,1, Frecuencia :) Lcd_Out(2,1, Pulsos :);
TMR1H = TMR1L = 0;while(1){ if ( pulso == 2 )
{ conteo = (TMR1H
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
55/81
Elaborado por Ing. Alvaro Hernndez Sol
PROBLEMAS DEL TMR11. Genere un reloj, el cual pueda ser
configurado, que tenga hora, minuto,segundos.
2. Modifique el problema propuesto 2 delTMR0, de tal forma que el retardo de 60segundos sea llevado a cabo por elTMR1 y el conteo de los pulsos searealizado por el TMR0, configurado comocontador de eventos externos.
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
56/81
T I M E R 2
Temporizador de ciclos de reloj ygenerador de seal de periodo
para puerto serial.
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
57/81
Elaborado por Ing. Alvaro Hernndez Sol
TIMER 2
Es un temporizador de 8 bits que tiene unpreescalador y un postescalador.
Es usado como base de tiempo para elmodulo de PWM (CCP)
Tambien alimenta al modulo de puertoserial sincrono (SSP), como reloj decorrimiento.
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
58/81
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
59/81
Elaborado por Ing. Alvaro Hernndez Sol
Funcionamiento del TIMER 24. El pulso que se genera reinicia el registroTMR2.
5. Este mismo pulso llega a un postescalador quepuede tener cualquiera de las siguientesescalas: 1, 2, 3, 4, 5, ..., 15 o 16.
6. Como salida este postescalador genera un
pulso que activa la bandera delTIMER 2(TMR2IF).
Registro T2CON
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
60/81
Elaborado por Ing. Alvaro Hernndez Sol
Registro T2CON
Bit Nombre Funcin6:3 TOUTPS3:
TOUTPS2:TOUTPS1:TOUTPS0
Seleccin del postescalador del Timer 20000 = 1:10001 = 1:20011 = 1:30100 = 1:4
.
.
.1110 = 1:151111 = 1:16
2 TMR2ON Encendido del Timer 2 .1 = Encendido.0 = Detiene el Timer 2.
1:0 T2CKPS1:T2CKPS0
Seleccin del preescalador del Timer 2.00 = 1:101 = 1:41X = 1:16
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
61/81
Elaborado por Ing. Alvaro Hernndez Sol
Diagrama a bloques del TIMER 2
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
62/81
Elaborado por Ing. Alvaro Hernndez Sol
Registros de configuracin
Se tiene que asignar valores a los siguientesregistros:
TMR2.- Nmero de pulsos a contar.
PR2.- Nmero de pulsos a contar.T2CON.- Configuracin del TIMER 2.
INTCON (opcional) .- Configuracin de interrupcin.PIE1 (opcional) .- Habilitacin del Timer 2.PIR1 (opcional) .- Bandera de desborde del Timer 2.
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
63/81
Elaborado por Ing. Alvaro Hernndez Sol
Configuracin del TMR2Si queremos que el Timer 2 haga:Un conteo de 75 microsegundos usando un cristal de 12 MHz.
Como el registro TMR2 puede contar desde 0 hasta PR2 pulsos,en esta ocacin no sera necesario utilizar tanto el preescaladorcomo el postescalador.
)10(22533.0
752
083.0411
75
42
xE PR
segseg
T dor postescalaor preescalad
T PR
relojdeciclo
segenbuscado
//Instrucciones de configuracinT2CON = 0b00000100;PR2 = 0xE1; // 0xE5 // 0xFFTMR2 = 0; // 0x04 // 0x1E
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
64/81
Elaborado por Ing. Alvaro Hernndez Sol
Configuracin del TMR2Si queremos que el Timer 2 haga:Un conteo de 50 milisegundos usando un cristal de 4 MHz.
Como el registro TMR2 puede contar desde 0 hasta PR2 pulsos,en esta ocacin se necesita utilizar tanto el preescalador comoel postescalador.
)0(223224
500002
25.041416
50000
42
xDF PR
segseg
T dor postescalaor preescalad
T PR
relojdeciclo
segenbuscado
//Instrucciones de configuracinT2CON = 0b01101111;PR2 = 0xDF;TMR2 = 0;
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
65/81
Elaborado por Ing. Alvaro Hernndez Sol
Registros asociados al Timer 2
INTCON.- Configurando GIE y PEIE, para activar el vector de interrupciones y activar losregistros PIE1, PIE2, PIR1 y PIR2, respectivamente.
PIE1.- Activar TMR2IE ( Inicia el uso de la bandera de desborde del Timer 2 ).
PIR1.- Verificar TMR2IF ( Bandera de desborde del Timer 2 ).
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
66/81
Elaborado por Ing. Alvaro Hernndez Sol
4.- Cerrojo temporizado (problema)
Disear un programa que controle elacceso de una habitacin. El sistemacuenta con un sensor de presencia, que
enva un pulso cuando hay personas en lahabitacin. Si el sistema no detecta lapresencia de personas durante 5 minutos,se debe activar un cerrojo elctrico. Elcerrojo se desactiva cuando se introduceuna clave. Esto ltimo se simular con unpulso de desactivacin.
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
67/81
Elaborado por Ing. Alvaro Hernndez Sol
4.- Cerrojo temporizado (algoritmo)
Programa principal1. Configurar interrupcin externa.2. Configurar Timer 2.
3. Si cerrrojo activado y pulso de desactivacinpresente ir a 54. No cerrojo activado o pulso de desactivacin ir
a 35. Desactiva el cerrojo.6. Reinicia conteo de tiempo.7. Ir a 3.
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
68/81
Elaborado por Ing. Alvaro Hernndez Sol
4.- Cerrojo temporizado (algoritmo 2)
Programa ISR 1. Si es interrupcin externa ir a 102. No es interrupcin externa ir a 33. Si es Timer 2 ir a 54. No es el Timer 2 salir de ISR.5. Reinicia Timer 26. Incrementa conteo7. Si conteo es igual a 5 minutos ir a 138. No conteo igual a 5 minutos ir a 99. Salir de ISR.10. Reinicia Interrupcin externa.11. Reinicia Timer 2.12. Salir de ISR.13. Activa cerrojo.14. Salir de ISR.
4 Cerrojo temporizado (diagrama de flujo 1)
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
69/81
Elaborado por Ing. Alvaro Hernndez Sol
4.- Cerrojo temporizado (diagrama de flujo 1)Cerrojo temp.
Configura INT-EXTTimer 2
Desactivar el cerrojoReinicia el conteo
de tiempo
Cerrojo activado Y
Pulsodesactivacin?
Si
No
4 - Cerrojo temporizado (diagrama de flujo 2)
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
70/81
Elaborado por Ing. Alvaro Hernndez Sol
4.- Cerrojo temporizado (diagrama de flujo 2)ISR
Reinicia la INT-EXTCuenta el pulso
Reinicia INT_EXT
Reinicia conteoINT_EXT?
Si
No
Incrementa conteo
Terminar
Timer 2?
No
Si
1
1
Conteo=
5 min?
Activa cerrojo
Si
No
4 Cerrojo temporizado (programa)
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
71/81
Elaborado por Ing. Alvaro Hernndez Sol
4.- Cerrojo temporizado (programa)unsigned decima_segundos, seg, anterior;char cad[10];
void interrupt (void){ if (INTCON.F1 == 1)
{ INTCON.F1 = 0;decima_segundos = 0;TMR2 = 0;
}if ( PIR1.F1 == 1 ){ PIR1.F1 = 0;
decima_segundos++;if ( decima_segundos == 30000 )
{ PORTC.F0 = 1;T2CON.F2 = 0;INTCON.F4 = 0;
}}
}
4 Cerrojo temporizado (programa 2)
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
72/81
Elaborado por Ing. Alvaro Hernndez Sol
4.- Cerrojo temporizado (programa 2)void main (void)
{OPTION_REG = 0b0100000;INTCON = 0b11010000;PIE1 = 0b00000010;T2CON = 0b01111111;PR2 = 39;TRISC = 0xf0;
TRISB = 255;PORTC = 0;TMR2 = 0;Lcd_Init ( &PORTD );Lcd_Out(1,1, "Cerrojo temporizado");Lcd_Out(3,1, "Cerrojo : abierto");
Lcd_Out(2,8, "segundos");
while(1){ if ( PORTC.F0 == 1 && PORTC.F7 == 1)
{ PORTC.F0 = 0;decima_segundos = 0;TMR2 = 0;T2CON.F2 = 1;
}seg = decima_segundos/100;
if ( seg != anterior ){ anterior = seg;WordToStr ( seg, cad);Lcd_Out ( 2, 1, cad );if (seg == 300)Lcd_Out(3, 11, "Cerrado ");
}}
}
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
73/81
Elaborado por Ing. Alvaro Hernndez Sol
I2C
Registros 1
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
74/81
Elaborado por Ing. Alvaro Hernndez Sol
Registros 1
Bit 7 SMP: Bit de muestreo 1 = Modo de velocidad estandar (100 kHz y 1 MHz)0 = Modo de alta velocidad (400 kHz)
bit 6 CKE: Seleccin de filo del reloj SPI1 = Niveles de entrada de acuerdo a las especificaciones SMBus0 = Niveles de entrada de acuerdo a las especificaciones I2C
bit 5 D/A : Bit de Dato/Direccin1 = Indica que el ultimo byte recibido o transmitido fue un dato0 = Indica que el ultimo byte recibido o transmitido fue una direccion
bit 4 P: Bit de STOP (Este bit se limpia cuando el modulo MSSP es deshabilitado, SSPEN es limpiado)1 = Indica que un bit de STOP ha sido detectado (este bit es 0 en el RESET) 0 = El bit STOP no ha sido detectado
bit 3 S: Bit de START (Este bit se limpia cuando el modulo MSSP es deshabilitado, SSPEN es limpiado)1 = Indica que un bit de START ha sido detectado (este bit es 0 en el RESET) 0 = El bit START no ha sido detectado
bit 2 R/W : Bit de lectura/escrituraEn modo I2C esclavo:
1 = Lectura0 = Escritura
En modo I2C Maestro:1 = Transmisin en progreso0 = Transmisin no esta en progreso
OR de este bit con SEN, RSEN, PEN, RCEN o ACKEN indicaran si el MSSP esta en modo IDLE.bit 1 UA: Actualizacin de direccin (10-bit en modo I2C)
1 = Indica que el usuario necesita actualizar la direccin en el registro SSPADD0 = La direccin no se necesita actualizar
bit 0 BF: Bit de estado de Buffer llenoRecepcin (modos SPI y I2C):
1 = Recepcin completada, SSPBUF esta lleno0 = Recepcin no completada, SSPBUF esta vacio
Transmisin (modo I2C):1 = Transmisin de dato en progreso (No incluye los bits ACK y STOP), SSPBUF esta lleno0 = Transmisin de data completada (No incluye los bits ACK y STOP), SSPBUF esta vacio
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
75/81
Elaborado por Ing. Alvaro Hernndez Sol
bit 7 WCOL: Write Collision Detect bitMaster mode:1 = A write to SSPBUF was attempted while the I2C conditions were not valid0 = No collision
Slave mode:1 = SSPBUF register is written while still transmitting the previous word (must be cleared insoftware)0 = No collisionbit 6 SSPOV : Receive Overflow Indicator bitIn SPI mode:1 = A new byte is received while SSPBUF holds previous data. Data in SSPSR is lost on overflow. In Slavemode, the user must read the SSPBUF, even if only transmitting data, to avoid overflows. In Mastermode, the overflow bit is not set, since each operation is initiated by writing to the SSPBUF register.(Must be cleared in software.)0 = No overflowIn I2 C mode:1 = A byte is received while the SSPBUF is holding the previous byte. SSPOV is a "dont care" in Transmit mode. (Must be cleared in software.)0 = No overflowbit 5 SSPEN : Synchronous Serial Port Enable bitIn SPI mode,When enabled, these pins must be properly configured as input or output1 = Enables serial port and configures SCK, SDO, SDI, and SS as the source of the serial port pins
=
d
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
76/81
Elaborado por Ing. Alvaro Hernndez Sol
Registros asociados
2
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
77/81
Elaborado por Ing. Alvaro Hernndez Sol
Comunicacin I2C
Programa que establezca comunicacincon una memoria que maneja su accesobajo el protocolo I2C. El programa debellenar la memoria partiendo de la direccin0 hasta la mxima direccin los nmerosdecrementales partiendo del 255,
repitiendo tantas veces como seanecesario.
C i i 2C ( l i 1)
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
78/81
Elaborado por Ing. Alvaro Hernndez Sol
Comunicacin I2C (algoritmo 1)1. Configuracin del puerto de comunicacin I2C.2. Inicializacin de variable con 255 y direccin con 0.3. Enciende el puerto I2C.4. Envo de comando para escritura.5. Envo de direccin.6. Envo de variable.7. Incrementa direccin.8. Decrementa variable.9. Si variable es negativo asigna 255 a variable.10. Si direccin es menor a mximo salta a 3.
C i i I2C ( )
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
79/81
Elaborado por Ing. Alvaro Hernndez Sol
Comunicacin I2C (algoritmo 2)11. Asigna direccin con 0.12. Enciende el puerto I2C.13. Enva comando de lectura.
14. Enva direccin.15. Lee el dato.16. Visualiza el dato en el puerto B.17. Apaga el puerto I2C.18. Si direccin es menor a mximo salta a 12.19. Salta a 2.
C i i I2C ( )
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
80/81
Elaborado por Ing. Alvaro Hernndez Sol
Comunicacin I2C (diagrama de flujo 1)I2C
dato = 0 dato = 255
Enciende puerto I 2C
Configura puerto I 2C
dato = 255direccin = 0
Enva direccin
Enva dato
Retardo de unsegundo
direccin
8/4/2019 Curso de Lenguaje C Para Micro Control Adores PIC (Recursos e2
81/81
Comunicacin I2C (diagrama de flujo 2)
dato
Recommended