curso de lenguaje c para micro control adores pic (recursos e2

Upload: fabian-hp

Post on 07-Apr-2018

226 views

Category:

Documents


0 download

TRANSCRIPT

  • 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