– home / Fóruns / Módulo 5 / Bloco M5-42 / Bloco M5-42 | Questão 30

  • Autor
    Posts
  • Anônimo
    2019-11-18 até 00:00 #40003304891

    Seja o primeiro a fazer uma pergunta sobre esta questão.

    2019-12-04 até 00:00 #40003304892

    Olá,

    Quando se executa o código em alguns momentos quando se aperta o botão aparentemente acontece bounce, como tratar isso sendo que na ocorrência da interrupção não dá pra usar rotinas de tratamento de debounce visto que são momentos diferentes (várias ocorrências da mesma interrupção)?

    Grato,

    Marcos

    2019-12-05 até 00:00 #40003304893
    Citação de Marcos Tadeu de Brazio em 04/12/2019, 14:36

    Olá,

    Quando se executa o código em alguns momentos quando se aperta o botão aparentemente acontece bounce, como tratar isso sendo que na ocorrência da interrupção não dá pra usar rotinas de tratamento de debounce visto que são momentos diferentes (várias ocorrências da mesma interrupção)?

    Grato,

    Marcos

    Essa é uma excelente pergunta, solicitei auxilio do Professor Ricardo para contribuir com a resposta.

    1-) as oscilações de bounce costumam ser bastante rápidas. Se as instruções de tratamento levarem mais tempo para serem executadas do que o período de oscilação do bounce, isso não se torna um problema.

    2-) Se sua aplicação for de alta criticidade e ou RTOS (aplicações em real time), uma boa prática seria o seguinte:
    Sempre que a interrupção for chamada, a primeira instrução recomendada seria a “desabilitação” da mesma. Desta forma garantirá que qualquer evento de bounce não tenha influência no processo enquanto a interrupção está sendo tratada.
    Obs: evidentemente que uma instrução de “reabilitação” da interrupção se faz necessário logo após seu tratamento ou período que julgar necessário para implementação de sua lógica.

    3-) a previsibilidade do bounce deve ser feita pelo programador e eliminada quando julgar necessário. Um simples capacitor em paralelo com o botão dado como exemplo na pergunta, já minimizaria este probleminha.

    4-) Também vale destacar que botões eletromecânicos são utilizados em experimentos e projetos onde não se exige essa característica de “robustez”. Pois a interrupção externa, a qual faz parte do questionamento feito, pode ser acionada por qualquer sensor digital com controle de bounce. Ou mesmo por botões com tecnologias específicas, como um capacitivo, por exemplo.

    Enfim, percebe-se que cada caso é um caso e que as especificidades do projeto é que determinarão o melhor caminho técnico a seguir.

    Grande abraço.

    2020-05-19 até 00:00 #40003280496

    Bloco M5-42 | Questão 30

  • Você precisa estar Conectado(a) para Responder a este Tópico.