A seleção do modo de funcionamento é feita através de dois conjuntos de bits nos registradores TCCR1A e TCCR1B.
O primeiro conjunto são os 4 bits do WGM - Waveform Generation Mode, que afetam a sequência de contagem:
Os quatro bits permitem definir 16 modos (0 a 15). O modo 0 é o modo "normal", os modos 1, 2, 3, 10 e 11 são chamados de "PWM Phase Correct", os modos 4 e 12 são chamados de CTC (Clear Timer on Compare), os modos 5, 6, 7, 14 e 15 são chamados "Fast PWM", os mods 8 e 9 são chamados "PWM Phase and Frequency Correct". O modo 13 é reservado e não deve ser usado.
Modo WGM13 WGM12 WGM11 WGM10 Modo TOP 0 0 0 0 0 Normal 0xFFFF 1 0 0 0 1 PWM Phase Correct, 8 bits 0xFF 2 0 0 1 0 PWM Phase Correct, 9 bits 0x1FF 3 0 0 1 1 PWM Phase Correct, 10 bits 0x3FF 4 0 1 0 0 CTC OCR1A 5 0 1 0 1 Fast PWM, 8 bits 0xFF 6 0 1 1 0 Fast PWM, 9 bits 0x1FF 7 0 1 1 1 Fast PWM, 10 bits 0x3FF 8 1 0 0 0 PWM Phase and Freq Correct ICR1 9 1 0 0 1 PWM Phase and Freq Correct OCR1A 10 1 0 1 0 PWM Phase Correct ICR1 11 1 0 1 1 PWM Phase Correct OCR1A 12 1 1 0 0 CTC ICR1 13 1 1 0 1 reservado 14 1 1 1 0 Fast PWM ICR1 15 1 1 1 1 Fast PWM OCR1A
Na tabela acima, TOP é o valor máximo para a contagem.
O segundo conjunto são os quatro bits COM (Compare Output Mode) do TCCR1B. O Timer1 tem dois módulos de comparação (A e B), cada um podendo controlar um pino. O pino OC1A é controlado pelos bits COM1A1 e COM1A0; O pino OC1B é controlado pelos bits COM1B1 e COM1B0.
Quando os dois bits COM associados a um pino estão em zero, o Timer1 não controla o pino, permitindo o seu uso normal em outras funções. O significado das outras combinações dependem do WGM.
Modo Normal
O modo normal é o mais simples: o contador é incrementado a cada clock voltando a 0 após 0xFFFF. Quando o contador dá a volta, o bit TOV (timer overflow) do registrador TIFR1 é setado, o que pode gerar uma interrupção (interrupções serão objeto de um outro post).
As unidades de comparação podem ser usadas neste modo. Quando a contagem atingir o valor em OCR1A ou OCR1B, o bit correspondente no registrador TIFR1 (OCFA e OCFB) é setado, o que pode gerar uma interrupção. Se os bits COM forem diferentes de zero, será também mudado o estado do pino correspondente (OC1A e OC1B):
COM1x1 COM1x0 Ação 0 1 Inverte o nível do pino 1 0 Coloca o pino no nível baixo 1 1 Coloca o pino no nível alto
O modo normal é útil quando queremos contar um tempo, diretamente pela leitura do contador ou usando a unidade de captura.
Modos CTC
Os modos CTC são semelhantes ao normal, porém a contagem volta a zero quando o contador atingir o valor em OCR1A (modo 4) ou ICR1A (modo 12). Quando o contador dá a volta é ligado o bit OCF1A ou ICF1 do registrador TIFR1 é ligado, o que pode gerar uma interrupção.
As unidades de comparação funcionam da mesma forma que no modo normal.
Os modos CTC são úteis para gerar interrupções periódicas ou geração simples de sinais nos pinos OC1A ou OC1B
Nenhum comentário:
Postar um comentário