Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
pt:avr:timers [2015/12/01 17:33] articapt:avr:timers [2020/07/20 09:00] (current) – external edit 127.0.0.1
Line 1: Line 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 =====
Line 50: Line 50:
 É também possível a utilização de uma fonte de relógio externo como sinal de contador de relógio. Um AVR tem um pino chamado Tn para esta finalidade, sendo n o número associado ao contador. O sinal de relógio externo e a polaridade podem ser selecionados usando o registro prescaler. É também possível a utilização de uma fonte de relógio externo como sinal de contador de relógio. Um AVR tem um pino chamado Tn para esta finalidade, sendo n o número associado ao contador. O sinal de relógio externo e a polaridade podem ser selecionados usando o registro prescaler.
  
-==== Timing Events ====+==== Eventos Temporizados ====
  
-Since the counters allow timing operationsmore complex AVR microcontrollers have an option to time specific events on a hardware levelThis part of the counter is called an input capture unitThere is a choice between two eventsthe logical change in the value of special input pin or in the value of the analog comparator resultIf the selected event occursthe counter's value is written to special register, from where it can be read at any timeIf the event is longer than the overflow time of the counterthe program has to count the overflows as well and take them into account when calculating the final result.+Uma vez que os contadores permitem operações de temporizaçãoos microcontroladores AVR mais complexos têm uma opção para eventos específicos de tempo ao nível do hardware. Esta parte do contador é designada por unidade de captura de entradaHá uma escolha entre dois eventos: a mudança de valor num pino especial de entrada ou no valor do resultado do camparador analógicoSe ocorrer o evento selecionadoo valor do contador é gravado num registo especial, de onde pode ser lido qualquer momentoSe o evento demorar mais do que o tempo de overflow do contadoro programa tem para contar os overflows e levá-los em consideração no cálculo do resultado final.
  
-<box 100% round #EEEEEE|Example>+<box 100% round #EEEEEE|Exemplo>
  
 Task: Measure the frequency of an external 122 Hz - 100 kHz logical square signal using an 8 MHz ATmega128. The measurement has to be at 1 Hz precision. The program uses a 16-bit counter with 1 input capture unit. Task: Measure the frequency of an external 122 Hz - 100 kHz logical square signal using an 8 MHz ATmega128. The measurement has to be at 1 Hz precision. The program uses a 16-bit counter with 1 input capture unit.
Line 103: Line 103:
 </code> </code>
  
-The program fires an interrupt each time a rising front occurs in the external signalDuring the interruptthe counter is checked for overflows this can happen if the frequency of the signal is below 122 Hz (8 MHz / 2<sup>16</sup>and in this case the value of the counter doesn't reflect a real period anymoreThe frequency is calculated using 32-bit numbers to get the inverse of the periodThe first thing is to set the counter to 0, because the timer works on the same clock signal as the processor and each instruction execution occurring after the external event shortens the measured period corrupting the resultThe maximum measured frequency is limited by the time spent in the interrupt program.+O programa dispara uma interrupção de cada vez que uma frente ascendente ocorre no sinal externoDurante a interrupçãoo overflow do contador é verificado isto pode acontecer se a frequência do sinal estiver abaixo de 122 Hz (8 MHz / 2<sup>16</sup>e, neste caso, o valor do contador não reflecte um período real. A frequência é calculada usando números de 32 bits para obter o inverso do períodoA primeira coisa é definir o contador para 0, pois o temporizador funciona no mesmo sinal de relógio que o processador e cada execução da instrução que ocorra após o evento externo encurta o período medido corrompendo o resultadoA frequência máxima medida é limitada pelo tempo gasto no programa de interrupção.
  
 </box> </box>
  
-Catching events and registering the time it took for them to occur can also be resolved at the software levelIt is possible to use external or other interrupts and read the value of the counter during these eventsThe hardware-level event catching is meant to run independently from the main program and time relatively short (or frequentevents.+Apanhar eventos e registar o tempo que levou para que eles ocorram também pode ser resolvido no nível do software. É possível utilizar interrupções externas ou outras e ler o valor do contador durante estes eventosO apanhar de eventos ao nível de hardware deverá ser executado de forma independente do programa principal e em eventos de tempo relativamente curtos (ou frequentes).
  
-===== Signal Generating =====+===== Geração de Sinal =====
  
-More complex counters can generate signalin addition to timing the length of oneFor this purpose the counter has an output compare unit and compare match output unitThe output compare unit has registers with the same bit-width as the counter and the values of these registers are compared to the value of the counter while it is runningAn interrupt can be generated and special pins' values can be changed each time the counter's value is equal to the value in the compare unit register. At this moment a pin can either be set highlow or inversedThe signal is generated by changes in the value of the output pin.+Os contadores mais complexos podem gerar um sinal, além de cronometrarem duração dos mesmos. Para este efeitoo contador tem uma unidade de comparação à saída e uma unidade de comparação de correspondênciaA unidade de saída de comparação tem registros com mesma largura de bits que o contador e os valores desses registos são comparados com o valor do contador enquanto ele estiver em execuçãoUma interrupção pode ser gerada e os valores dos pinos especiais podem ser alterados de cada vez que o valor do contador for igual ao valor no registo na unidade de comparaçãoNeste momento, um pino pode ser definido como altobaixo ou invertidoO sinal é gerado por mudanças no valor do pino de saída.
  
-In some signal generating modesthe counter's maximum value can be alteredThe counter's physical size will remain the samebut a comparison register is used to reset the counter at a specific countThe previous examples could also be solved by using this methodbut the function is rather for changing the period of the signalIn addition to this, a counter can be configured to a mode where it works with both incrementing and decrementing.+Em alguns modos de geração de sinalo valor máximo do contador pode ser alteradoO tamanho físico do contador permanecerá o mesmomas um registo de comparação é usado para repor o contador numa contagem específicaOs exemplos anteriores também podem ser resolvidos usando este métodomas a função serve principalmente para mudar o período do sinalAlém dissoum contador pode ser configurado de modo 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 textand typically there is no need to know all aspects in order to use themThe following describes one of the most common PWM signals in roboticsThe 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 textoe, normalmente, não há também necessidade de saber todos os aspectos, com vista a usá-losO que se segue descreve um dos sinais PWM mais comuns em robóticaO 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 signalwhere the frequency and period (typicallyare both constantbut the length of the half-periods changes. PWM signals are used for controlling electromechanicaloptical and other devicesFor examplethe servo motors known from modeling use a PWM signal of 50 Hz and have a high half-period of to 2 ms.+A modulação de largura de impulso (PWM) é um tipo de sinalem que a frequência e período são (tipicamenteambos constantesmas o comprimento do meio período variaOs sinais PWM são usados para controlar dispositivos electro-mecânicosópticos e outrasPor exemploos servomotores usados em modelação usam um sinal PWM de 50 Hz e têm um elevada meio-período de 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.
pt/avr/timers.1448991201.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0