Escolar Documentos
Profissional Documentos
Cultura Documentos
16.1 Características
16.2.1 Registros
A unidade de captura de entrada inclui uma unidade de filtragem digital (noise canceler) para
reduzir a chance de captura picos de ruído. O valor TOP, ou valor máximo do Timer/Contador, pode
em alguns modos de operação ser definido pelo OCR1A Register, o ICR1 Register, ou por um
conjunto de valores fixos. Ao usar OCR1A como valor TOP em um PWM modo, o registro OCR1A
não pode ser usado para gerar uma saída PWM. No entanto, o valor TOP será neste caso seja
armazenado em buffer duplo, permitindo que o valor TOP seja alterado em tempo de execução. Se
for necessário um valor TOP fixo, o O Registro ICR1 pode ser usado como alternativa, liberando o
OCR1A para ser usado como saída PWM.
16.2.2 Definições
BOTTOM
O contador atinge o BOTTOM quando se torna 0x0000.
MAX
O contador atinge seu MAXimum quando se torna 0xFFFF (decimal 65535).
TOP
O contador atinge o TOP quando se torna igual ao valor mais alto na contagem seqüência. O
valor TOP pode ser atribuído a um dos valores fixos: 0x00FF, 0x01FF, ou 0x03FF, ou ao
valor armazenado no registro OCR1A ou ICR1. A tarefa é dependente do modo de operação.
O TCNT1, OCR1A/B e ICR1 são registradores de 16 bits que podem ser acessados pela CPU do
AVR através dos dados de 8 bits ônibus. O registrador de 16 bits deve ser acessado por byte usando
duas operações de leitura ou gravação. Cada temporizador de 16 bits tem um registro único de 8 bits
para armazenamento temporário do byte alto do acesso de 16 bits. O mesmo registro temporário é
compartilhado entre todos os registradores de 16 bits dentro de cada temporizador de 16 bits.
Acessar o byte baixo aciona a leitura de 16 bits ou operação de gravação. Quando o byte baixo de
um registrador de 16 bits é escrito pela CPU, o byte alto armazenado no registrador temporário e o
byte baixo escrito são copiados para o registrador de 16 bits no mesmo ciclo de clock. Quando o
byte baixo de um registrador de 16 bits é lido pela CPU, o byte alto do registrador de 16 bits é
copiado para o registrador temporário no mesmo ciclo de clock em que o byte baixo é lido. Nem
todos os acessos de 16 bits usam o registro temporário para o byte alto. Lendo os registradores de
16 bits OCR1A/B não envolve o uso do registro temporário. Para fazer uma gravação de 16 bits, o
byte alto deve ser escrito antes do byte baixo. Para uma leitura de 16 bits, o byte baixo deve ser lida
antes do byte alto. Os exemplos de código a seguir mostram como acessar os registradores de timer
de 16 bits assumindo que nenhuma interrupção atualiza o registro temporário. O mesmo princípio
pode ser usado diretamente para acessar o OCR1A/B e ICR1 Registros. Observe que ao usar “C”, o
compilador manipula o acesso de 16 bits.
Assembly Code Examples(1)
...
; Set TCNT1 to 0x01FF
ldi r17,0x01
ldi r16,0xFF
out TCNT1H,r17
out TCNT1L,r16
in r16,TCNT1L
in r17,TCNT1H
...
C Code Examples(1)
unsigned int i;
...
/* Set TCNT1 to 0x01FF */
TCNT1 = 0x1FF;
i = TCNT1;
...
Observação: 1. Consulte ”Sobre exemplos de código” na página 17. Para registradores de E/S
localizados em mapa de E/S estendido, as instruções “IN”, “OUT”, “SBIS”, “SBIC”, “CBI” e
“SBI” devem ser substituído por instruções que permitem acesso a E/S estendida. Tipicamente
“LDS” e “STS” combinados com “SBRS”, “SBRC”, “SBR” e “CBR”
TIM16_ReadTCNT1:
; Save global interrupt flag
in r18,SREG
; Disable interrupts
cli
; Read TCNT1 into r17:r16
in r16,TCNT1L
in r17,TCNT1H
; Restore global interrupt flag
out SREG,r18
ret
C Code Example(1)
unsigned int TIM16_ReadTCNT1( void )
{
unsigned char sreg;
unsigned int i;
/* Save global interrupt flag */
sreg = SREG;
/* Disable interrupts */
_CLI();
/* Read TCNT1 into i */
i = TCNT1;
/* Restore global interrupt flag */
SREG = sreg;
return i;
}
Observação: 1. Consulte ”Sobre exemplos de código” na página 17. Para registradores de E/S
localizados em mapa de E/S estendido, as instruções “IN”, “OUT”, “SBIS”, “SBIC”, “CBI” e
“SBI” devem ser substituído por instruções que permitem acesso a E/S estendida. Tipicamente
“LDS” e “STS” combinados com “SBRS”, “SBRC”, “SBR” e “CBR”.
Observação: 1. Consulte ”Sobre exemplos de código” na página 17. Para registradores de E/S
localizados em mapa de E/S estendido, as instruções “IN”, “OUT”, “SBIS”, “SBIC”, “CBI” e
“SBI” devem ser substituído por instruções que permitem acesso a E/S estendida. Tipicamente
“LDS” e “STS” combinados com “SBRS”, “SBRC”, “SBR” e “CBR”.
O exemplo de código assembly requer que o par de registradores r17:r16 contenha o valor a ser
gravado em TCNT1.
Se estiver gravando em mais de um registrador de 16 bits onde o byte alto é o mesmo para todos os
registradores gravados, então o byte alto byte só precisa ser escrito uma vez. No entanto, observe
que a mesma regra de operação atômica descrita anteriormente também se aplica neste caso.
O Timer/Contador pode ser cronometrado por uma fonte de clock interna ou externa. A fonte do
relógio é selecionada por a lógica Clock Select que é controlada pelos bits Clock Select (CS12:0)
localizados no controle Timer/Counter Registrador B (TCCR1B). Para obter detalhes sobre fontes
de relógio e prescaler, consulte ”Timer/Counter0 e Timer/Counter1 Prescalers” na página 147.
O Timer/Contador incorpora uma unidade de Captura de Entrada que pode capturar eventos
externos e dar a eles um carimbo de data/hora indicando a hora da ocorrência. O sinal externo
indicando um evento, ou vários eventos, pode ser aplicado através do pino ICP1 ou,
alternativamente, através da unidade de comparação analógica. Os carimbos de tempo podem então
ser usados para calcular frequência, ciclo de trabalho e outras características do sinal aplicado.
Alternativamente, os carimbos de data e hora podem ser usados para criar um log dos eventos.
A unidade de captura de entrada é ilustrada pelo diagrama de blocos mostrado na Figura 16-3. Os
elementos do bloco diagrama que não fazem parte diretamente da unidade de captura de entrada são
sombreados em cinza. O pequeno “n” no registrador e bit nomes indica o número do
Timer/Contador.
Quando ocorre uma alteração do nível lógico (um evento) no pino Input Capture (ICP1),
alternativamente no Analog Saída do comparador (ACO), e esta alteração confirma a configuração
do detector de borda, uma captura será provocado. Quando uma captura é acionada, o valor de 16
bits do contador (TCNT1) é gravado no Input Capture Registro (ICR1). O sinalizador de captura de
entrada (ICF1) é definido no mesmo relógio do sistema quando o valor TCNT1 é copiado no
Registro ICR1. Se ativado (ICIE1 = 1), o sinalizador de captura de entrada gera uma interrupção de
captura de entrada. O sinalizador ICF1 é apagado automaticamente quando a interrupção é
executada. Alternativamente, o sinalizador ICF1 pode ser apagado por software escrevendo um
lógico em sua localização de bit de E/S. A leitura do valor de 16 bits no Input Capture Register
(ICR1) é feita primeiro lendo o byte baixo (ICR1L) e então o byte alto (ICR1H). Quando o byte
baixo é lido, o byte alto é copiado para o byte alto temporariamente registrador (TEMP). Quando a
CPU ler a localização de I/O ICR1H, ela acessará o registrador TEMP. O registro ICR1 só pode ser
gravado ao usar um modo de geração de forma de onda que utiliza o registro ICR1 para definir o
valor TOP do contador. Nestes casos, os bits do modo Waveform Generation (WGM13:0) devem
ser definido antes que o valor TOP possa ser escrito no registrador ICR1. Ao escrever o ICR1
Registre o byte alto deve ser gravado no local I/O ICR1H antes que o byte baixo seja gravado no
ICR1L. Para obter mais informações sobre como acessar os registradores de 16 bits, consulte
”Acessando os registradores de 16 bits” na página 122.
A principal fonte de disparo para a unidade de captura de entrada é o pino de captura de entrada
(ICP1). Timer/Contador1 pode alternativamente, use a saída do comparador analógico como fonte
de disparo para a unidade de captura de entrada. o analógico O comparador é selecionado como
fonte de disparo definindo o bit Analog Comparator Input Capture (ACIC) no Controle de
Comparador Analógico e Registro de Status (ACSR). Esteja ciente de que alterar a fonte do
acionador pode acionar um capturar. O sinalizador de captura de entrada deve, portanto, ser limpo
após a alteração. As entradas do pino de captura de entrada (ICP1) e da saída do comparador
analógico (ACO) são amostradas usando o mesmo técnica como para o pino T1 (Figura 17-1 na
página 147). O detector de borda também é idêntico. No entanto, quando o cancelamento de ruído é
ativado, lógica adicional é inserida antes do detector de borda, o que aumenta o atraso em quatro
ciclos de clock do sistema. Observe que a entrada do cancelador de ruído e detector de borda está
sempre habilitada, a menos que o Timer/Contador é definido em um modo de Geração de Forma de
Onda que usa ICR1 para definir o TOP. Uma captura de entrada pode ser acionada por software
controlando a porta do pino ICP1.
O registro OCR1x é armazenado em buffer duplo ao usar qualquer um dos doze modos de
modulação por largura de pulso (PWM). Para os modos de operação Normal e Clear Timer on
Compare (CTC), o buffer duplo é desabilitado. O buffer duplo sincroniza a atualização do
registrador de comparação OCR1x para TOP ou BOTTOM do sequência de contagem. A
sincronização evita a ocorrência de pulsos PWM assimétricos e de comprimento ímpar, tornando
assim a saída livre de falhas. O acesso ao Registro OCR1x pode parecer complexo, mas não é o
caso. Quando o buffer duplo está ativado, o A CPU tem acesso ao registrador de buffer OCR1x e, se
o buffer duplo estiver desabilitado, a CPU acessará o OCR1x diretamente. O conteúdo do Registro
OCR1x (Buffer ou Compare) só é alterado por uma operação de escrita (o Timer/Contador não
atualiza este registrador automaticamente como o Registrador TCNT1 e ICR1). Portanto OCR1x
não é lido por meio do registro temporário de byte alto (TEMP). No entanto, é uma boa prática ler o
baixo byte primeiro como ao acessar outros registradores de 16 bits. A escrita dos Registros OCR1x
deve ser feita via TEMP Register, pois a comparação de todos os 16 bits é feita continuamente. O
byte alto (OCR1xH) deve ser escrito primeiro. Quando a localização de E/S de byte alto é gravada
pela CPU, o registrador TEMP será atualizado pelo valor gravado. Então, quando o byte inferior
(OCR1xL) for gravado nos oito bits inferiores, o byte superior será copiado para os 8 bits
superiores. bits do buffer OCR1x ou do registrador de comparação OCR1x no mesmo ciclo de clock
do sistema. Para obter mais informações sobre como acessar os registradores de 16 bits, consulte
”Acessando os registradores de 16 bits” na página 122.
Nos modos de geração de forma de onda não PWM, a saída correspondente do comparador pode ser
forçada escrevendo um ao bit de Comparação de Saída de Força (FOC1x). Forçar correspondência
de comparação não definirá o sinalizador OCF1x ou recarregar/limpar o temporizador, mas o pino
OC1x será atualizado como se tivesse ocorrido uma correspondência de comparação real (as
configurações de bits COM11:0 definir se o pino OC1x está definido, limpo ou alternado).
16.7.2 Compare Match Blocking by TCNT1 Write
Os bits do modo Compare Output (COM1x1:0) têm duas funções. O gerador de forma de onda usa
o COM1x1:0 bits para definir o estado de comparação de saída (OC1x) na próxima correspondência
de comparação. Em segundo lugar, os bits COM1x1:0 controlar a fonte de saída do pino OC1x. A
Figura 16-5 mostra um esquema simplificado da lógica afetada pelo Configuração de bit
COM1x1:0. Os registradores de I/O, bits de I/O e pinos de I/O na figura são mostrados em negrito.
Apenas as partes de os Registros de Controle de Porta de E/S gerais (DDR e PORT) que são
afetados pelos bits COM1x1:0 são mostrados. Ao se referir ao estado OC1x, a referência é para o
registrador OC1x interno, não para o pino OC1x. Se um sistema ocorrer uma redefinição, o
registrador OC1x é redefinido para “0”.
A função geral da porta de E/S é substituída pela comparação de saída (OC1x) do gerador de forma
de onda se qualquer um dos bits COM1x1:0 está definido. No entanto, a direção do pino OC1x
(entrada ou saída) ainda é controlada pelo Data Direction Register (DDR) para o pino da porta. O
bit Data Direction Register para o pino OC1x (DDR_OC1x) deve ser definido como saída antes que
o valor OC1x seja visível no pino. A função de substituição de porta é geralmente independente do
modo Waveform Generation, mas há algumas exceções. Consulte a Tabela 16-1 na página 140,
Tabela 16-2 na página 140 e Tabela 16-3 na página 141 para obter detalhes. O design da lógica do
pino de comparação de saída permite a inicialização do estado OC1x antes que a saída seja
habilitada. Observe que algumas configurações de bit COM1x1:0 são reservadas para determinados
modos de operação. Veja “Descrição do Registro” na página 140. Os bits COM1x1:0 não têm efeito
na unidade de captura de entrada.
O modo de operação mais simples é o modo Normal (WGM13:0 = 0). Neste modo, a direção da
contagem é sempre ativo (incrementando) e nenhuma limpeza do contador é executada. O contador
simplesmente supera quando passa seu valor máximo de 16 bits (MAX = 0xFFFF) e, em seguida,
reinicia de BOTTOM (0x0000). Em operação normal o O sinalizador de estouro do
temporizador/contador (TOV1) será definido no mesmo ciclo do relógio do temporizador quando o
TCNT1 se tornar zero. O sinalizador TOV1 neste caso se comporta como um 17º bit, exceto que é
apenas definido, não apagado. No entanto, combinado com a interrupção de estouro do
temporizador que limpa automaticamente o sinalizador TOV1, a resolução do temporizador pode
ser aumentada por Programas. Não há casos especiais a serem considerados no modo Normal, um
novo valor de contador pode ser escrito a qualquer momento. A unidade de captura de entrada é
fácil de usar no modo normal. No entanto, observe que o intervalo máximo entre os eventos
externos não devem exceder a resolução do contador. Se o intervalo entre os eventos for muito
longo, a interrupção de estouro do temporizador ou o prescaler deve ser usado para estender a
resolução para a unidade de captura. As unidades de comparação de saída podem ser usadas para
gerar interrupções em um determinado momento. Usando a comparação de saída para gerar formas
de onda no modo Normal não é recomendado, pois isso ocupará muito tempo da CPU.
No modo Clear Timer on Compare ou CTC (WGM13:0 = 4 ou 12), o registro OCR1A ou ICR1 é
usado para
manipular a resolução do contador. No modo CTC, o contador é zerado quando o valor do contador
(TCNT1)
corresponde a OCR1A (WGM13:0 = 4) ou a ICR1 (WGM13:0 = 12). O OCR1A ou ICR1 definem
o topo
valor para o contador, portanto também sua resolução. Este modo permite maior controle da saída
de correspondência de comparação
frequência. Também simplifica a operação de contagem de eventos externos.
O diagrama de tempo para o modo CTC é mostrado na Figura 16-6. O valor do contador (TCNT1)
aumenta até que um
a correspondência de comparação ocorre com OCR1A ou ICR1 e, em seguida, o contador (TCNT1)
é limpo.
Uma interrupção pode ser gerada sempre que o valor do contador atingir o valor TOP usando o
OCF1A
ou ICF1 Flag de acordo com o registrador utilizado para definir o valor TOP. Se a interrupção
estiver habilitada, a interrupção
rotina do manipulador pode ser usada para atualizar o valor TOP. No entanto, alterar o TOP para um
valor próximo a
BOTTOM quando o contador está rodando com nenhum ou um valor prescaler baixo deve ser feito
com cuidado, pois o CTC
O modo não possui o recurso de buffer duplo. Se o novo valor gravado em OCR1A ou ICR1 for
menor que o
valor atual de TCNT1, o contador perderá a correspondência de comparação. O contador terá então
que contar até o
valor máximo (0xFFFF) e recomeçar começando em 0x0000 antes que a correspondência de
comparação possa ocorrer. Em muitos
casos, esse recurso não é desejável. Uma alternativa será então usar o modo PWM rápido usando
OCR1A para
definindo TOP (WGM13:0 = 15) já que o OCR1A então será buffer duplo.
Para gerar uma saída de forma de onda no modo CTC, a saída OC1A pode ser configurada para
alternar seu nível lógico em cada
compare a correspondência configurando os bits do modo de saída de comparação para o modo de
alternância (COM1A1:0 = 1). O valor de OC1A será
não será visível no pino da porta, a menos que a direção dos dados para o pino seja definida como
saída (DDR_OC1A = 1). O
a forma de onda gerada terá uma frequência máxima de fOC1A = fclk_I/O/2 quando OCR1A for
definido como zero (0x0000).
A frequência da forma de onda é definida pela seguinte equação:
A Modulação por Largura de Pulso rápida ou o modo PWM rápido (WGM13:0 = 5, 6, 7, 14 ou 15)
fornece uma alta frequência Opção de geração de forma de onda PWM. O PWM rápido difere das
outras opções de PWM por sua inclinação única Operação. O contador conta de BOTTOM para
TOP e reinicia de BOTTOM. Em comparação não inversora Modo de saída, a comparação de saída
(OC1x) é apagada na correspondência de comparação entre TCNT1 e OCR1x e definido em
BAIXO. Na inversão do modo de saída de comparação, a saída é definida como correspondência de
comparação e desmarcada em INFERIOR. Devido à operação de inclinação única, a frequência de
operação do modo PWM rápido pode ser duas vezes maior que a modos PWM corretos de fase e
corretos de fase e frequência que usam operação de inclinação dupla. Esta alta frequência torna o
modo PWM rápido adequado para aplicações de regulação de energia, retificação e DAC. Alta
frequência permite componentes externos fisicamente pequenos (bobinas, capacitores), portanto,
reduz o custo total do sistema.
A resolução PWM para PWM rápido pode ser fixada em 8, 9 ou 10 bits ou definida por ICR1 ou
OCR1A. O a resolução mínima permitida é de 2 bits (ICR1 ou OCR1A definido como 0x0003) e a
resolução máxima é de 16 bits (ICR1 ou OCR1A definido como MAX). A resolução PWM em bits
pode ser calculada usando a seguinte equação:
No modo PWM rápido, o contador é incrementado até que o valor do contador corresponda a um
dos valores fixos 0x00FF, 0x01FF ou 0x03FF (WGM13:0 = 5, 6 ou 7), o valor em ICR1
(WGM13:0 = 14) ou o valor em OCR1A (WGM13:0 = 15). O contador é então limpo no seguinte
ciclo de relógio do temporizador. O diagrama de tempo para o jejum O modo PWM é mostrado na
Figura 16-7. A figura mostra o modo PWM rápido quando OCR1A ou ICR1 é usado para definir
PRINCIPAL. O valor TCNT1 está no diagrama de tempo mostrado como um histograma para
ilustrar a operação de inclinação única. O diagrama inclui saídas PWM não invertidas e invertidas.
As pequenas marcas de linha horizontal no TCNT1 inclinações representam correspondências de
comparação entre OCR1x e TCNT1. O sinalizador de interrupção OC1x será definido quando um
ocorre a correspondência de comparação.
Modulação por largura de pulso correta de fase ou modo PWM correto de fase (WGM13:0 = 1, 2, 3,
10 ou 11) fornece uma opção de geração de forma de onda PWM correta de fase de alta resolução.
O modo PWM correto de fase é, como o modo PWM correto de fase e frequência, baseado em uma
operação de inclinação dupla. O contador conta repetidamente de BOTTOM (0x0000) para TOP e
depois de TOP para BOTTOM. Na saída de comparação não inversora modo, a comparação de
saída (OC1x) é apagada na correspondência de comparação entre TCNT1 e OCR1x enquanto
contagem crescente e definido na correspondência de comparação durante a contagem regressiva.
No modo de comparação de saída invertida, o operação é invertida. A operação de inclinação dupla
tem frequência máxima de operação mais baixa do que a de inclinação única Operação. No entanto,
devido ao recurso simétrico dos modos PWM de inclinação dupla, esses modos são preferidos para
aplicações de controle de motores. A resolução PWM para o modo PWM correto de fase pode ser
fixada em 8, 9 ou 10 bits, ou definida por ICR1 ou OCR1A. A resolução mínima permitida é de 2
bits (ICR1 ou OCR1A definido como 0x0003) e a resolução máxima resolução é de 16 bits (ICR1
ou OCR1A definido como MAX). A resolução PWM em bits pode ser calculada usando o seguinte
equação:
No modo PWM de correção de fase, o contador é incrementado até que o valor do contador
corresponda a um dos valores fixos. valores 0x00FF, 0x01FF ou 0x03FF (WGM13:0 = 1, 2 ou 3), o
valor em ICR1 (WGM13:0 = 10) ou o valor em OCR1A (WGM13:0 = 11). O contador atingiu
então o TOP e muda a direção da contagem. o TCNT1 valor será igual a TOP para um ciclo de
clock do temporizador. O diagrama de tempo para o modo PWM correto de fase é mostrado na
Figura 16-8 na página 135. A figura mostra o modo PWM de correção de fase quando OCR1A ou
ICR1 é usado para definir TOP. O valor TCNT1 está no diagrama de tempo mostrado como um
histograma para ilustrar a inclinação dupla Operação. O diagrama inclui saídas PWM não invertidas
e invertidas. As pequenas marcas de linha horizontal nas inclinações TCNT1 representam
comparações entre OCR1x e TCNT1. O sinalizador de interrupção OC1x será definido quando
ocorre uma correspondência de comparação.
No modo PWM correto de fase e frequência, o contador é incrementado até que o valor do contador
corresponda a o valor em ICR1 (WGM13:0 = 8) ou o valor em OCR1A (WGM13:0 = 9). O
contador atingiu então o TOP e muda a direção da contagem. O valor TCNT1 será igual a TOP para
um ciclo de clock do temporizador. O diagrama de temporização para o modo PWM correto de fase
e correto de frequência é mostrado na Figura 16-9 na página 137. A figura mostra o modo PWM
correto de fase e frequência quando OCR1A ou ICR1 é usado para definir o TOP. O valor TCNT1
está no diagrama de tempo mostrado como um histograma para ilustrar a operação de inclinação
dupla. O diagrama inclui saídas PWM não invertidas e invertidas. As pequenas marcas de linha
horizontal nas encostas TCNT1 representam comparações entre OCR1x e TCNT1. O sinalizador de
interrupção OC1x será definido quando uma comparação correspondência ocorre.
Figure 16-9. Phase and Frequency Correct PWM Mode, Timing Diagram
Figure 16-11 shows the same timing data, but with the prescaler enabled
Figure 16-11. Timer/Counter Timing Diagram, Setting of OCF1x, with Prescaler (fclk_I/O/8)
A Figura 16-12 na página 139 mostra a sequência de contagem próxima ao TOP em vários modos.
Ao usar fase e frequência correta no modo PWM, o registro OCR1x é atualizado na parte inferior.
Os diagramas de temporização serão os mesmo, mas TOP deve ser substituído por BOTTOM, TOP-
1 por BOTTOM+1 e assim por diante. A mesma renomeação se aplica para modos que definem o
sinalizador TOV1 em BOTTOM.
Figure 16-13 shows the same timing data, but with the prescaler enabled.
TCCR1A
Bit 7 6 5 4 3 2 1 0
(0x80) COM1A1 COM1A0 COM1B1 COM1B0 – – WGM11 WGM10
Read/ R/W R/W R/W R/W R R R/W R/W
Write
Initial 0 0 0 0 0 0 0 0
Value
COM1A1/COM1B1 COM1A0/COM1B0
Descrição
0 0 Operação normal da porta, OC1A/OC1B
desconectado.
0 1 Alternar OC1A/OC1B na correspondência de
comparação.
1 0 ? Limpe OC1A/OC1B na correspondência de
comparação (defina a saída para nível baixo).?
1 1 ? Defina OC1A/OC1B na correspondência de
comparação (defina a saída para alto nível).?
A Tabela 16-2 mostra a funcionalidade do bit COM1x1:0 quando os bits WGM13:0 são definidos
para o modo PWM rápido
Table 16-2. Compare Output Mode, Fast PWM(1)
COM1A1/COM1B1 COM1A0/COM1B0
Descrição
0 0 Operação normal da porta, OC1A/OC1B desconectado
0 1 WGM13:0 = 14 ou 15: Alterna OC1A na comparação
Correspondência, OC1B desconectado (operação de
porta normal). Para todas as outras configurações
WGM1, operação normal da porta, OC1A/OC1B
desconectado.
1 0 Limpar OC1A/OC1B na correspondência de
comparação, definir OC1A/OC1B em BOTTOM
(modo não inversor)
1 1 Set OC1A/OC1B on Compare Match, clear
OC1A/OC1B at BOTTOM (inverting mode)
Nota: 1. Um caso especial ocorre quando OCR1A/OCR1B é igual a TOP e COM1A1/COM1B1 é
definido. Neste caso o a correspondência de comparação é ignorada, mas a definição ou limpeza é
feita em BOTTOM. Consulte ”Modo PWM rápido” na página 132 para mais detalhes.
A Tabela 16-3 mostra a funcionalidade do bit COM1x1:0 quando os bits WGM13:0 são definidos
para a fase correta ou o fase e frequência corretas, modo PWM.
Table 16-3. Compare Output Mode, Phase Correct and Phase and Frequency Correct PWM(1)
COM1A1/COM1B1 COM1A0/COM1B0
Descrição
0 0 Operação normal da porta, OC1A/OC1B
desconectado.
0 1 WGM13:0 = 9 ou 11: Alternar OC1A na comparação
Correspondência, OC1B desconectado (operação de
porta normal). Para todas as outras configurações
WGM1, operação normal da porta, OC1A/OC1B
desconectado.
1 0 Limpe OC1A/OC1B na correspondência de
comparação durante a contagem crescente. Defina
OC1A/OC1B na correspondência de comparação
quando contagem regressiva.
1 1 Defina OC1A/OC1B na correspondência de
comparação durante a contagem crescente. Limpar
OC1A/OC1B na correspondência de comparação ao
fazer a contagem regressiva.
Nota: 1. Um caso especial ocorre quando OCR1A/OCR1B é igual a TOP e COM1A1/COM1B1 é
definido. Consulte ”Fase correta Modo PWM” na página 134 para obter mais detalhes.
• Bit 1:0 – WGM11:0: Waveform Generation Mode
Combinados com os bits WGM13:2 encontrados no registrador TCCR1B, esses bits controlam a
sequência de contagem de o contador, a fonte para o valor máximo (TOP) do contador e que tipo de
geração de forma de onda a ser usada, consulte a Tabela 16-4. Os modos de operação suportados
pela unidade Timer/Contador são: Modo normal (contador), Clear Timer no modo Compare match
(CTC) e três tipos de modos de modulação por largura de pulso (PWM). (Consulte ”Modos de
Operação” na página 131).
Table 16-4. Waveform Generation Mode Bit Description(1)
MODO WGM13 WGM12 WGM11 WGM10 Timer/Counter TOP Atualizaç flag TOV1
(CTC1) (PWM11) (PWM10) Mode of ão de definir em
Operation OCR1x
em
0 0 0 0 0 Normal 0xFFFF imediata MAX
1 0 0 0 1 PWM, 0x00FF TOP BOTTOM
Phase Correct,
8-bit
2 0 0 1 0 PWM, 0x01FF TOP BOTTOM
Phase Correct,
9-bit
3 0 0 1 1 PWM, 0x03FF TOP BOTTOM
Phase Correct,
10-bit
4 0 1 0 0 CTC OCR1A imediata MAX
5 0 1 0 1 Fast PWM, 8-bit 0x00FF BOTTOM TOP
6 0 1 1 0 Fast PWM, 9-bit 0x01FF BOTTOM TOP
7 0 1 1 1 Fast PWM, 10-bit 0x03FF BOTTOM TOP
8 1 0 0 0 PWM, Phase and ICR1 BOTTOM BOTTOM
Frequency Correct
9 1 0 0 1 PWM, Phase and OCR1A BOTTOM BOTTOM
Frequency Correct
10 1 0 1 0 PWM, ICR1 TOP BOTTOM
Phase Correct
11 1 0 1 1 PWM, OCR1A TOP BOTTOM
Phase Correct
12 1 1 0 0 CTC ICR1 imediata MAX
13 1 1 0 1 (Reserved) – – –
14 1 1 1 0 Fast PWM ICR1 BOTTOM TOP
15 1 1 1 1 Fast PWM OCR1A BOTTOM TOP
Nota: 1. Os nomes de definição de bit CTC1 e PWM11:0 estão obsoletos. Use as definições
WGM12:0. No entanto, a funcionalidade e localização desses bits são compatíveis com versões
anteriores do temporizador.
16.11.2 TCCR1B – Timer/Counter1 Control Register B
Bit 7 6 5 4 3 2 1 0
(0x81) ICNC1 ICES1 – WGM13 WGM12 CS12 CS11 CS10
Read/Write R/W R/W R R/W R/W R/W R/W R/W
Initial Value 0 0 0 0 0 0 0 0
• Bit 5 – Reserved
Este bit é reservado para uso futuro. Para garantir a compatibilidade com dispositivos futuros, este
bit deve ser escrito em zero quando TCCR1B é escrito.
• Bit 7, 6 – Reserved
Esses bits são bits não utilizados no ATmega48A/PA/88A/PA/168A/PA/328/P e sempre serão lidos
como zero.
• Bit 4, 3 – Reserved
Esses bits são bits não utilizados no ATmega48A/PA/88A/PA/168A/PA/328/P e sempre serão lidos
como zero.
Quando este bit é escrito em um, e o sinalizador I no registrador de status é definido (interrupções
habilitadas globalmente), o Timer/Counter1 Output Compare Uma interrupção Match está
habilitada. O vetor de interrupção correspondente (consulte “Interrupções” na página 66) é
executado quando o sinalizador OCF1A, localizado em TIFR1, é definido.
Bit 7 6 5 4 3 2 1 0
(0x16)(0x36) – – ICF1 – – OCF1B OCF1A TOV1
Read/Write R R R/W R R R/W R/W R/W
Initial Value 0 0 0 0 0 0 0 0
• Bit 7, 6 – Reserved
Esses bits são bits não utilizados no ATmega48A/PA/88A/PA/168A/PA/328/P e sempre serão lidos
como zero.
Este sinalizador é definido quando ocorre um evento de captura no pino ICP1. Quando o registro de
captura de entrada (ICR1) é definido por o WGM13:0 a ser usado como o valor TOP, o sinalizador
ICF1 é definido quando o contador atinge o valor TOP. ICF1 é limpo automaticamente quando o
vetor de interrupção de captura de entrada é executado. Alternativamente, ICF1 pode ser zerado
escrevendo um lógico em sua localização de bit.
• Bit 4, 3 – Reserved
Esses bits são bits não utilizados no ATmega48A/PA/88A/PA/168A/PA/328/P e sempre serão lidos
como zero.
Este sinalizador é definido no ciclo do relógio do temporizador após o valor do contador (TCNT1)
corresponder ao Registro de comparação de saída B (OCR1B). Observe que um estroboscópio de
comparação de saída forçada (FOC1B) não definirá o sinalizador OCF1B. OCF1B é limpo
automaticamente quando o vetor de interrupção de correspondência B de comparação de saída é
executado. Alternativamente, OCF1B pode ser limpo escrevendo um lógico em sua localização de
bit.
Este sinalizador é definido no ciclo do relógio do temporizador após o valor do contador (TCNT1)
corresponder ao registrador A de comparação de saída (OCR1A). Observe que um estroboscópio de
comparação de saída forçada (FOC1A) não definirá o sinalizador OCF1A. OCF1A é limpo
automaticamente quando o vetor de interrupção Match A de comparação de saída é executado.
Alternativamente, OCF1A pode ser limpo escrevendo um lógico em sua localização de bit.
A configuração deste sinalizador depende da configuração dos bits WGM13:0. Nos modos Normal
e CTC, o sinalizador TOV1 é definido quando o temporizador transborda. Consulte a Tabela 16-4
na página 141 para o comportamento do sinalizador TOV1 ao usar outro Configuração de bit
WGM13:0. TOV1 é zerado automaticamente quando o Vetor de Interrupção de Estouro do
Timer/Contador1 é executado. Alternativamente, TOV1 pode ser limpo escrevendo um lógico em
sua localização de bit.
resumo
Control Register
TCCR1A
COM1A1 COM1A0 COM1B1 COM1B0 – – WGM11 WGM10
TCCR1B