| Both sides previous revisionPrevious revisionNext revision | Previous revision |
| pt:avr:timers [2015/12/01 18:08] – artica | pt:avr:timers [2020/07/20 09:00] (current) – external edit 127.0.0.1 |
|---|
| ====== Contadores/Temporizadores====== | ====== Contadores/Temporizadores====== |
| |
| Os contadores, que em certo sentido, também podem ser chamados temporizadores, são uma das mais importantes sub-funções de um microcontrolador. Estes permitem precisamente processos temporais, gerar sinais e contar os eventos. Um contador converte o número de ciclos de entrada para um valor binário usando um array de triggeers. O número máximo de ciclos contados depende do comprimento deste array, e este facto é assinalado pelo comprimento do código binário. Um AVR tem contadores de 8 e 16 bits. Se um temporizador atingiu o seu valor máximo (255 em 8-bits ou 65.535 em 16 bits), o ciclo seguinte irá gerar um overflow e o contador dá a volta para 0. O sinal de relógio de um contador pode vir do sinal do relógio do microcontrolador, e nesse caso é possível diminuir o seu valor usando um divisor. Alguns AVRs tem um gerador de sinal de relógio interno independente, que pode ser modificado para funcionar mais rapidamente utilizando um multiplicador de frequência. Os contadores também podem ser diferentes segundo os casos de aplicação e modos de trabalho. | Os contadores, que em certo sentido, também podem ser chamados temporizadores, são uma das mais importantes sub-funções de um microcontrolador. Estes permitem precisamente processos temporais, gerar sinais e contar os eventos. Um contador converte o número de ciclos de entrada para um valor binário usando um array de triggers. O número máximo de ciclos contados depende do comprimento deste array, e este facto é assinalado pelo comprimento do código binário. Um AVR tem contadores de 8 e 16 bits. Se um temporizador atingiu o seu valor máximo (255 em 8-bits ou 65.535 em 16 bits), o ciclo seguinte irá gerar um overflow e o contador dá a volta para 0. O sinal de relógio de um contador pode vir do sinal do relógio do microcontrolador, e nesse caso é possível diminuir o seu valor usando um divisor. Alguns AVRs tem um gerador de sinal de relógio interno independente, que pode ser modificado para funcionar mais rapidamente utilizando um multiplicador de frequência. Os contadores também podem ser diferentes segundo os casos de aplicação e modos de trabalho. |
| |
| ===== Modo padrão de um Contador ===== | ===== Modo padrão de um Contador ===== |
| Em alguns modos de geração de sinal, o valor máximo do contador pode ser alterado. O tamanho físico do contador permanecerá o mesmo, mas um registo de comparação é usado para repor o contador numa contagem específica. Os exemplos anteriores também podem ser resolvidos usando este método, mas a função serve principalmente para mudar o período do sinal. Além disso, um contador pode ser configurado de modo a funcionar com incrementação ou decrementação. | Em alguns modos de geração de sinal, o valor máximo do contador pode ser alterado. O tamanho físico do contador permanecerá o mesmo, mas um registo de comparação é usado para repor o contador numa contagem específica. Os exemplos anteriores também podem ser resolvidos usando este método, mas a função serve principalmente para mudar o período do sinal. Além disso, um contador pode ser configurado de modo a funcionar com incrementação ou decrementação. |
| |
| The counters and the signal generating modes using them are one of the most complex peripheral modules in an AVR. Writing about all of them here is beyond the scope of this text, and typically there is no need to know all aspects in order to use them. The following describes one of the most common PWM signals in robotics. The rest can be read from the AVR documentation. | Os contadores e os modos de geração de sinal que os usam são um dos módulos periféricos mais complexos num AVR. Escrever sobre todos eles aqui vai além do âmbito deste texto, e, normalmente, não há também necessidade de saber todos os aspectos, com vista a usá-los. O que se segue descreve um dos sinais PWM mais comuns em robótica. O resto pode ser lido a partir da documentação do AVR. |
| |
| ==== Pulse Width Modulation ==== | ==== Pulse Width Modulation ==== |
| |
| Pulse width modulation (PWM) is a type of signal, where the frequency and period (typically) are both constant, but the length of the half-periods changes. PWM signals are used for controlling electromechanical, optical and other devices. For example, the servo motors known from modeling use a PWM signal of 50 Hz and have a high half-period of 1 to 2 ms. | A modulação de largura de impulso (PWM) é um tipo de sinal, em que a frequência e período são (tipicamente) ambos constantes, mas o comprimento do meio período varia. Os sinais PWM são usados para controlar dispositivos electro-mecânicos, ópticos e outras. Por exemplo, os servomotores usados em modelação usam um sinal PWM de 50 Hz e têm um elevada meio-período de 1 a 2 ms. |
| |
| <box 100% round #EEEEEE|Example> | <box 100% round #EEEEEE|Exemplo> |
| |
| Task: Using an 8MHz ATmega128, generate two speed regulating servo motor signals. Use pin PB5 (OC1A) to generate a pulse width of 1 ms and pin PB6 (OC1B) to generate pulse width of 2 ms. | Task: Using an 8MHz ATmega128, generate two speed regulating servo motor signals. Use pin PB5 (OC1A) to generate a pulse width of 1 ms and pin PB6 (OC1B) to generate pulse width of 2 ms. |