Stránka 1 z 1

Watchdog pro MCU

Napsal: 29 črc 2015, 17:20
od kolaloka139
Ahoj všem, potřebuji zprovoznit externí watchdog pro mcu. Vstupem by měl být pin z mcu, na kterém budou pulzy. Po watchdogu chci aby zresetoval, když bude na vstupu jak log.0 i log.1 déle něž časová prodleva. Může se jednat o speciální IO nebo o nějaký chytrý čítač. Hlavní podmínkou je jednoduchost zapojení, věcí vedlejší je nastavení časové prodlevy.

Udělal jsem si watchdog z 555, funguje parádně ovšem detekuje "zamrznutí" mcu pouze v jednom logickém stavu WDI pinu.

Pokud máte někdo nějaký nápad, tak sem s ním. Díky moc!

Napsal: 29 črc 2015, 17:47
od termit256
Obvodu pro tohle se dala mraky
https://www.google.cz/webhp?hl=cs&tab=T ... atchdog+ic
vyber si co se ti nejvic libi

Napsal: 29 črc 2015, 17:48
od hakamusai
Lze to řešit i tak,že WDT bude kontrolovat pouze běh MCU a EXT vstup přerušení bude řešit délku pulzu -při změně dojde k resetování counteru,jinak timerem při přerušení inkrementace counteru.Jde to řešit více způsoby -tohle jen první myšlenka.

Napsal: 29 črc 2015, 19:40
od frpr666
Co tak připojit jeden 'externí' MCU, který má interní watchdog (např. 12f508, nebo attiny13a) ?
Hardwerově ošetřit tak, aby když se zacyklí 'externí' MCU bude podřízený taky resetován (rezistor).
Program by mohl být něco takového:

Kód: Vybrat vše

setup()
{
  delay(100); // reset
  setup_io();
  setup_wdt();
}

uint32_t timeout;
uint8_t helpflag;

loop()
{
  for(;;) // forever
  {
    helpflag = 0;

    timeout = 1000; // cekani na 0
    do
    {
      if(InputIsZero)
      {
        helpflag++;
        break;
      }
    }
    while(--timeout != 0);

    timeout = 1000; // cekani na 1
    do
    {
      if(InputIsOne)
      {
        helpflag++;
        break;
      }
    }
    while(--timeout != 0);

    if(helpflag == 2) // proběhlo ?
    {
      clrwdt();
    }
  }
}