[DUVIDA] Existe diferença no Watchdog acinado via Fusebits do acionado via Sketch ?

Olá Galera,

   Como andei alardeando por aqui,  estou em busca de colocar o arduino pra funcionar em 3.3v, e já vi varios modelos do que é chamado ARDUINO MINIMAL que se trata do arduino usando somente o CI + uma bateria.

   Mas é dificilimo de achar modelos com clock externo de 8Mhz em 3.3v,  para isso o jeito foi partir pra estudar os Fuse bits para programação do AVR.

   Bem, agora a duvida:   Quando cheguei entre as configurações me deparei com essa opção:

Watch-dog Timer always on; [WDTON=0]

    Ai fiquei com uma duvida:

    Qual a diferença entre acionar o Watchdog via fusebits e aciona-lo atraves de comando no sketch tipo

#include <avr/wdt.h>

   Qual a diferença entre eles ?????????????

Exibições: 411

Responder esta

Respostas a este tópico

OI WD, bom dia,

como não conheço muito bem o "bootloader"do arduino, vou comentar aqui considerando alguma suposição.

Primeiro vamos rever os bits do WDT sem considerar o bootloader.

O WDT é controlado primeiramente pelo bit WDTON ".

Este bit é "setado" somente via "FUSE". ou seja, somente em tempo de carga do code.

Não pode ser modificado em "run time".

Com ele "setado" (LOW)    (WDTON Fuse set to “0” means programmed and “1” means unprogrammed.),

você pode então modificar o   Watchdog Timer Control Register e os WDE e WDIE para agir conforme tabela abaixo.

     Watchdog Timer Configuration

     WDTON(1)   WDE   WDIE    Mode                             Action on Time-out
        1                0        0          Stopped                                  None
        1                0        1          Interrupt Mode                         Interrupt
        1                1        0          System Reset Mode                 Reset
        1                1        1          Inter/Sys Reset Mode               Interrupt, then go to System Reset Mode
        0                x        x          System Reset Mode Reset

Ok, agora como disse no inicio, não posso afirmar, mas simplesmente supor,

que o bootloader carrega o Fuse deixando o WDT enable, e a biblioteca  qvr/wdt.h  permite que

você "gerencie" os outros bits conforme as informações neste link

http://www.nongnu.org/avr-libc/user-manual/group__avr__watchdog.htm...

Rui

Ps:  link interessante sobre WDT:  http://forum.arduino.cc/index.php?topic=63651.0

            tem um PDF sobre WDT.

Rui,

    Obrigadasso pela resposta amigo,  tô começando a entender os fuse bits e a coisa não é tao simples pois não tem lá muita gente que se importe com isso.

    

    Com relação ao watchdog a maior duvida que fiquei foi que ativando ele via soft, você tem a liberdade de colocar o tempo para ativação, e a forma de uso dele é fazendo wdtreset em certas partes do sketch,  dai quanto trava e o reset não é ativado então o watchdog entra em ação.

    No cado do watchdog via fuse não vai pra o sketch,  ai fica a duvida como ele age,   qual o tempo para trabalho dele, onde configurar isso ?

Oi WD,

Se você usar a IDE do arduino, pode configurar o tempo do WDT assim: wdt_enable(WDTO_500MS); 

No caso de usar sketck, acho que não tem a opção FUSE. Correto?

Se é o que estou entendendo, você não está usando o Arduino IDE, e sim 

usando outro software para programar o Atemga e usando um C "normal".

Então neste C você configura os registadores WDE,  WDIE conforme aquela tabela

acima e o Watchdog Timer com o tempo que você quer que o  WDT espere antes de tomar uma ação.

Qual soft você está usando para programar o Atmega?

 

Rui

AVR Tutorial Fuses : http://www.ladyada.net/learn/avr/fuses.html

Reading and writing fuses on ATmega328P  ;

                           http://heliosoph.mit-links.info/arduinoisp-reading-writing-fuses-at...

Fuse calculator  :  http://www.engbedded.com/fusecalc

Bootloader burning  :  https://www.arduino.cc/en/Tutorial/ArduinoToBreadboard

Rui,

   Na verdade eu estou estudando sim a IDE do arduino, mas de forma mais profunda,  verificando as diferenças na constituição,  nos fuses.

   O que deu pra notar de forma bem legal, é que praticamente qualquer atmega pode ser utilizado com o arduino, desde que você saiba ajustar seus parametros,  mas não é esse meu foco.

   Meu foco é criar 2 peças na protoboard,  a primeira é uma montagem com atmega328 DIP rodando em 3.3v a 8Mhz COM CRYSTAL externo de refencia,  a segunda é fazer a mesma coisa só que com um ATMEGA328 SMD.

   Jä tô com uma boa base de conhecimento,  vou tentar agora fazer na pratica.

   Até agora trabalhar com a versão DIP não tem me trazido problemas,  mas a versão SMD é chata pra caramba,  quando trabalho em 5V nunca tenho problemas,  mas em 3.3v tô apanhando.

    O Jeito é continuar estudando.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço