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();
}
}
}