LusoRobótica - Robótica em Português

Sistemas específicos => Arduino / AVR => Tópico iniciado por: helivelton.gomes em 04 de Setembro de 2011, 04:58

Título: função para resetar
Enviado por: helivelton.gomes em 04 de Setembro de 2011, 04:58
Existe alguma função para resetar o arduino sem precisar apertar o botão reset, só por meio do código?

Vlw...
Título: Re: função para resetar
Enviado por: senso em 04 de Setembro de 2011, 13:07
Regra geral nunca se quer fazer um reset, por isso qual a razão de quereres fazer um reset por software?
Título: Re: função para resetar
Enviado por: GnGz em 04 de Setembro de 2011, 13:31
Existe duas maneiras :

-A do jump:



Código: [Seleccione]
asm volatile ("jmp 0x0000");

O Problema desta é que os registos,váriveis,etc não resetam, fazendo apenas que o código volte ao inicio.

A do Watchodog:

Primeiro tes que fazer include de wdt.h:
Código: [Seleccione]
#include <avr/wdt.h>


...

void forceHardReset()
{
  cli(); // disable interrupts
  wdt_enable(WDTO_15MS); // enable watchdog
  while(1); // wait for watchdog to reset processor
}

Cumprimentos,
Título: Re: função para resetar
Enviado por: senso em 04 de Setembro de 2011, 13:39
O watchdog está desligado nos fuses dos Arduinos.
Título: Re: função para resetar
Enviado por: GnGz em 04 de Setembro de 2011, 14:07
Não sabia , okei. Então só dá a forma do Jump.
Título: Re: função para resetar
Enviado por: microbyte em 04 de Setembro de 2011, 15:32
Ou por hardware... Levar o pino reset a LOW, que é o que faz o switch.
Título: Re: função para resetar
Enviado por: helivelton.gomes em 04 de Setembro de 2011, 15:48
Qual o pino do reset?
Título: Re: função para resetar
Enviado por: microbyte em 04 de Setembro de 2011, 15:53
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fleandron.files.wordpress.com%2F2010%2F09%2Farduinounofront.jpg&hash=f2711b753b122e3b8af8b52837fea8e1c9322c04)

Em baixo, nos pinos de "POWER". O mais à esquerda ;)