Relekortti


Linux systeemiohjelmointikurssi, projekti

Työn kuvaus

Työn tarkoituksena on suunnitella ja toteuttaa releohjain ja Linux- ajuri. Laitteessa on 8 toisistaan riippumatonta relettä (on-off tai vaihto) joiden tila voidaan asettaa ohjelmallisesti. Laite liitetään PC:n rinnakkaisporttiin.

Toteutus

Laite

Kytkentä     Testilaite

Ohjain suunnitellaan siten, ettei käyttö ei häiritse normaalia tulostusta : laitteen ollessa kytkettynä tulostinajuri (lp) luulee tulostimen olevan irti / pois päältä / virhetilanteessa. Laitteen oma ajuri 'tunnistaa' ohjaimen eikä edes yritä ohjata tavallista tulostinta.

Ohjaimen logiikka toteutetaan yksinkertaisilla logiikkapiireillä ja testiversiossa releiden tilalla käytetään ledejä.
Ohjain tarvitsee erillisen 5V:n käyttöjännitteen logiikalle ja 5V/12V releiden ohjaukseen.
Kytkentä PC:n rinnakkaisporttiin toteutetaan 1-1 kaapelilla, jossa on kytkettynä data- linjat D7-D0, status- linjat S4-S0 ja control- linjat C2-C0.

Ohjaimelta voidaan lukea sinne viimeksi kirjoitettu tieto. Normaali SPP- rinnakkaisportti riittää laitteiston käyttämiseen.

Yhteen rinnakkaisporttiin voi kytkeä vain yhden rele- laitteen kerrallaan.

Ajuri

Laitteen ajuri toteutetaan kernel- modulina ja laitteen ohjaamista varten tehdään pieni komentorivipohjainen ja graafinen ohjelma.

Ajuri ei varaa rinnakkaisporttia koko ajaksi itselleen, vaan vapauttaa portin muiden laitteiden käyttöön ajaksi, jolloin releohjaimen tilaa ei muuteta. Releiden tilan muuttaminen tapahtuu kirjoittamalla 8- bittinen luku ohjainta vastaavaan device- tiedostoon (esim dev/rele0).
Laitetiedostojen major- numero on 100 ja minor- numero 0 - 2.

Ohjelmat

Laitteen ohjaamista varten suunnitellaan kaksi erillistä ohjelmaa, joiden avulla voidaan asettaa releiden haluttu tila.

Komentorivipohjainen ohjelma ottaa kaksi parametria, laitetiedoston ja 8- bittisen maskin jonka perusteella releiden tila asetetaan (1 : ON, 0 : OFF) :

setrele /dev/rele0 000100101

Bittimaskin oikeanpuoleisin pää vastaa datalinjaa D0 ja vasen datalinjaa D7.

Graafisessa käyttöliittymässä on 8 'kytkintä' joiden avulla releiden tila voidaan asettaa.

Käytettävä laite valitaan valikosta 'File->Device'. Valikossa on valittavissa ne laitteet jotka löytyvät ohjelmaa käynnistettäessä.

xsetrele xsetrele-menu
Graafinen käyttöliittymä (xsetrele)

Status

Testaus suoritettu : kernel 2.2.10 & 2.2.14, glibc 2.1.2, libc 5.4.46, gcc 2.95.2, GTK+ 1.2.2

Ajuri tunnistaa rinnakkaisportissa kiinni olevan laitteen.
Lähtöjen tilaa voi vaihtaa kirjoittamalla device- tiedostoon (/dev/rele[0-3]) tai tiedostoon /proc/rele/[0-3]/data,
esim echo -n " " > /dev/rele0
Laitteen status (kytketty / ei kytketty) voidaan lukea tiedostosta /proc/rele/[0-3]/status
Laitteen tilaa vaihtavat ohjelmat toimivat

Laite :

Ei häiritse lp- ajuria
Kaapelin irroittaminen tai liittäminen rinnakkaisporttiin ei aiheuta tilanmuutosta lähdöissä.
Ei voi olla samaan aikaan kytkettynä tulostimen kanssa.
Laitteeseen viimeksi kirjoitettu tieto voidaan lukea PC:lle.
Testiohjain on koottu vain koekytkentälevylle. Piirilevyn teko on suunnitteilla.

Ohjelmakoodi

Ajuri
rele.h
rele.c

Ohjelmat

Makefile
releutil.h
releutil.c
setrele.c
xsetrele.h
xsetrele.c

Download

Ajuri
Ohjelmat
Kytkentäkaavio
Kernel patch

Asennus

Tekijä

Isto Saarinen
<<Electronics
Päivitetty 14.01.2000