Escolar Documentos
Profissional Documentos
Cultura Documentos
Informática
Paulo Cardoso
Grupo de Sistemas Embebidos
Departamento de Eletrónica Industrial
Escola de Engenharia
Universidade do Minho
Sumário
l Definições
l Rotinas de atraso
l Temporizadores
l Configuração
l Operação
Definições
Bit 7 6 5 4 3 2 1 0
Reset 0 0 0 0 0 0 0 0
l O7 registo
Unused chama-se
Read CLKSEL
= 0b; Write = don’t care
6:4 Reserved Read = 0b; Must Write 000b.
l Trata-se
3 OUTCLK de um
Crossbar Clock registo
Out Select. de 8 bits
If the SYSCLK signal is enabled on the Crossbar, this bit selects between outputting
Bit 7 6 5 4 3 2 1 0
Reset 0 0 0 0 0 0 0 0
l Tem
7 dois Read
Unused campos: CLKSL
= 0b; Write = don’t care e OUTCLK
6:4 Reserved Read = 0b; Must Write 000b.
l3 Do bit 0Crossbar
OUTCLK ao bit 2Outé Select.
Clock definida a configuração do campo CLKSL
If the SYSCLK signal is enabled on the Crossbar, this bit selects between outputting
l Como são 3 bits a configuração pode ser 000, 001...111
SYSCLK and SYSCLK synchronized with the Port I/O pins.
0: Enabling the Crossbar SYSCLK signal outputs SYSCLK.
l 1:O manual
Enabling diz oSYSCLK
the Crossbar que cada configuração
signal outputs representa
SYSCLK synchronized with the
Port I/O.
l
2:0
No bit 3 é definida a configuração do OUTCLK
CLKSL[2:0] System Clock Source Select Bits.
l No controlo de processos
l Muitas vezes é necessário
l Contar tempo
l Incrementalmente
l Contar eventos
l Ex. quantos produtos passaram no tapete rolante
Temporizadores
rotinas de atraso
for (x=0;x<value;x++);
l Na invocação
delay(100);
l Da aplicação
l Se houver uma interrupção: a execução da rotina para!
l NÃO PODEMOS CONTROLAR!!!
l Temporizadores do C8051F388
l Seis temporizadores/contadores
l Dois são compatíveis com o 8051 original: Timer0, Timer1
l Timers/counters de 16 bits
l Vamos apenas dedicar atenção a estes!
Temporizadores
temporizadores
l Configuração
l Para usar os timers temos de configurar
l 1) O relógio do sistema
l Aqui não vamos configurar, vamos perceber qual o relógio do
sistema
l 2) Fonte de relógio
l Um timer precisa de ser “alimentado” por um clock
l 3) Modo de funcionamento
l Pode funcionar como timer ascendente/descendente ou
contador
Temporizadores
configuração
l 1) O relógio do sistema
l ”Alimenta” o clock todo hardware
l Quando o micro arranca
l Por defeito usa um oscilador interno de alta frequência
l Calibrado para 48MHz por defeito
l De acordo com o registo CLKSEL
l Por defeito o oscilador é dividido por 4 à 12Mhz
l E a frequência final é dada pelo registo OSCICN
l De acordo com o registo OSCICN
l Por defeito esta frequência é dividida ainda por 8
l Dando uma frequência final de 1,5MHz
C8051F388/9/A/B
Temporizadores
configuração
SFR Definition 19.1. CLKSEL: Clock Select
Bit 7 6 5 4 3 2 1 0
l 1) O relógio do sistema
Name Reserved OUTCLK CLKSL[2:0]
C8051F388/9/A/B
Type R R/W R/W R/W
l Registo CLKSEL
Reset 0 0 0 0 0 0 0 0
configuração
Bit 7 6 5 4 3 2 1 0
l 1) O relógio do sistema
Reset 1 1 0
C8051F388/9/A/B
l Registo
Bit
7
OSCICN
Name
IOSCEN Internal H-F Oscillator Enable Bit.
Function
Name
5 IOSCEN
SUSPEND IFRDY Oscillator
Internal SUSPEND Suspend Enable Bit. IFCN[1:0]
Temporizadores
Reset 0 0 0 0 0 0 0 0
configuração Bit
7
Name
T3MH Timer 3 High Byte Clock Select.
Function
Selects the clock supplied to the Timer 3 high byte (split 8-bit timer mode only).
0: Timer 3 high byte uses the clock defined by the T3XCLK bit in TMR3CN.
l 3) Modo de funcionamento
l Counter
l Timer
l Modo 0: timer de 13 bits
l Modo 1: timer de 16 bits
l Modo 2: timer de 8 bits com auto reload
l O registo de contagem é TLx. Quando transborda este é
automaticamente carregado com o valor de THx
l Modo 3: Dois timers de 8 bits (gerido pelo timer 0)
Temporizadores
configuração
l 3) Modo de funcionamento
C8051F388/9/A/B
l Registo TMOD
SFR Definition 25.4. TMOD: Timer Mode
Timer1 Timer0
Bit 7 6 5 4 3 2 1 0
Reset 0 0 0 0 0 0 0 0
l C/Tx 0: Timer: Timer 1 incremented by clock defined by T1M bit in register CKCON.
1: Counter: Timer 1 incremented by high-to-low transitions on external pin (T1).
l C=1 à5:4
Contador.
T1M[1:0]
Conta as transições descendentes do pino
Timer 1 Mode Select.
These bits select the Timer 1 operation mode.
externo Tx 00: Mode 0, 13-bit Counter/Timer
01: Mode 1, 16-bit Counter/Timer
l Serve por exemplo para contar entradas num estacionamento
10: Mode 2, 8-bit Counter/Timer with Auto-Reload
11: Mode 3, Timer 1 Inactive
3 GATE0 Timer 0 Gate Control.
0: Timer 0 enabled when TR0 = 1 irrespective of INT0 logic level.
Temporizadores
configuração
l 3) Modo de funcionamento
C8051F388/9/A/B
l Registo TMOD
SFR Definition 25.4. TMOD: Timer Mode
Timer1 Timer0
Bit 7 6 5 4 3 2 1 0
Reset 0 0 0 0 0 0 0 0
l Modo 0: timer de 13 bits 0: Timer 1 enabled when TR1 = 1 irrespective of INT1 logic level.
1: Timer 1 enabled only when TR1 = 1 AND INT1 is active as defined by bit IN1PL in
l Dois timers
Modo5:43: T1M[1:0] de 8 bits (gerido pelo timer 0)
Timer 1 Mode Select.
These bits select the Timer 1 operation mode.
00: Mode 0, 13-bit Counter/Timer
01: Mode 1, 16-bit Counter/Timer
10: Mode 2, 8-bit Counter/Timer with Auto-Reload
11: Mode 3, Timer 1 Inactive
3 GATE0 Timer 0 Gate Control.
0: Timer 0 enabled when TR0 = 1 irrespective of INT0 logic level.
Temporizadores
operação
l Operação
l Valor da contagem
l Ativação da contagem
l Deteção do fim da contagem
l Valor da contagem
l Registos THx e TLx (16 bits)
l São os registos de contagem
l Que devem ser “preenchidos” antes da contagem ser iniciada
l Modo 0 (modo 13 bits)
l Apenas os 5 bits menos significativos de THx são considerados
l Modo 1 (modo 16 bits)
l Os 16 bits são considerados (THx,TLx)
l Modo 2 (modo 8 bits)
l No registo TLx é colocado o valor da contagem
l Geralmente igual a THx
l No registo THx é colocado o valor de recarga
l Quando se dá o transbordo
TLx ß THx
Temporizadores
operação
l Ativação da contagem
l Registo TCON
C8051F388/9/A/B
l Bit TRx
Reset 0 0 0 0 0 0 0 0
Reset 0 0 0 0 0 0 0 0
l Problema 1
l Criar uma onda quadrada de 500Hz em P2.0
l Análise
l F= 500Hz à T = 2ms (período da onda)
l Como usar o timer?
l Configura-lo de forma a que
l Conte x ciclos e execute P2.0=0
l Conte novamente x ciclos e execute P2.0=1
l Se o período da onda é 2ms, então
l O tempo a alto é 1ms e o tempo a baixo é tb 1ms
l Logo, x=1000us
l Temos de criar um contador que conte 1000us
Temporizadores
configuração
l Fonte de relógio
l Vamos alterar a frequência do micro
l 1,5MhZ, 24Mhz (Registo CLKSEL)
l Refazendo as contas do slide 16!
l Do registo CKCON ficamos a saber
l Se usar o system clock (TxM=1)
l f=24MhZ à T = 0,041(6)us
l Se usar o “desmultiplicador” (TxM=0)
l SCA=00 à f=24/12= 2 MHZ à T = 0,5us
l SCA=01 à f=24/4= 6 MHZ à T = 0,1(6)us
l SCA=10 à f=24/48= 0,5 MHZ à T = 2us
l A cada período (T) dá-se um incremento na contagem
Temporizadores
exercícios
l Análise - timer
l Sabemos que
l SCA=10 à T = 2us
l Temos então ciclicamente
l Contar 1000/2=500 vezes e fazer o toggle de P2.0
l Seria interessante usar o timer no modo 2 (autoreload)
l Desta forma sempre que transbordava carregava novamente o
valor desejado
l Só que o modo 2 usa um registo de 8 bits para reload
l Só suporta valores 256 valores
l A alternativa é usar o timer no modo 16 bits e fazer o
autoreload manualmente
l Nota: estamos a usar apenas o Timer0 ou Timer1
l O micro tem outros timers que suportam autoreload de 16 bits
Temporizadores
exercícios
l Especificação – pseudo-código
CLKSEL ß 0x02
SCA ß modo2
Timer0 ß modo1
reload ß -500
TH0/TL0 ß reload
[Iniciar timer0]
P2.0 ß 0
Enquanto()
Enquanto (timer0 não transborda)
[fica aqui]
[complementar P2.0]
TH0/TL0 ß reload
Temporizadores
exercícios
l Implementação
Temporizadores
exercícios
#include <c8051f380.h>
l Implementação
l Comprovar com o osciloscópio
Temporizadores
exercícios
l Problema 2
l Criar uma onda quadrada de 25kHZ em P2.0
l Análise
l Usar um modo diferente do timer
Temporizadores
exercícios
l Problema 3
l Piscar um led a cada segundo em P2.0
l Análise
1s =106us
Contagens do timer
No máximo conta 65536
Cada pulso (tick) corresponde a 2us, logo 65536 ticks=131072us
Para perfazer 1s terá de “dar a volta” 106/131072=7,63 vezes
Assim, terá de contar 7x, de 0 a 65535
7x 65536*2 = 917504us
E ainda sobram:106us – 917504us = 82496 us
Que corresponde a 82496/2=41248 ticks
Dá um valor de reload final de: 65536 – 41248 = 24288 (0x5EE0)
Temporizadores
Obrigado