Autor Tema: Habilitar el Watchdog en WinAVR para un ATMEGA88  (Leído 5351 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Habilitar el Watchdog en WinAVR para un ATMEGA88
« en: 29 de Enero de 2007, 05:51:33 »
Voy a buscar por esos mundos de diós cómo habilitar el Watchdog en WinAVR para un ATMEGA88.

Pero por si acaso algunos de ustedes, amables contertulios, tiene idea de cómo usar el Watchdog usando el WinAVR C y no tiene inconveniente en hacerme partícipe de ello se lo agradecería infinito.

Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Habilitar el Watchdog en WinAVR para un ATMEGA88
« Respuesta #1 en: 29 de Enero de 2007, 08:10:55 »
Solucionado.

1º.- poner el include ... #include <avr/wdt.h> para que nuestro ATMEL sepa de qué estamos hablando.
2º.- en el main habilitar el Watchdog con ... wdt_enable(timeout); donde timeout es el tiempo que deseamos que dure una vuelta de Watchdog antes de resetear. timeout puede tener los valores: WDTO_15MS, WDTO_30MS, WDTO_60MS, WDTO_120MS, WDTO_250MS,  WDTO_500MS,WDTO_1S y WDTO_2S, los primeros en milisegundos y los dos últimos en segundos completos.
3º.- dentro de nuestro código debemos resetear el Wachdog ANTES de que le dé tiempo a completar un ciclo del timeout definido anterioremente. Reseteamos con wdt_reset();

Funciona de maravilla.  :mrgreen:
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania


Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Habilitar el Watchdog en WinAVR para un ATMEGA88
« Respuesta #3 en: 29 de Enero de 2007, 17:23:22 »
Manolito, en la primera Kedada a la que fui, en la que te conocí, y me enamoré de tí .... ¿recuerdas cachurrito mio? ... llevaba una placa con un ATMEL. No es una afición nueva, antes de los PIC's yo ya tenía una vida anterior.  :D :D :D
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Habilitar el Watchdog en WinAVR para un ATMEGA88
« Respuesta #4 en: 29 de Enero de 2007, 18:23:42 »
Sí, lo recuerdo. ¿Cómo iba a olvidar aquel primer encuentro?  :g)

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Habilitar el Watchdog en WinAVR para un ATMEGA88
« Respuesta #5 en: 29 de Enero de 2007, 21:09:06 »
jjjajaja  :D

no me hagan borrarles el tema por andar platicando sus intimidades  :mrgreen: :D

Desconectado micro_pepe

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3206
Re: Habilitar el Watchdog en WinAVR para un ATMEGA88
« Respuesta #6 en: 16 de Mayo de 2012, 13:15:17 »
Tiene algún tiempo el hilo jeje, bueno, tengo un programilla con un bucle infinito en el que reseteo el perro y todo funciona bién, pero cuando pongo un retardo "_delay_ms(35);" el micro se resetea.

Tengo puesto un timeout de 15ms "wdt_enable(WDTO_15MS);" y la directiva "#include <avr/wdt.h>", si pongo un delay menor de 15mseg, no se resetea.

He abierto la libreria de delay, y no veo por ningún sitio el "wdt_reset();", supongo que ese es el problema, pero me extraña que el WinAvr no contemple el resetearlo en los delay, ¿Tendré que modificar la libreria, o hay otra forma?

Saludos.
Se obtiene más en dos meses interesandose por los demás, que en dos años tratando de que los demás se interesen por ti.

新年快乐     的好奇心的猫死亡

Desconectado Felixls

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 300
Re: Habilitar el Watchdog en WinAVR para un ATMEGA88
« Respuesta #7 en: 16 de Mayo de 2012, 13:23:44 »
Hola micro_pepe, si el delay no necesita ser preciso puedes hacer esto:


for(int i=0; i<35; i++)
{
  _delay_ms(1);
  wdt_reset();
}

El delay internamente no resetea el perro. Ah, y cual es el cristal que estás usando?, digo porque _delay_ms(35) puede que no funcione como esperabas depende del oscilador.

saludos

Desconectado micro_pepe

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3206
Re: Habilitar el Watchdog en WinAVR para un ATMEGA88
« Respuesta #8 en: 16 de Mayo de 2012, 13:37:52 »
Hola micro_pepe, si el delay no necesita ser preciso puedes hacer esto:

for(int i=0; i<35; i++)
{
  _delay_ms(1);
  wdt_reset();
}


Con eso me sobra, no necesito precisión.


El delay internamente no resetea el perro. Ah, y cual es el cristal que estás usando?, digo porque _delay_ms(35) puede que no funcione como esperabas depende del oscilador.

saludos

Pues uso uno de 20MHz.

Entonces para retardos precisos será mejor usar ensamblador, no?

1Saludo.
Se obtiene más en dos meses interesandose por los demás, que en dos años tratando de que los demás se interesen por ti.

新年快乐     的好奇心的猫死亡

Desconectado Felixls

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 300
Re: Habilitar el Watchdog en WinAVR para un ATMEGA88
« Respuesta #9 en: 16 de Mayo de 2012, 14:48:20 »
Entonces para retardos precisos será mejor usar ensamblador, no?

La función _delay_ms hace un retardo preciso, pero si necesitas hacer el reseteo durante dicho lapso vas a tener que implementar algo en ASM o utilizar un timer tal vez.

saludos.


 

anything