vähän io:ta koneeseen

Rakentelin 306-kirjasta io-kortin ISA-väylään, jolla saa 8 outtia ja 8 inputtia. Ehti rojekti vuoden oleen hyllylläkin, kun ei sattunut olemaan sopivia komponentteja myyjällä heti tarjota. Nyt se on kuitenkin valmis ja pitäs alkaa testailemaan, josko homma vaikka toimisi. Ideana on se, että kortin voi korjata jos se menee rikki: Noita kirjotinportteja jo muutama saatu rikki kuitenkin.
Fiksusti toteutettu IO tuossa kyllä on: inputit kilosen vastuksen takana (voisi kyllä olla zeneritkin kytketty..) ja output uln2803:lla siten, että saa ulkopuolelta virrat vietyä. Tämähän tarkoittaa sitä, että voi suoraan ohjata esim. pienitehoista askelmoottoria, relettä tai 24V logiikkaa. - Tai sitten vaan käyttää normisti 5V:ta, joka tuotu liittimelle sekin valmiiksi.
LED:n välkyttely ei ensimmäisellä yrittämällä heti toiminut - taitaa olla io-osoite vielä hakusessa - tai Pascal-kielen taidot koetuksella.
952
Äänestä

Muut lukivat myös

Vastaukset 9

Vanhimmat

Èi sitä hommaa kannata tehdä liian vaikeasti. Wordista taitaa löytyä jonkinmoinen BASIC-kääntäjä jolla saa tehtyä pieniä ohjelmia io:ten komenteluun.

Äänestä

Noita vanhoja koneita ei enää kaikilta löydy, mutta jos on tilaa säilytellä niin mikäs siinä. Siinä kortissa dip-kytkimillä asetetaan osoite ja kun kaikki on kiinni on osoite protolle varattu 300H. Aikanaa tuli turbo pascalilla väännettyä tuolle kortille jotain. Yksi hyvä kortti on myös 8255 rinnakkaisliitännän ja 8253 ajastin/laskuripiirin sisältävä kortti. Nuo piirit on integroitu nykykoneisiin muitakin toimintoja sisältäviin piireihin. 306 kirjassa on myös opastettu miten tehdään pelikortista i/o kortti.

Äänestä

Sehän muuten lähti toimimaan LED:n vilkuttelu. Ongelmana juurikin tuo osoitteen asettelu. Helposti menee io myös pascalissa vanhan dos:n alla: PORT[$300] := arvo. Linux:ssa on ne kerneli-permissiot aseteltava ensin - ja ajettava roottina vieläpä, jos ei mitään säädä.
Ja luku tietysti päin vastoin. Eihän tuolla kovaa mennä - 200kbit/s oli maksimi vilkuttelutahti silmukalla, mutta kyllä tuolla jo avr/pic:n kyykyttää kummasti - ja lukee datat koneelle komiasti!
Eihän tuota ehkä kannattaisi itse enää rakennellakaan - irrallisen kirjotinportin saa vitosella pahimmillaan - ja voihan siihenkin laittaa heti bufferi-piirin kärkeen poltettavaksi, että silleen..

Äänestä

Kaivoin vanhan basic testaus pätkän. Jossain minulla on pascal ohjelma jossa painamalla tietokoneen numero näppäintä vastaava rele kytkee/katkoo, voin laittaa tänne jos löydän. Tällä voipi testailla, muokkaa sopivaksi. Sisääntuloihin kytkimet ja lähtöihin releet.
5 CLS
10 REM I/O-KORTTI ohjain, inputtia maadottavilla kytkimillä releet on/off
20 PRINT "I/O - kortin ohjaus"
30 B = 0
40 A = INP(&H300) XOR 255
50 IF A = 1 THEN B = B XOR 1: GOSUB 130
60 IF A = 2 THEN B = B XOR 2: GOSUB 130
70 IF A = 4 THEN B = B XOR 4: GOSUB 130
80 IF A = 8 THEN B = B XOR 8: GOSUB 130
90 IF A = 16 THEN B = B XOR 16: GOSUB 130
100 IF A = 32 THEN B = B XOR 32: GOSUB 130
105 PRINT A, B
110 OUT &H300, B
120 GOTO 40
130 FOR V = 0 TO 200: NEXT V: REM Nopeammassa koneessa viivettä on lisättävä.
140 RETURN
150 END

Äänestä

No tässäpä se pascal-versio:

Program LED_Flash;
Uses dos, crt;
var i: integer;
BEGIN
do
write('0');
PORT[$300] := 0;
sleep(1000);
write('1');
PORT[$300] := $ff;
sleep(1000);
writeln(' ' PORT[$300]); {Lue inputit}
while not KeyPressed
END.

Äänestä
  • Joo'o. No mun pitää kohta mennä paskal.

    Äänestä

No nyt on oikea meininki. Ei tarvi päivittää 12 tunnin välein ja skiddiellä menee sormi suuhun.

Äänestä

Tulipa mieleeni pieni sovellus tuosta kortista: Sehän on avokollektorilähdöillä toteutettu. Mikään ei siis estä kytkemästä inputeita ja outputteja yhteen. No mitäkö tästä hyötyy: Alkaa muistuttamaan kovasti i2c:ta, itse asiassa jopa 8 väylää rinnakkain! Muistelisin, että tuon i2c-parport-light ajurin saa myös tukemaan tätä pienellä koodailulla. Pitää vaan tehdä korttivalikoimaan uusi kortti, joka käyttää yhtä osoitetta(0x300). Ja koska se on 5V logiikalla, niin toiminee luultavasti myös 3V:nä ilman sen kummempia mutinoita - kytkee vaan. Tämähän onkin hyvä kortti vielä! :)
1-kanavaisen i2c:n tuosta saa ainakin melko pienellä vaivalla.

Äänestä

Jos käyttis on: Win95, Win98 tai Win ME, niin silloin voit koodata myös Delphillä.

Delphissä ei ole suoraan tuota Port[] ja PortW[] -pseudotaulukkoa, mutta katsopa suomi24 ohjelmointi/Delphi -palstaa, sieltä löydät tietoa, miten voit tehdä suoraa portti -IO:ta kutsumalla aliohjelmaa, joka on koodattu Delphin asm - end -rakennetta hyödyntämällä.

Näin tehty ohjelma EI toimi uudemmissa Win2000, WinXP, Vista, Win 7 jne.

esim. Delphi 5 tai Delphi 7 on pätevä työväline noihin.

Delphi 5:n osalta: jos ohjelmasi on monisäikeinen, laita säikeen Execute -metodiin try - except -end -rakenne, muuten luodussa säikeessä tapahtuvapoikkeus tappaa ohjelmasi. Tämä on bugi Delphi 5:n TThread -luokan toteutuksessa, uudemmissa Delpheissä ko. bugi on ilmeisesti jo korjattu.

Äänestä

Kommentoi aloitusta


murtohälytin_tekoon kirjoitti:

Rakentelin 306-kirjasta io-kortin ISA-väylään, jolla saa 8 outtia ja 8 inputtia. Ehti rojekti vuoden oleen hyllylläkin, kun ei sattunut olemaan sopivia komponentteja myyjällä heti tarjota. Nyt se on kuitenkin valmis ja pitäs alkaa testailemaan, josko homma vaikka toimisi. Ideana on se, että kortin voi korjata jos se menee rikki: Noita kirjotinportteja jo muutama saatu rikki kuitenkin.
Fiksusti toteutettu IO tuossa kyllä on: inputit kilosen vastuksen takana (voisi kyllä olla zeneritkin kytketty..) ja output uln2803:lla siten, että saa ulkopuolelta virrat vietyä. Tämähän tarkoittaa sitä, että voi suoraan ohjata esim. pienitehoista askelmoottoria, relettä tai 24V logiikkaa. - Tai sitten vaan käyttää normisti 5V:ta, joka tuotu liittimelle sekin valmiiksi.
LED:n välkyttely ei ensimmäisellä yrittämällä heti toiminut - taitaa olla io-osoite vielä hakusessa - tai Pascal-kielen taidot koetuksella.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu