Biblioteca de Software de Watchdog Timer para FRDM-KL25Z

Biblioteca de GPIO

Olá caro leitor, tudo bem? Continuando com a série de artigos “Biblioteca de Software para a FRDM-KL25Z”, neste artigo trataremos sobre o Watchdog Timer. Será apresentado o conceito básico sobre Watchdog, usando o princípio de funcionamento do periférico na Freedom Board KL25Z. Por fim, oferecemos a biblioteca desenvolvida e uma aplicação para a demonstração.

 

Introdução Watchdog Timer

 

Watchdog vem do inglês "cão de guarda", sendo uma ferramenta que tem como objetivo o monitoramento do sistema. É uma ferramenta tanto de software como de hardware. O objetivo principal é monitorar o funcionamento do sistema. Esse monitoramento é feito por meio de um “Timer”, que precisa ser reiniciado periodicamente. Caso esse temporizador não seja reiniciado, o Watchdog “Reseta” o sistema.

 

Para implementar um bom algoritmo de Watchdog Timer, sugiro o artigo do “Felipe Lavrati” “Servindo Watchdog adequadamente”, onde ele apresenta a maneira correta de se desenvolver um bom Watchdog e também disponibiliza o código fonte de sua biblioteca.

 

Computer Operating Properly (COP) Watchdog

 

O COP é o periférico de Watchdog Timer que esta presente no microcontrolador do Freedom Board KL25Z. O COP funciona conforme qualquer outro Watchdog, uma vez ativado, o seu temporizador precisa ser reiniciado. Se a aplicação falhar em redefinir o “Timer” do COP, o mesmo força o microcontrolador reiniciar.

 

Toda vez que o microcontrolador é reiniciado, o valor do registrador “System Reset Status Register 0 (RCM_SRS0)” é alterado. Com isso é possível verificar se quem provocou o Reset foi o Watchdog. Na figura a seguir são apresentados os detalhes do registrador.

 

Detalhes do registrador System Reset Status Register 0 (RCM_SRS0)
Figura 1 - Detalhes do registrador System Reset Status Register 0 (RCM_SRS0)
Descrição do bit WDOG
Figura 2 - Descrição do bit WDOG

 

Para redefinir a contagem do temporizador do COP, e evitar que o microcontrolador seja reiniciado, é necessário escrever os valores 0x55 (85) e 0xAA (170) (nesta sequência) no registrador “Service COP Register (SIM_SRVCOP)”. A seguir é apresentada imagem detalhada do registrador.

 

Descrição do registrador Service COP Register (SIM_SRVCOP)
Figura 3 - Descrição do registrador Service COP Register (SIM_SRVCOP)

 

Configurando o COP Watchdog

 

Para ativar e configurar os parâmetros do "Computer Operating Properly", é utilizado o registrador “COP Control Register (SIM_COPC)”. Esse registrador possui os seguintes parâmetros para configurações:

  • COPT - COP Watchdog Timeout: Define o valor de temporizador;
  • COPCLKS - COP Clock Select: Seleciona a fonte de “Clock” do periférico;
  • COPW - COP Windowed Mode: Define o modo de operação do periférico.

 

A seguir temos uma imagem que detalha os parâmetros do registrador “COP Control Register (SIM_COPC)”.

 

Detalhes do registrado “COP Control Register (SIM_COPC)”
Figura 4 - Detalhes do registrado “COP Control Register (SIM_COPC)”
Descrição dos parâmetros do registrador “COP Control Register (SIM_COPC)”
Figura 5 - Descrição dos parâmetros do registrador “COP Control Register (SIM_COPC)”

 

O periférico COP Watchdog permite diferentes possibilidades de configurações, para atender requisitos de diversos tipos de aplicações. A figura a seguir traz todas as configurações disponíveis no microcontrolador:

 

Tabela com as opções de configurações do COP
Figura 6 - Tabela com as opções de configurações do COP

 

Biblioteca Desenvolvida

 

Código fonte:

 

Aplicação de Demonstração 

 

A aplicação de teste criada para utilizar a biblioteca desenvolvida é bem simples, consistindo em: algoritmo para piscar o LED vermelho, ativar o COP Watchdog e no “Loop Infinito” ficar incrementando um contador. Caso o valor da diretiva de compilação REFRESH_WHATDOG esteja com valor verdadeiro (REFRESH_WHATDOG > 0). O temporizador do Watchdog é reiniciado, assim evitando que o microcontrolador seja “Resetado”. Caso o valor da diretiva de compilação (REFRESH_WHATDOG = 0) seja falso, o microcontrolador será reiniciado periodicamente.

 

Nota: Para o funcionamento do Watchdog é necessário alterar o valor da macro "DISABLE_WDOG" para zero, que se encontra no arquivo "system_MKL25Z4.h", pois o registrador COP Control Register (SIM_COPC) só pode ser escrito uma única vez. Conforme é mostrado na figura a seguir:

 

 

Todos os bits neste registro podem ser gravados apenas uma vez após um reset.
Figura 7 - Todos os bits neste registro podem ser gravados apenas uma vez após um reset.

 

Código Fonte da Aplicação 

 

Conclusão 

 

Neste artigo apresentei mais um item da biblioteca de software para a Freedom Board KL25Z, utilizando o periférico Watchdog. O código fonte apresentado neste artigo esta disponível no Github. O Watchdog quando bem empregado, é uma ferramenta essencial para obter um sistema estável, protegendo que a aplicação fique presa em um estado indeterminado. E fica aqui o meu convite a você caro leitor, que se interessou pelo assunto, a contribuir com o projeto, testando e aperfeiçoando a biblioteca de software apresentada.

 

Saiba mais

 

Introdução aos sistemas embarcados e microcontroladores

Servindo Watchdog adequadamente

 

Referências

 

Watchdog timer for KL26

Reference Manual

Library-FRDM-KL25Z

Robolivre

 

Outros artigos da série

<< Biblioteca de Software de DMA para FRDM-KL25Z

NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Evandro Teixeira
Sou formado em Técnico em Mecatrônica pelo Colégio Salesiano Dom Bosco Americana - SP, Graduando em Engenharia Elétrica com Ênfase em Eletrônica pela UNISAL de Americana - SP. Atuando com desenvolvimento de hardware e software para sistema embarcado desde 2010. Experiência com microcontroladores de 8,16 e 32 bits. Atualmente trabalhando com desenvolvimento de equipamentos Eletromédicos.

1
Deixe um comentário

avatar
 
1 Comment threads
0 Thread replies
1 Followers
 
Most reacted comment
Hottest comment thread
1 Comment authors
Vinicius Kawakami Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Vinicius Kawakami
Membro
Vinicius Kawakami

Olá Evandro, acompanho os seus artigos sobre a FDRM-KL25Z e são sempre muito bem explicados. Obrigado por compartilhar seus conhecimentos!
Você tem intensão de criar alguma biblioteca para comunicação USB, principalmente para modo Host_CDC? Estou com dificuldade de implementar comunicação USB entre duas FRDM!