RESET CPU

tretas:
Boas,

Gostava de saber se existe alguma forma de resetar o arduino sem ser através do watchdog

if (ligacao_net_OK == true)

{
      wdt_reset();
    }




Estou a usar esse codigo para resetar o arduino mas não sei se é o mais eficiente para o que eu quero fazer.

Cpts

Zé tretas

E o bootloader já aceita o watchdog? Há uns tempos atrás isso nem era possível.
Essa instrucão faz reset do wdt, não do chip. aliás, da forma que está o chip nunca fará reset. O que podes fazer é se houver um erro, crias o WDT com um valor pequeno, e colocas uma instrucão de delay logo a seguir superior ao tempo que tens.

Algo assim:

if (ligacao_net_OK == FALSE) 
     {
      wdt_enable(WDTO_15MS);
      delay(1000);
     }

Isto deve fazer o reset do chip.

HugoPT:

Gostava de saber se existe alguma forma de resetar o arduino sem ser através do watchdog

Sim apontando o programa para o vector de reset.No entanto a quem diga que nao se deve usar pois nao é garantido(nunca testei)

Isso faz reset ou apenas reinicia o programa deixando os estados como estavam?

Vi alguns posts à pressa acerca disso e não existem grandes solucões para isto:

http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=96822
http://www.avrfreaks.net/index.php?name=PNphpBB2&file=printview&t=65123
http://nongnu.org/avr-libc/user-manual/group__avr__watchdog.html

Também existem chips que fazem essa funcão... caso queiras algo profissional para isso. :slight_smile: