Kendyho Watchdog: Porovnání verzí

Z HKfree wiki
Skočit na navigaci Skočit na vyhledávání
Řádek 46: Řádek 46:
 
----
 
----
  
'''Připojení na LPT port'''
+
'''Připojení na LPT port'''  
 +
 
 +
Piny 25 => GND  14 => AutoFeed
 
Ještě sem pak dopíšu zbytek
 
Ještě sem pak dopíšu zbytek
  
<nowiki>
+
[http://igw.hkfree.org/navody/watchdog/wdlpt.c.html zdrojovy kod]
cat wdlpt.c
 
 
 
#include <stdio.h>
 
#include <stdlib.h>
 
#include <asm/io.h>
 
#include <signal.h>
 
 
 
#define BASEPORT 0x378
 
 
 
static int end;
 
 
 
static void endme(int dummy)
 
{
 
    end=1;
 
}
 
 
 
int main(int argc, char **argv) {
 
 
 
    if (ioperm(BASEPORT, 3, 1)) {
 
        // ask for permissions to access the parallel port
 
        // YOU MUST BE ROOT TO ASK FOR THIS SORT OF PERMISSION, so
 
        //    don't forget to 'su' yourself ;-)
 
        // usage of ioperm: BASEPORT ... base address we want to use
 
        //             3 ... the next 3 bytes
 
        //             1 ... we want the permission
 
        perror("ioperm open");
 
        exit(1);
 
    }
 
 
 
    signal(SIGINT, endme);
 
 
 
    outb(0, BASEPORT + 2); // set to output mode
 
 
 
    int num = 1;
 
    while (num-- > 0) {  // adjust usleep if you want
 
        sleep(1);
 
        outb(0, BASEPORT + 2);
 
        sleep(1);
 
        outb(2, BASEPORT + 2);
 
    }
 
 
 
    freeperm(); // tell the system we do not use the port anymore
 
 
 
    exit(0);
 
}
 
 
 
int freeperm() {
 
    if (ioperm(BASEPORT, 3, 0)) {
 
        // tell the system we do not use the port anymore
 
        // usage of ioperm: BASEPORT ... base address we want to use
 
 
 
        //                                      3 ... the next 3 bytes
 
        //                                      0 ... free the permission
 
        perror("ioperm close");
 
    }
 
}</nowiki>
 
  
 
Prelozit gcc wdlpt.c -o wdlpt
 
Prelozit gcc wdlpt.c -o wdlpt
 
'''''Spustit''''' nohup bash -c "while true; do /addr/wdlpt; sleep 10s; done" &
 
'''''Spustit''''' nohup bash -c "while true; do /addr/wdlpt; sleep 10s; done" &

Verze z 23. 2. 2005, 16:18

Resetator.jpg

Schema je taky tady. Naklady na vyrobu jednoho jsou minimalni (do 100 Kc i s kabelem). Zarizeni na schematu se pripojuje na seriovy port, druhy "drat" na reset piny desky a treti je napajeni 5V. Obsluhuje ho maly demonek. Funguje tak, ze kdyz vytuhne router, tak do 5 minut se stroj pomoci tohoto udelatka vyresetuje. Uspesne odzkouseno (a je ted funkcni) toto zapojeni na AP Spar a na nasem hlavnim pocitaci ORIONu.

Natavení v linuxu:
Spustit

nohup bash -c "while true; do echo watchdog > /dev/ttyS0; sleep 60s; done" &
  • nohup - zpusobi, ze program zustane bezet i po zavreni konzole
  • bash - interpreter skriptu
  • watchdog - retezec, ktery je odesilan na seriovy port (muze byt misto watchdog treba i text "ferda_mravenec")
  • /dev/ttyS0 - je port na ktery je retezec posilan (Linux značí porty takto: COM1=ttyS0, COM2=ttyS1,...)
  • 60s - je doba mezi jednotlivymy vysilanimi.

Tuto radku staci zapsat do startovaciho skriptu routeru.

-- Kendy

PS: Kdo by mel nejasnosti tak at se tu na newsech zepta. Dovysvetlim.

Pinouts

74HC14
7414.jpg
74HC4017
4017.gif
(description)
BC547 (-,A,B,C)
Bc547.png

Jak to může vypadat

Foto

Já (pavkriz) jsem postavil watchdoga do Stěžer na kousku univerzálního plošnáku co jsem doma našel (běžně stojí asi 100Kč formát asi jako papír A6, na watchdog stačí daleko menší, ale koupit lze jen tento formát pokud vím).

Napájení mám udělané s použitím starého konektoru od harddisku, resp. od CDROMky na který jsem naletoval kablíky vedoucí k watchdogu a zapojil ho na napájecí konektor ze zdroje.

Pozor taky na to, že na "polaritě" kablíku co potáhnete k resetu záleží (běžně když je tam tlačítko tak nikoliv) - tudíž vyzkoušejte.

Takže celý můj watchdog je venku na konektoru který je zapojený do COMu a do case vedou celkem 4 vodiče - 2x napájení a 2x reset.

IO mám zapojené do patic (obyč) - pro případ ze bych nějaký při manipulaci prorazil statickou elekřinou, aby bylo snadné jej vyměnit.

Navíc jsem zrobil brobátko bastl-verzi démonka pro obsluhu watchdoga v C-čku: watchdog-r1.tgz (místo původního skriptu nohup....)

PS: Ty LED diody navíc jsou hlavně na ozdobu a jsou připojeny na některé výstupy 4017ky (přes odpory pochopitelně). Slouží i k indikaci běhu watchdogu.




Připojení na LPT port

Piny 25 => GND 14 => AutoFeed Ještě sem pak dopíšu zbytek

zdrojovy kod

Prelozit gcc wdlpt.c -o wdlpt Spustit nohup bash -c "while true; do /addr/wdlpt; sleep 10s; done" &