87
Aplicaciones de mC Lenguaje C- CC5x-Temporizadores Preparado por : Juan Ignacio Huircán Departamento de Ingeniería Eléctrica Universidad de La Frontera Otoño 2009

Aplicaciones de Microcontroladores

Embed Size (px)

DESCRIPTION

Aplicaciones de microcontroladores.Por : Juan Ignacio Huircán

Citation preview

Page 1: Aplicaciones de Microcontroladores

Aplicaciones de mC Lenguaje C- CC5x-Temporizadores

Preparado por : Juan Ignacio HuircánDepartamento de Ingeniería Eléctrica

Universidad de La Frontera

Otoño 2009

Page 2: Aplicaciones de Microcontroladores

Introducción

• El µC posee 3 Módulos Timer, llamados:

– TMR0– TMR1 – TMR2

Aplicaciones de µC

• Cada uno de ellos posee diversas características

• En la programación intervienen varios registros

• Su uso puede resultar complejo dado que requieren del manejo deinterrupciones

Page 3: Aplicaciones de Microcontroladores

Timer 0

• Es un Timer/counter de 8 bit

• Selector de clock interno o externo

• Interrupción de overflow de FFh a 00h

Aplicaciones de µC

• Preescalar de 8 bit configurable por software

• Selección del canto para clock externo

Page 4: Aplicaciones de Microcontroladores

Como funciona un sistema genérico??

Timer

Sea el bloque

Aplicaciones de µC

Page 5: Aplicaciones de Microcontroladores

Como funciona un sistema genérico??

Timer

Sea el bloque

clock

Aplicaciones de µC

Page 6: Aplicaciones de Microcontroladores

Como funciona un sistema genérico??

Timer

Sea el bloque

clock

Carga Inicial

Aplicaciones de µC

Page 7: Aplicaciones de Microcontroladores

Como funciona un sistema genérico??

Timer

Sea el bloque

clock

Carga Inicial

Aplicaciones de µC

Page 8: Aplicaciones de Microcontroladores

Como funciona un sistema genérico??

Timer

Sea el bloque

clock

Carga Inicial 0xFD

Aplicaciones de µC

El timer empieza a contar los cantos dereloj a partir de la carga inicial

Page 9: Aplicaciones de Microcontroladores

Como funciona un sistema genérico??

Timer

Sea el bloque

clock

Carga Inicial 0xFE

Aplicaciones de µC

El timer empieza a contar los cantos dereloj a partir de la carga inicial

Page 10: Aplicaciones de Microcontroladores

Como funciona un sistema genérico??

Timer

Sea el bloque

clock

Carga Inicial 0xFF

Aplicaciones de µC

El timer empieza a contar los cantos dereloj a partir de la carga inicial

Page 11: Aplicaciones de Microcontroladores

Como funciona un sistema genérico??

Timer

Sea el bloque

clock

Carga Inicial 0x00

Aplicaciones de µC

El timer empieza a contar los cantos dereloj a partir de la carga inicial

Page 12: Aplicaciones de Microcontroladores

Como funciona un sistema genérico??

Timer

Sea el bloque

clock

Carga Inicial 0x00

Aplicaciones de µC

El timer empieza a contar los cantos dereloj a partir de la carga inicial

Cuando llega a 0xFF y pasa a 0x00, se habilita el Flag de Interrupción TMR0IF

Page 13: Aplicaciones de Microcontroladores

Que es un preescalar?

clock

Divisor por 2

Es un mecanismo por el cual pasa previamente el clock antes deingresar al Timer, donde es divido. Por lo general por una potencia de 2

Aplicaciones de µC

Timer

clock

Pre-escalar

Page 14: Aplicaciones de Microcontroladores

Que es un preescalar?

Es un mecanismo por el cual pasa previamente el clock antes deingresar al Timer, donde es divido. Por lo general por una potencia de 2

clock

Divisor por 4

Aplicaciones de µC

Timer

clock

Pre-escalar

Page 15: Aplicaciones de Microcontroladores

Esquema del Timer 0 (simplificado)

MUX

MUX

osc

T0CS

PSA

T0SE

PIN RA4/T0CK TMR0 Reg

Aplicaciones de µC

MUX

MUX

Pre-escalar

PSA

PSA

PSA

WDT Enable bit

WDT time-out

Watchdog Timer

Page 16: Aplicaciones de Microcontroladores

Registros Involucrados

• OPTION (En el manual aparece como OPTION_REG)• INTCON

• Procedimiento– Se debe configurar la operación del módulo en el registro

Aplicaciones de µC

– Se debe configurar la operación del módulo en el registro OPTION

– Se debe configurar el registro INTCON para habilitar las interrupciones

Page 17: Aplicaciones de Microcontroladores

Registro OPTION

RBPU INTEDG T0CK T0SE PSA PS2 PS1 PS0

Page 18: Aplicaciones de Microcontroladores

Registro OPTION

RBPU INTEDG T0CK T0SE PSA PS2 PS1 PS0

Bit que selecciona la fuente de clock

1 Transición el pin TOCK1

0 Clock interno

Page 19: Aplicaciones de Microcontroladores

Registro OPTION

RBPU INTEDG T0CK T0SE PSA PS2 PS1 PS0

Bit que selecciona el canto del clock

1 Incremento del clock con canto de bajada en el pin T0CK1

0 Incremento del clock con canto de subida en el pin T0CK1

Page 20: Aplicaciones de Microcontroladores

Registro OPTION

RBPU INTEDG T0CK T0SE PSA PS2 PS1 PS0

Bits de asignación del preescalar

1 Preescalar asignado al WDT (Watch Dog Timer)

0 Preescalar asignado al Timer0

Page 21: Aplicaciones de Microcontroladores

Registro OPTION

RBPU INTEDG T0CK T0SE PSA PS2 PS1 PS0

Bits que seleccionan el preescalar

000 1:2000 1:2

001 1:4

010 1:8

011 1:16

100 1:32

101 1:64

110 1:128

111 1:256

Page 22: Aplicaciones de Microcontroladores

Registro INTCON

GIE PEIE TMR0IE INTIE RBIE TMR0IF INTIF RBIF

Page 23: Aplicaciones de Microcontroladores

Registro INTCON

GIE PEIE TMR0IE INTIE RBIE TMR0IF INTIF RBIF

Habilita todas las interrupcionesHabilita todas las interrupciones

Page 24: Aplicaciones de Microcontroladores

Registro INTCON

GIE PEIE TMR0IE INTIE RBIE TMR0IF INTIF RBIF

Habilita la interrupción por el TMR0

Page 25: Aplicaciones de Microcontroladores

Registro INTCON

GIE PEIE TMR0IE INTIE RBIE TMR0IF INTIF RBIF

Flag de interrupción del TMR0

Page 26: Aplicaciones de Microcontroladores

Esquema del Timer 0 (simplificado)

MUX

MUX

MUX

Pre-escalar

osc

T0CS

PSA

T0SE

PIN RA4/T0CK

TMR0 Reg

Watchdog Timer PSA y T0CS son

bits de control

Aplicaciones de µC

MUX

PSA

PSA

WDT Enable bit

WDT time-out

bits de control

RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0

Page 27: Aplicaciones de Microcontroladores

Esquema del Timer 0 (simplificado)

MUX

MUX

MUX

Pre-escalar

osc

0

0

T0SE

PIN RA4/T0CK

TMR0 Reg

Watchdog Timer PSA y T0CS son

bits de control

Aplicaciones de µC

MUX

0

0

WDT Enable bit

WDT time-out

bits de control

RBPU INTEDG 0 T0SE 0 PS2 PS1 PS0

Page 28: Aplicaciones de Microcontroladores

Esquema del Timer 0 (simplificado)

MUX

MUX

MUX

Pre-escalar

osc

0

0

T0SE

PIN RA4/T0CK

TMR0 Reg

Watchdog Timer PSA y T0CS son

bits de control

Aplicaciones de µC

MUX

0

0

WDT Enable bit

WDT time-out

bits de control

RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0

Page 29: Aplicaciones de Microcontroladores

Esquema del Timer 0 (simplificado)

MUX

MUX

MUX

Pre-escalar

osc

0

0

T0SE

PIN RA4/T0CK

TMR0 Reg

Aplicaciones de µC

0

RBPU INTEDG 0 T0SE 0 PS2 PS1 PS0

Page 30: Aplicaciones de Microcontroladores

Esquema del Timer 0 (simplificado)

MUX

MUX

MUX

Pre-escalar

osc

0

0

T0SE

PIN RA4/T0CK

TMR0 Reg

Aplicaciones de µC

0

RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0

Page 31: Aplicaciones de Microcontroladores

Esquema del Timer 0 (simplificado)

MUX

MUX

MUX

1:2

osc

0

0

T0SE

PIN RA4/T0CK

TMR0 Reg

Aplicaciones de µC

0

RBPU INTEDG T0CS T0SE PSA 0 0 0

Page 32: Aplicaciones de Microcontroladores

Esquema del Timer 0 (simplificado)

MUX

MUX

MUX

1:4

osc

0

0

T0SE

PIN RA4/T0CK

TMR0 Reg

Aplicaciones de µC

0

RBPU INTEDG T0CS T0SE PSA 0 0 1

Page 33: Aplicaciones de Microcontroladores

Esquema del Timer 0 (simplificado)

MUX

MUX

MUX

1:8

osc

0

0

T0SE

PIN RA4/T0CK

TMR0 Reg

Aplicaciones de µC

0

RBPU INTEDG T0CS T0SE PSA 0 1 0

Page 34: Aplicaciones de Microcontroladores

Esquema del Timer 0 (simplificado)

MUX

MUX

MUX

1:16

osc

0

0

T0SE

PIN RA4/T0CK

TMR0 Reg

Aplicaciones de µC

0

RBPU INTEDG T0CS T0SE PSA 0 1 1

Page 35: Aplicaciones de Microcontroladores

Esquema del Timer 0 (simplificado)

MUX

MUX

MUX

1:32

osc

0

0

T0SE

PIN RA4/T0CK

TMR0 Reg

Aplicaciones de µC

0

RBPU INTEDG T0CS T0SE PSA 1 0 0

Page 36: Aplicaciones de Microcontroladores

Esquema del Timer 0 (simplificado)

MUX

MUX

MUX

1:64

osc

0

0

T0SE

PIN RA4/T0CK

TMR0 Reg

Aplicaciones de µC

0

RBPU INTEDG T0CS T0SE PSA 1 0 1

Page 37: Aplicaciones de Microcontroladores

Esquema del Timer 0 (simplificado)

MUX

MUX

MUX

1:128

osc

0

0

T0SE

PIN RA4/T0CK

TMR0 Reg

Aplicaciones de µC

0

RBPU INTEDG T0CS T0SE PSA 1 1 0

Page 38: Aplicaciones de Microcontroladores

Esquema del Timer 0 (simplificado)

MUX

MUX

MUX

1:256

osc

0

0

T0SE

PIN RA4/T0CK

TMR0 Reg

Aplicaciones de µC

0

RBPU INTEDG T0CS T0SE PSA 1 1 1

Page 39: Aplicaciones de Microcontroladores

Interrupciones

• Es el mecanismo más eficiente para atender los periféricos.

• Permite generar temporización más precisa.

• Las fuentes pueden ser distintas

Aplicaciones de µC

– Los Clock internos

– Señales externas tales como INT u otros bits definidos

– Periféricos internos de uC tales como la UART o el ADC o el PWM

Page 40: Aplicaciones de Microcontroladores

Como Funcionan las interrupciones

• Cuando un periférico requiere atención, a través de una señal losolicita a la CPU.

• Inmediatamente, el control del programa salta una rutina llamadaRSI o Rutina de servicio de interrupción.

Aplicaciones de µC

• Esta función atiende al periférico y luego retorna al programaprincipal.

Page 41: Aplicaciones de Microcontroladores

Funcionamiento General

Rutina de Servicio de Interrupción

Aplicaciones de µC

Programa Principal

interrupción

Page 42: Aplicaciones de Microcontroladores

Funcionamiento General

Rutina de Servicio de Interrupción

Aplicaciones de µC

Programa Principal

interrupción

Page 43: Aplicaciones de Microcontroladores

Funcionamiento General

Rutina de Servicio de Interrupción

Aplicaciones de µC

Programa Principal

interrupción

Page 44: Aplicaciones de Microcontroladores

Funcionamiento General

Rutina de Servicio de Interrupción

Aplicaciones de µC

Programa Principal

interrupción

Page 45: Aplicaciones de Microcontroladores

Funcionamiento General

Rutina de Servicio de Interrupción

Aplicaciones de µC

Programa Principal

interrupción

Periférico

Page 46: Aplicaciones de Microcontroladores

Funcionamiento General

Rutina de Servicio de Interrupción

Aplicaciones de µC

Programa Principal

interrupción

Periférico

Page 47: Aplicaciones de Microcontroladores

Funcionamiento General

Rutina de Servicio de Interrupción

Aplicaciones de µC

Programa Principal

interrupción

Periférico

Page 48: Aplicaciones de Microcontroladores

Funcionamiento General

Rutina de Servicio de Interrupción

Aplicaciones de µC

Programa Principal

interrupción

Periférico

Page 49: Aplicaciones de Microcontroladores

Funcionamiento General

Rutina de Servicio de Interrupción

Aplicaciones de µC

Programa Principal

interrupción

Periférico

Page 50: Aplicaciones de Microcontroladores

Funcionamiento General

Rutina de Servicio de Interrupción

Aplicaciones de µC

Programa Principal

interrupción

Periférico

Page 51: Aplicaciones de Microcontroladores

Funcionamiento General

Rutina de Servicio de Interrupción

Aplicaciones de µC

Programa Principal

interrupción

Periférico

Page 52: Aplicaciones de Microcontroladores

En el uC PIC con CC5X

• Se configura el trabajo con interrupciones en los registros OPTION e INTCON

• Se incluye un archivo de cabecera int16cxx.h proporcionado por el que desarrolló el compilador

• La RSI queda en la dirección 0x0004

Aplicaciones de µC

• Cada vez que se interrumpe se setea un FLAGS de acuerdo a la fuente de interrupción

– INTF : Indica la interrupción por INT– T0IF : Indica la interrupción por Overflow de TMR0– RBIF : Int. Por PORTB– ADIF: Int. Del ADC– RCIF : Int. De Rx UART– TXIF : Int. De tx UART

Page 53: Aplicaciones de Microcontroladores

Se implementa una RSI bajo el formato indicado a continuación

#include "int16CXX.H"#pragma origin 4

interrupt rsi( void){

int_save_registers // W, STATUS (and PCLATH)

Aplicaciones de µC

// En esta zona se debe preguntar por// el flag correspondiente

int_restore_registers // W, STATUS (and PCLATH)}

Page 54: Aplicaciones de Microcontroladores

Se implementa una RSI bajo el formato indicado a continuación

#include "int16CXX.H"#pragma origin 4

interrupt rsi( void){

int_save_registers // W, STATUS (and PCLATH)

if ( T0IF) { /* TMR0 overflow interrupt */

Aplicaciones de µC

T0IF = 0; /* reset flag */}

if(INTF) {

INTF=0; }

if(ADIF){

ADIF=0;}

int_restore_registers // W, STATUS (and PCLATH)}

Page 55: Aplicaciones de Microcontroladores

Esquema de programa

#include "int16CXX.H"

#pragma origin 4

interrupt rsi(void)

{

// codigo

}

Aplicaciones de µC

void main()

{

// Config. Puertos I-O

// Config. Timer

// Config. Interrupciones

while(1) // ciclo for ever

{

}

}

Page 56: Aplicaciones de Microcontroladores

Aplicación con el TMR0

#include "int16CXX.H"

#pragma origin 4

interrupt rsi( void){

int_save_registers // W, STATUS (and PCLATH)

Aplicaciones de µC

if ( T0IF) {/* TMR0 overflow interrupt */TMR0 = 128;

if(PORTB.0==0) PORTB.0=1;else PORTB.0=0;

T0IF = 0; /* reset flag */}

int_restore_registers // W, STATUS (and PCLATH)}

Page 57: Aplicaciones de Microcontroladores

void main(){//TRISB.0=0;PORTB.0=1;

//Programación del TMR0OPTION.5=0; OPTION.3=0; // PSA=0;

Aplicaciones de µC

OPTION.3=0; // PSA=0;OPTION.2=0; // PS2=0;OPTION.1=0; // PS1=0;OPTION.0=0; // PS0=0;TMR0=128; // Carga inicial del Timer

INTCON.5=1; //TMR0IE=1;GIE=1; // INTCON.7=1;

while(1){}

}

Page 58: Aplicaciones de Microcontroladores

Timer 1

• El Timer1 es un módulo de Temp/cont de 16 bits que tiene 2 registros de lectura y escritura TMR1H y TMR1L.

• El registro formado por ambos TMR1H:TMR1L se incrementa desde0000h a FFFFh.

• La Interrupción TMR1 si es habilitada es generada por el overflow el cual

Aplicaciones de µC

• La Interrupción TMR1 si es habilitada es generada por el overflow el cuales capturado por el flag TMR1IF.

• Esta puede ser habilitada o deshabilitada por el TMR1IE.

• El modulo trabaja como:– Timer– Counter

– El modo queda determinado por el bit que selecciona el clock

Page 59: Aplicaciones de Microcontroladores

• En modo Timer, Timer1 se incrementa cada ciclo de instrucción.

• En modo counter, el incremento es en cada canto de subida de una entrada de clock externa

Aplicaciones de µC

de una entrada de clock externa

• El Timer1 se habilita/deshabilita mediante el bit TMR1ON.

• También tiene una entrada de reset

Page 60: Aplicaciones de Microcontroladores

Diagrama Timer1 (Simplificado)

TMR1H TMR1L

TMR1ON

T1SYNC

TMR1

RC0

Fosc/4Clock ext

Pre-scaler

T1CKPS1:T1CKPS0TMR1CS

RC0

RC1

T1OSCEN

Page 61: Aplicaciones de Microcontroladores

Registros Involucrados

T1CKPS1 T1CKPS0 T1OSEN T1SYNC TMR1CS TMR1ON

T1CON

Page 62: Aplicaciones de Microcontroladores

T1CKPS1 T1CKPS0 T1OSEN T1SYNC TMR1CS TMR1ON

T1CON

1:1 0 0

1:2 0 1

1:3 1 0

1:4 1 1

Preescalar

Page 63: Aplicaciones de Microcontroladores

T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON

T1CON

Selecciona fuente de clock externo

Page 64: Aplicaciones de Microcontroladores

T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON

T1CON

Page 65: Aplicaciones de Microcontroladores

T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON

T1CON

Selección de la fuente de clock

Page 66: Aplicaciones de Microcontroladores

TMR1H TMR1L

TMR1ON

T1SYNC

TMR1

RC0

Fosc/4Clock ext

Pre-scaler

T1CKPS1:T1CKPS0TMR1CS

RC0

RC1

T1OSCEN

Page 67: Aplicaciones de Microcontroladores

TMR1H TMR1L

TMR1ON

T1SYNC

TMR1

RC0

Fosc/4Clock ext

Pre-scaler

T1CKPS1:T1CKPS0TMR1CS

RC0

RC1

T1OSCEN

T1CKPS1 T1CKPS0 T1OSEN T1SYNC TMR1CS TMR1ON

Page 68: Aplicaciones de Microcontroladores

TMR1H TMR1L

TMR1ON

T1SYNC

TMR1

RC0

Fosc/4Clock ext

Pre-scaler

T1CKPS1:T1CKPS0TMR1CS

RC0

RC1

T1OSCEN

T1CKPS1 T1CKPS0 T1OSEN T1SYNC TMR1CS TMR1ON

Page 69: Aplicaciones de Microcontroladores

TMR1H TMR1L

TMR1ON

T1SYNC

TMR1

RC0

Fosc/4Clock ext

Pre-scaler

T1CKPS1:T1CKPS0TMR1CS

RC0

RC1

T1OSCEN

T1CKPS1 T1CKPS0 T1OSEN T1SYNC TMR1CS TMR1ON

Page 70: Aplicaciones de Microcontroladores

TMR1H TMR1L

TMR1ON

T1SYNC

TMR1

RC0

Fosc/4Clock ext

Pre-scaler

T1CKPS1:T1CKPS0TMR1CS

RC0

RC1

T1OSCEN

T1CKPS1 T1CKPS0 T1OSEN 0 0 TMR1ON

Page 71: Aplicaciones de Microcontroladores

TMR1H TMR1L

TMR1ON

0

TMR1

RC0

Fosc/4Clock ext

Pre-scaler

T1CKPS1:T1CKPS00

RC0

RC1

T1OSCEN

T1CKPS1 T1CKPS0 T1OSEN 0 0 TMR1ON

Page 72: Aplicaciones de Microcontroladores

TMR1H TMR1L

TMR1ON

0

TMR1

RC0

Fosc/4Clock ext

Pre-scaler

T1CKPS1:T1CKPS00

RC0

RC1

T1OSCEN

T1CKPS1 T1CKPS0 T1OSEN 0 0 TMR1ON

Page 73: Aplicaciones de Microcontroladores

TMR1H TMR1L

TMR1ON

0

TMR1

RC0

Fosc/4Clock ext

Pre-scaler

T1CKPS1:T1CKPS00

RC0

RC1

T1OSCEN

T1CKPS1 T1CKPS0 T1OSEN 0 0 TMR1ON

Page 74: Aplicaciones de Microcontroladores

TMR1H TMR1L

TMR1ON

0

TMR1

RC0

Fosc/4Clock ext

1:1

0 00

RC0

RC1

T1OSCEN

0 0 T1OSEN 0 0 TMR1ON

Page 75: Aplicaciones de Microcontroladores

TMR1H TMR1L

TMR1ON

0

TMR1

RC0

Fosc/4Clock ext

1:1

0 00

RC0

RC1

T1OSCEN

0 0 T1OSEN 0 0 TMR1ON

Page 76: Aplicaciones de Microcontroladores

TMR1H TMR1L

TMR1ON

0

TMR1

RC0

Fosc/4Clock ext

1:1

0 00

RC0

RC1

T1OSCEN

0 0 T1OSEN 0 0 1

Page 77: Aplicaciones de Microcontroladores

TMR1H TMR1L

1

0

TMR1

RC0

Fosc/4Clock ext

1:1

0 00

RC0

RC1

T1OSCEN

0 0 T1OSEN 0 0 1

Page 78: Aplicaciones de Microcontroladores

TMR1H TMR1L

1

0

TMR1

RC0

Fosc/4Clock ext

1:1

0 00

RC0

RC1

T1OSCEN

Page 79: Aplicaciones de Microcontroladores

TMR1H TMR1L

1

0

TMR1

RC0

Fosc/4Clock ext

1:1

0 00

RC0

RC1

T1OSCEN

Page 80: Aplicaciones de Microcontroladores

TMR1H TMR1L

1

0

TMR1

RC0

Fosc/4Clock ext

1:1

0 00

RC0

RC1

T1OSCEN

Page 81: Aplicaciones de Microcontroladores

TMR1H TMR1L

1

0

TMR1

RC0

0x0000

Fosc/4Clock ext

1:1

0 00

RC0

RC1

T1OSCEN

Page 82: Aplicaciones de Microcontroladores

TMR1H TMR1L

1

0

TMR1

RC0

0x0001

Fosc/4Clock ext

1:1

0 00

RC0

RC1

T1OSCEN

Page 83: Aplicaciones de Microcontroladores

TMR1H TMR1L

1

0

TMR1

RC0

0xFFFD

Fosc/4Clock ext

1:1

0 00

RC0

RC1

T1OSCEN

Page 84: Aplicaciones de Microcontroladores

TMR1H TMR1L

1

0

TMR1

RC0

0xFFFE

Fosc/4Clock ext

1:1

0 00

RC0

RC1

T1OSCEN

Page 85: Aplicaciones de Microcontroladores

TMR1H TMR1L

1

0

TMR1

RC0

0xFFFF

Fosc/4Clock ext

1:1

0 00

RC0

RC1

T1OSCEN

Page 86: Aplicaciones de Microcontroladores

TMR1H TMR1L

1

0

TMR1

RC0

0x0000

Fosc/4Clock ext

1:1

0 00

RC0

RC1

T1OSCEN

Page 87: Aplicaciones de Microcontroladores

TMR1H TMR1L

1

0

TMR1

RC0

0x0000

TMR1IF=1

Fosc/4Clock ext

1:1

0 00

RC0

RC1

T1OSCEN