O atraso de tempo em um microprocessador refere -se a uma pausa deliberada ou período de espera introduzido na execução de um programa. Isso é conseguido empregando técnicas que consomem uma quantidade específica de tempo de processamento sem executar nenhum outro cálculo significativo. É usado por vários motivos, principalmente para sincronizar eventos ou controlar o tempo de dispositivos externos.
Existem várias maneiras de implementar atrasos no tempo em um microprocessador:
*
Loops de software: O método mais simples. Um loop contendo uma série de instruções é executado repetidamente. O atraso total depende do número de instruções e da velocidade do relógio do microprocessador. Essa abordagem é imprecisa porque é afetada por fatores como manuseio de interrupções e carga do processador. Um exemplo simples de montagem pode parecer:
`` `Assembléia
ATRASO:
DEC R16; Diminuir registro de contador
Atraso BRNE; Ramo se não for igual a zero (continue o loop)
Rjmp em seguida; Salte para a próxima instrução
`` `
*
Timers/contadores: Os microprocessadores geralmente têm temporizadores ou contadores embutidos. Esses periféricos contam ciclos de relógio ou eventos externos. O programa pode inicializar um cronômetro para um valor específico e, em seguida, aguarde até que ele desista para zero. Isso geralmente é mais preciso e menos suscetível a variações na carga do processador em comparação com os loops de software.
*
relógio em tempo real (RTC): Por atrasos mais longos, um RTC (que normalmente é executado independentemente do processador principal) pode ser usado para fornecer uma referência precisa de tempo. O programa pode verificar o RTC para determinar quando o atraso desejado foi decorrido.
*
Espere estados: Eles são adicionados aos ciclos de acesso à memória para sincronizar com dispositivos de memória mais lentos. Embora não seja diretamente um mecanismo de atraso *, os estados de espera aumentam o tempo total gasto no acesso à memória, que pode ser usado como parte de um esquema de tempo (embora não seja ideal e deva ser usado com cautela).
fatores que afetam a precisão: *
Velocidade do relógio: A frequência do relógio afeta diretamente a duração dos loops de software e contagens de timer. Variações na velocidade do relógio afetarão a precisão do atraso.
*
Interrupções: As rotinas de serviço de interrupção (ISRs) podem interromper a execução de um loop de atraso, tornando -o mais longo do que o esperado.
*
Carga do processador: Se o processador estiver ocupado com outras tarefas, o atraso poderá ser afetado.
Por que usar atrasos no tempo? *
Sincronização: Coordenando ações com hardware externo (por exemplo, LEDs controlando, sensores, motores).
*
Debouncing: Prevendo sinais espúrios de interruptores ou botões.
*
Limitação da taxa: Controlar a frequência dos eventos (por exemplo, limitar a velocidade da transmissão de dados).
*
Interface do usuário: Criando pausas entre ações em uma interface do usuário.
A escolha do melhor método depende dos requisitos do aplicativo para precisão, duração e consumo de recursos. Para atrasos curtos, os loops de software podem ser suficientes. Para atrasos mais longos ou mais precisos, os temporizadores ou RTCs são preferidos.