Pages: [1] 2   Go Down
Author Topic: WatchDog  (Read 3080 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Edison Member
*
Karma: 8
Posts: 1040
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quiero poner un watchdog para que cuando algún proceso del programa tarde mas tiempo de la cuenta se resetee el micro. Estoy usando un Duemilanove con un Atmega168, con este codigo pasado el tiempo del watchdog (8 segundos), el led del pin 13 se queda parpadeando de forma muy rápida pero no resetea el programa. Podéis probarlo con un atmega328 para ver si este es el problema.

Code:
#include <avr/wdt.h>

void setup()   { 
  wdt_disable(); 
  Serial.begin(9600);       
  wdt_enable(WDTO_8S);
}

void loop()                     
{
Serial.println("Test");
delay(10000);
wdt_reset();
}


Saludos.
Logged

Trabajando en ...

    * Control Domotico (En montaje ...)
    http://casitadomotica.blogspot.com/
 

[url=https://bitbucket.org/fmalpartida

0
Offline Offline
Edison Member
*
Karma: 8
Posts: 1040
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Me puedo imaginar que el tema esta en el bootloader que tengo metido.
Logged

Trabajando en ...

    * Control Domotico (En montaje ...)
    http://casitadomotica.blogspot.com/
 

[url=https://bitbucket.org/fmalpartida

0
Offline Offline
Edison Member
*
Karma: 8
Posts: 1040
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pues he probado a meter otra versión de bootloader y hace lo mismo, cuando llega el tiempo que tienes puesto en el watchdog empieza a parpadear el led del pin 13 de forma muy rápida.

Saludos.
Logged

Trabajando en ...

    * Control Domotico (En montaje ...)
    http://casitadomotica.blogspot.com/
 

[url=https://bitbucket.org/fmalpartida

Madriz
Offline Offline
Full Member
***
Karma: 0
Posts: 176
Glober Arduiner
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Por lo visto es un problema del bootloader, el de ladyada tiene este problema resuelto

http://www.ladyada.net/library/arduino/bootloader.html


http://code.google.com/p/arduino/issues/detail?id=181
« Last Edit: July 22, 2011, 05:39:08 am by aero_yo » Logged

0
Offline Offline
Edison Member
*
Karma: 8
Posts: 1040
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Voy a probar a cargar este bootloader y te cuento.

Gracias.
Logged

Trabajando en ...

    * Control Domotico (En montaje ...)
    http://casitadomotica.blogspot.com/
 

[url=https://bitbucket.org/fmalpartida

Madriz
Offline Offline
Full Member
***
Karma: 0
Posts: 176
Glober Arduiner
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

SE me ha ocurrido otra solución leyendo otro hilo del foro, programar el arduino sin bootloader.

Evitas el problema del bootloader en el reset y éste es más rápido.

Hola

Con esos programadores haces lo mismo que siempre, sigues usando el ide del arduino y cargas el programa en el arduino pero con una ventaja, no cargas el bootloader (parte de programa para que puedas programar los arduinos desde el usb) y consumes menos memoria, aparte que cargas mas rapido la compilacion en el arduino.

Eso no quita cuando quieras, vuelvas a cargar el bootloader y vuelvas a usar el arduino programandolo por el usb.

Ventajas:
Rapidez y economia de ram.
Cargas bootloaders en chips Atmel virgenes.
Cargas el programa mas rapido.

Desventajas:
no puedes programar el arduino por usb ya que le quitas el bootloader pero puedes cargar el bootloader siempre que quieras, no es irreversible.

Yo, ultimamente, estoy cargando todos los pde a traves del usbtiny, ya no uso el bootloader del arduino salvo contadas ocasiones.

Un saludo

PD: si vas a usarlo, y necesitas ayuda dentro de mis posibilidades, comentalo en el foro, solo hay un detalle, es que cuando cargas los pde a traves del usbtiny hay que cambiar un fichero de configuracion:

  La solucion esta en editar un fichero de texto que se encuentra (en el caso de usar windows) en:

c:\Documents and Settings\<USERNAME>\Application Data\Arduino\preferences.txt

En mi caso:
c:\Documents and Settings\administrador\datos de programa\Arduino\preferences.txt

ese fichero hay que editarlo y cambiar la linea de texto que dice:

 upload.using=bootloader

por este otro:

upload.using=usbtinyisp
Logged

0
Offline Offline
Edison Member
*
Karma: 8
Posts: 1040
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Esta solución esta bien para ahorrarte el bootloader, pero no es lo que busco. La historia es saber como hacer un reset cuando el programa se queda frito en algún sitio.
Por cierto de donde has sacado aero_yo lo del usbtiny?

Saludos.
Logged

Trabajando en ...

    * Control Domotico (En montaje ...)
    http://casitadomotica.blogspot.com/
 

[url=https://bitbucket.org/fmalpartida

Madriz
Offline Offline
Full Member
***
Karma: 0
Posts: 176
Glober Arduiner
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

de aquí:
http://arduino.cc/forum/index.php/topic,66375.msg497039.html

El problema del reset es el bootloader, con lo que has puesto antes debería hacerlo, pero se queda pillado en la recarga del bootloader al hacer el primer reset, sin bootloader no hay problema.


Según esto:
http://www.nongnu.org/avr-libc/user-manual/group__avr__watchdog.html
 entiendo que cada vez que haces reset el Watchdog se reinicia con el valor más bajo (15ms) con lo que no da tiempo a completar la ejecución del código del bootloader.
Logged

0
Offline Offline
Edison Member
*
Karma: 8
Posts: 1040
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Según esto:
http://www.nongnu.org/avr-libc/user-manual/group__avr__watchdog.html
 entiendo que cada vez que haces reset el Watchdog se reinicia con el valor más bajo (15ms) con lo que no da tiempo a completar la ejecución del código del bootloader.

He probado ha subir el tiempo hasta 8 seg que es el maximo y hace lo mismo, se queda frito.

Voy a ver si puedo cargarlo sin bootloader, porque no tengo apaños.

Saludos.
Logged

Trabajando en ...

    * Control Domotico (En montaje ...)
    http://casitadomotica.blogspot.com/
 

[url=https://bitbucket.org/fmalpartida

Madriz
Offline Offline
Full Member
***
Karma: 0
Posts: 176
Glober Arduiner
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

  da igual que pongas 8s, porque cuando se resetea vuelve a 15ms en el bootloader por defecto, y no le da tiempo a leer la orden de volver a 8s, que va después del boot.

Suerte y ya me contarás porque yo también quiero implementarlo en un proyecto pero no tengo el programador isp aún.
Logged

0
Offline Offline
Edison Member
*
Karma: 8
Posts: 1040
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

No lo sabia que por defecto son 15ms.
Saludos.
Logged

Trabajando en ...

    * Control Domotico (En montaje ...)
    http://casitadomotica.blogspot.com/
 

[url=https://bitbucket.org/fmalpartida

0
Offline Offline
Edison Member
*
Karma: 17
Posts: 1407
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

como ha terminado esto?

tengo un proyecto en el que me vendria genial. Es un medidor electrico que sube los datos a internet cada 10segundos, el problema es que a veces (pueden pasar dias que va todo OK) se queda colgado y no reconoce la conexión a internet.

me interesaria alguna forma que cada "1 hora" se resetee el arduino este ejecutando el codigo en el punto que sea.

se puede hacer esto con lo que estas investigando tu flico??

gracias
Logged

* Si preguntas, pon el código de tu programa, hace mucho mas fácil ayudarte. Y me ahorro un mensaje pidiendo que lo hagas.
* Si consigues solucionar tu problema, dedica unos minutos a explicar en tu post como lo conseguiste para beneficio de todos.
* Cambia el 'Subject' de tu hilo y añade 'SOLUCIONADO' cuando hayas llegado a una solución al problema que planteaste.
* Utiliza un 'Subject' para tu hilo que explique de que va el hilo.
Si estas empezando:
* Comienza a usar Arduino
* Guías de iniciación a Arduino
* Ejemplos
* Referencia del Lenguaje
* Conceptos básicos
Guia de usuario de arduino
Tutoriales en Ingles
Si necesitas que alguien te escriba el código: http://www.freelancer.com/  o esta  http://www.guru.com/

Madriz
Offline Offline
Full Member
***
Karma: 0
Posts: 176
Glober Arduiner
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

El tiempo máximo es de 8s, si puedes cambiar esos 10 segundos a 8 y le da tiempo a ejecutar todo el código de conexión en ese intervalo igual te puede servir.

Podrías esquivar esta limitación activando el wtd después de conectado, pero te la juegas a que si hay un cuelgue durante la conexión no entre el reset.
« Last Edit: July 31, 2011, 03:07:28 pm by aero_yo » Logged

0
Offline Offline
Edison Member
*
Karma: 17
Posts: 1407
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

en realidad los 10 segundos son porque tengo una condicion if que hace que se ejecute cada 10 segundos. es decir, el bucle loop esta todo el rato dando vueltas sin problemas.
en cuanto a subir los datos, tarda 2 segundos en llamar a la web para subir los datos.

dicho esto, me valdria el watchdog para resetear el arduino cada 1 hora ?
en tal caso, se define el watchdog al principio y el ya se encarga de ejecutar el codigo de reset cuando se cumpla la hora??

muchas gracias pero es que lo del watchdog es nuevo, pero estoy leyendo para intentar entenderlo.

edit...

este link lo explica facilito y creo que ya lo tengo claro, voy a aplicarlo en mi codigo a ver que tal.
http://blog.bricogeek.com/noticias/arduino/como-utilizar-watchdog-con-arduino/

edit2...

mierda no habia visto que hay que cambiarle el bootloader !!
Esto no lo he hecho nunca y no tengo un programador externo, asi que mi gozo en un pozo!!! que rabia.
tendre que hacerme con un programador externo de esos y probar.
« Last Edit: July 31, 2011, 03:57:45 pm by Sergegsx » Logged

* Si preguntas, pon el código de tu programa, hace mucho mas fácil ayudarte. Y me ahorro un mensaje pidiendo que lo hagas.
* Si consigues solucionar tu problema, dedica unos minutos a explicar en tu post como lo conseguiste para beneficio de todos.
* Cambia el 'Subject' de tu hilo y añade 'SOLUCIONADO' cuando hayas llegado a una solución al problema que planteaste.
* Utiliza un 'Subject' para tu hilo que explique de que va el hilo.
Si estas empezando:
* Comienza a usar Arduino
* Guías de iniciación a Arduino
* Ejemplos
* Referencia del Lenguaje
* Conceptos básicos
Guia de usuario de arduino
Tutoriales en Ingles
Si necesitas que alguien te escriba el código: http://www.freelancer.com/  o esta  http://www.guru.com/

Las Palmas - España
Offline Offline
Full Member
***
Karma: 0
Posts: 151
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

No hace falta que compres un grabador, solo compra otro atmega y con el que tienes ahora puedes programarlo por ISP, cargando el ejemplo que viene en el IDE llamado ArduinoISP, tienes mas info aqui:

http://arduino.cc/es/Tutorial/ArduinoISP
Logged

Si quieres ser mas positivo....pierde un electrón......

Pages: [1] 2   Go Up
Jump to: