Colapsar columna

Menu Usuario -

Hola, Visitante
avatar


Mas Activos -

nocturno
Mensajes: 1985
Meta
Mensajes: 276
djfreeman
Mensajes: 272
spiderman
Mensajes: 257
HJ.0x00
Mensajes: 224

Autor Tema: Datasheet en español: PIC12F629/675 (3)  (Leído 7974 veces)

Desconectado xocas

  • Administrator
  • Colaborador MicroPIC
  • *****
  • Mensajes: 73
Datasheet en español: PIC12F629/675 (3)
« en: Mayo 01, 2009, 13:02 »
MÓDULO TIMER0
El módulo temporizador/contador Timer0 tiene las siguientes características:
• temporizador/contador de 8 bits
• lectura y escritura
• prescaler de 8 bits programable
• selección de reloj interno o externo
• interrupción por desbordamiento (de FFh a 00h)
• selección de flanco (edge) para reloj externo.

Diagrama de bloques del módulo de Timer0 y el prescaler compartido con el WDT.



Funcionamiento del Timer0
El Timer0 puede funcionar de dos formas: como contador de pulsos externos o como temporizador para calcular intervalos de tiempo. En el caso de que dicha señal provenga del reloj interno, el Timer0 se utiliza para generar interrupciones periódicas a través de una cuenta programada. En este modo podemos temporizar eventos.
En el caso de que dicha señal sea de una fuente externa, es especialmente útil para contar el número de pulsos que dicha señal genera en el tiempo ya que cada pulso de dicha señal incrementa el TMR0.

El modo Temporizador de Timer0 se selecciona desactivando el bit de T0CS (OPTION_REG <5>). En este modo, el módulo de Timer0 se incrementa con cada ciclo de instrucción (o cada x ciclos dependiendo del  prescaler). Si TMR0 está activado, el incremento se inhibe para los dos ciclos de instrucción siguientes. El usuario puede solucionar esto escribiendo un valor ajustado en el registro de TMR0.
El modo Contador se establece activando el bit de T0CS (OPTION_REG <5>). En este modo, incrementará el módulo de Timer0 ya sea en un flanco ascendente (rising edge) o un flanco descendente (falling edge) del pin GP2/T0CKI. La transición está determinada por el bit de control del flanco de origen (T0SE) - (OPTION_REG <4>). Limpiando el bit T0SE se selecciona el flanco ascendente, mientras que al ponerlo en alto se selecciona un flanco descendente.
En ambos casos al desbordarse (pasar de 0xFF a 0×0) el registro TMR0, la bandera de interrupción del Timer0 (bit T0IF del registro INTCON) se pone a 1.
Nota: el modo Contador tiene requisitos especiales para el reloj externo. Información adicional en el 'PIC Mid-Range Reference Manual (DS33023)' - http://ww1.microchip.com/downloads/en/DeviceDoc/33023a.pdf

Interrupción en Timer0
Una interrupción del Timer0 se genera cuando el registro del contador/temporizador de TMR0 se desborda (de FFh a 00h). Este desbordamiento activa el bit T0IF. La interrupción puede ser enmascarada borrando el bit de T0IE (INTCON <5>). El bit de T0IF (INTCON <2>) debe desactivarse por software por la rutina de interrupción del módulo Timer0 antes de que se vuelva a activar esta interrupción. La interrupción de Timer0 no puede despertar al PIC del modo SLEEP ya el temporizador está apagado durante este modo.

« última modificación: Mayo 21, 2009, 17:22 por xocas »

Desconectado xocas

  • Administrator
  • Colaborador MicroPIC
  • *****
  • Mensajes: 73
Re: Datasheet en español: PIC12F629/675 (3)
« Respuesta #1 en: Mayo 01, 2009, 13:04 »
Usando Timer0 con un reloj externo
Cuando no se utiliza prescaler, la entrada de reloj externo es la misma que la salida del prescaler. La señal conectada a TOCKI es muestreada durante los ciclos Q2 y Q4 del reloj interno, por ello es necesario que permanezca en alto al menos por 2 Tosc más un pequeño retardo de 20nseg y lo mismo en bajo. (es decir, señales demasiado rápidas no se detectarán).

Nota: Los registros ANSEL(9Fh) y CMCON(19h) deben ser inicializados para configurar un canal analógico como una entrada digital. Los pines configurados como entradas analógicas son leídos como '0'. El registro ANSEL está definido para el PIC12F675.

Bits implicados en Option Register:


bit 6 INTEDG: Bit de selección de interrupción por flanco
  1 = Interrupción por flanco ascendente (rising edge) en pin GP2/INT
  0 = Interrupción por flanco descendente (falling edge) en pin GP2/INT
bit 5 T0CS: TMR0 Bit de selección de origen de reloj
  1 = Transición en pin GP2/T0CKI
  0 = Ciclo de instrucción interna (CLKOUT)
bit 4 T0SE: TMR0 Bit de selección de origen del flanco
  1 = Se incrementa en una transición alto-a-bajo en pin GP2/T0CKI
  0 = Se incrementa en una transición bajo-a-alto en pin GP2/T0CKI
bit 3 PSA: Bit de asignación del prescaler
  1 = Prescaler está asignado al WDT
  0 = Prescaler está asignado al módulo TIMER0
bit 2-0 PS2:PS0: Bits de selección Ratio-Prescaler


Prescaler
Un contador de  8 bits está disponible como prescaler para el módulo Timer0, o como un postscaler para el Watchdog Timer. Para simplificar, se hará referencia a este contador como “prescaler” . La asignación de prescaler está controlada en el software por el bit de control PSA (OPTION_REG <3>). Un 0 en el bit PSA asignará el prescaler a Timer0. Los valores de prescaler son seleccionables a través de los bits de PS2:PS0 (OPTION_REG <2:0>).
El prescaler no se puede leer o escribir. Cuando se asigna al módulo Timer0, todas las instrucciones que  escriban en el registro TMR0 (por ejemplo, CLRF 1 MOVWF 1, BSF 1, x.... etc.) borrarán el prescaler. Cuando está asignado a WDT, una instrucción de CLRWDT borrará el prescaler junto con el Watchdog Timer.

Cambiando la asignación del prescaler
La asignación del prescaler está totalmente bajo el control del software (es decir, se puede cambiar “sobre la marcha” durante la ejecución del programa).
Nota: Para evitar un RESET imprevisto, la siguiente secuencia de instrucciones (ejemplo 4 - 1) se debe ejecutar al cambiar la asignación prescaler de Timer0 a WDT. Para cambiar el prescaler de WDT al módulo TMR0, usa la secuencia del ejemplo 4.2. esta precaución se debe tomar siempre que WDT esté deshabilitado.





para más información:
http://micropic.wordpress.com/2007/06/24/temporizador-timer-0/
un ejemplo en Mikrobasic (a pesar de ser para otro PIC está muy bien documentado): http://www.jvmbots.com/viewtopic.php?t=188


Desconectado xocas

  • Administrator
  • Colaborador MicroPIC
  • *****
  • Mensajes: 73
Re: Datasheet en español: PIC12F629/675 (3)
« Respuesta #2 en: Mayo 01, 2009, 13:07 »
MÓDULO TIMER1 CON 'GATE CONTROL' (Entrada de Control)

El PIC12F629/675 dispone de un temporizador de 16 bits. El Timer1 tiene las siguientes características:
• temporizador/contador de 16 bits (TMR1H:TMR1L)
• lectura y escritura
• selección de reloj interno o externo
• opera en modo sincrónico o asíncrono
• interrupción por desbordamiento (de FFFFh a 0000h)
• Wake-up (despertar) por desbordamiento (modo asíncrono)
• entrada de habilitación opcional externa (/T1G)
• oscilador LP opcional
El Registro de Control de Timer1 (T1CON), mostrado en el registro 5-1, se utiliza para habilitar/deshabilitar y seleccionar las diversas características del módulo Timer1.

Diagrama de bloques básico del módulo Timer1:


Modos de operación del Timer1
Timer1 puede operar en uno de los tres modos:
• temporizador de 16 bits con prescaler
• contador sincrónico de 16 bits
• contador asíncrono de 16 bit
En el modo Temporizador, Timer1 se incrementa con cada ciclo de instrucción. En el modo Contador, Timer1 se incrementa en el flanco de subida de la entrada externa de reloj T1CKI. En suma, el reloj del modo Contador se puede sincronizar con el reloj del sistema microcontrolador o ejecutar asincrónicamente.
En los módulos de Contador y Temporizador, el reloj del temporizador/contador puede ser habilitado por la entrada /T1G. Si es necesario un oscilador reloj externo (y el microcontrolador está utilizando el INTOSC sin CLKOUT), Timer1 puede utilizar el oscilador LP como una fuente de reloj.
Nota: en el modo Contador, un flanco de bajada ha de ser registrado por el contador antes del primer incremento del flanco de subida

Interrupción Timer1
Los registros (TMR1H:TMR1L) de Timer1 se incrementan hasta FFFFh y vuelven a 0000h. Cuando el  Timer1 vuelve a 0, se habilita el bit de la bandera de interrupción (PIR1 <0>). Para habilitar la interrupción, se deben configurar estos bits:
• Timer1 bit de interrupción habilitada (PIE1 <0>)
• PEIE bit (INTCON <6>)
• GIE bit (INTCON <7>). La interrupción se borra desactivando la TMR1IF en la rutina de servicio de interrupción.
Nota: Los registros (TMR1H:TMR1L) y el bit TMR1IF deberían limpiarse antes de habilitar las interrupciones.

Prescaler Timer1
El Timer1 tiene cuatro opciones de prescaler permitiendo 1, 2, 4 u 8 divisiones del reloj de entrada. Los bits de T1CKPS (T1CON <5:4>) controlan el contador de prescale. El contador de prescale no se puede leer ni escribir directamente; sin embargo, el contador de prescaler está desactivado en una escritura en TMR1H o TMR1L.





bit 7:   Sin implementar, leído como 0
bit 6:   TMR1GE: bit de habilitación de Timer1 Gate
  si TMR1ON = 0 el bit se ignora
  si TMR1ON = 1
    1 = Timer1 está en ON si el pin /T1G está en estado bajo
    0 = Timer1 está en ON
bit 5-4: T1CKPS1:T1CKPS0: bits selección de la entrada de reloj Prescale para Timer1
  11 = 1:8 valor Prescale
  10 = 1:4 valor Prescale
  01 = 1:2 valor Prescale
  00 = 1:1 valor Prescale
bit 3:   T1OSCEN: bit de control para habilitar el Oscilador LP
  si  INTOSC sin CLKOUT está activo:
    1 = Oscilador LP habilitado como reloj de Timer1
    0 = Oscilador LP deshabilitado
  de lo contrario, el bit se ignora
bit 2: /T1SYNC: bit de control de sincronización de la entrada de reloj externa de Timer1
  TMR1CS = 1
    1 = No sincronizado
    0 = Sincronizado
  TMR1CS = 0 el bit se ignora. Timer1 usa el reloj interno
bit 1: TMR1CS: Selección de la fuente de reloj para Timer1
  1 = Reloj externo en pin T1OSO/T1CKI (en el flanco de subida)
  0 = Reloj interno (FOSC/4)
bit 0: TMR1ON: bit habilitación Timer1
  1 = Habilita Timer1
  0 = Detiene Timer1


Desconectado xocas

  • Administrator
  • Colaborador MicroPIC
  • *****
  • Mensajes: 73
Re: Datasheet en español: PIC12F629/675 (3)
« Respuesta #3 en: Mayo 01, 2009, 13:08 »
Timer1: Operación en Modo Contador Asíncrono
Si el bit de control /T1SYNC (T1CON <2>) está habilitado, la entrada de reloj externa no está sincronizada. El temporizador sigue un incremento asíncrono a la fase del reloj interno. El temporizador seguirá ejecutándose durante el modo SLEEP y puede generar una interrupción por desbordamiento, que despertará al procesador.
Nota: Los Registros ANSEL(9Fh) y CMCON(19h) se deben inicializar para configurar los canales analógicos como entradas digitales. Los pines configurados como entradas analógicas se leerán como 0.

Leyendo y Escribiendo Timer1 en Modo Contador Asíncrono
La lectura de TMR1H o TMR1L, mientras se ejecuta el temporizador desde un reloj asíncrono externo, asegura una lectura válida (tener cuidado con el hardware). Sin embargo, el usuario debe tener en cuenta que leer el temporizador de 16 bits en dos registros de 8 bits plantea algunos problemas, ya que se puede desbordar el temporizador entre las lecturas.
Para las escrituras, se recomienda que el usuario simplemente detenga el temporizador y escriba los valores deseados. Una contención de la escritura puede suceder en los registros del temporizador, mientras el registro está  incrementándose. Esto puede producir un valor impredecible en el registro del temporizador.
Nota:
Leer los valores de 16 bits requiere atención. Los ejemplos 12-2 y 12-3 en el 'PIC® Mid-Range MCU Family Reference Manual (DS33023)' muestran cómo leer y escribir el Timer1 cuando se ejecuta en modo asíncrono.

Oscilador Timer1
Un circuito oscilador de cristal está integrado entre los pines OSC1 (entrada) y OSC2 (salida). Se habilita activando el bit de control T1OSCEN (T1CON <3>). El oscilador es un oscilador de baja potencia nominal de hasta 37 kHz., que sigue ejecutándose durante el modo SLEEP. Un cristal 32 kHz. es lo deseado. La Tabla 9-2 del datasheet muestra la selección de condensadores para el oscilador Timer1.

El oscilador Timer1 se comparte con el oscilador LP. Por tanto, Timer1 puede utilizar este modo sólo cuando el reloj del sistema se deriva del oscilador interno. De la misma forma que en el caso del oscilador LP, el usuario debe proporcionar un retraso por software para garantizar la puesta en marcha adecuada del oscilador.

Mientras está habilitado, TRISIO4 y TRISIO5 están activados. GP4 y GP5 ‘se leen 0’ y TRISIO4 y TRISIO5 ‘1’.

Nota: el oscilador requiere un tiempo de puesta en marcha y estabilización antes de usarse. Así, T1OSCEN debe activarse y establecerse un retardo adecuado antes de habilitar Timer1.

Timer1 en Modo SLEEP
Timer1 solo puede funcionar en el modo SLEEP cuando trabaja en el modo de Contador Asíncrono. En este modo, una fuente externa de cristal o reloj puede utilizarse para incrementar el contador. Para configurar el temporizador para activar el dispositivo:
• Timer1 debe estar en ON (T1CON <0>)
• bit TMR1IE (PIE1 <0>) debe estar habilitado
• bit PEIE (INTCON <6>) debe estar habilitado
El dispositivo se despertará en un desbordamiento. Si el bit GIE (INTCON <7>) se activa, el dispositivo se despertará y saltará a la rutina de servicio de interrupción en un desbordamiento.



para más información:
http://micropic.wordpress.com/2007/06/24/temporizador-timer-1/



 

login