kirjoitinportista omia kytkentöjä

Anonyymi

Löytyi hyvä dokkari rinnakkaisportista kiinnostuneille jos joku vielä rakentelee tuolle omia kytkentöjä:
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.128.1178&rep=rep1&type=pdf
Erityisesti tykkäsin EPP-kohdan kytkennästä, jossa näytetään miten ylimääräisten output-kontrollinastojen puutteesta rinnakkaisportissa pääsee eroon melko yksinkertaisella puskurointi kytkennällä (esim. 74hct573).
Tuo EPP:hän taitaa löytyä 386:sta lähtien porteista aika usein ja on helppo käyttää, kun ohjelmoijan näkökulmasta riittää yksi OUT tai IN komento, kun portti hoitaa kaikki signaloinnit itse - ainakin helpompaa kuin perus SPP portin kanssa. Sen sijaan EPP ei ole kiva jos porttiin kytkee mikrokontrollerin suoraan kättelemään signaaleja, koska sen ajoitusten saaminen esim. keskeytyskäsittelijälle voi olla vaativa operaatio - kannattaa tällöin ainakin vilkaista jo ECP-porttia, koska se protokolla on taas suunniteltu cpu - cpu välille.

8

87

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Anonyymi

      Rinnakkaisporttia ei nykyään löydy kuin > 15 vuotta vanhoista pöytätietokoneista. Niitä vielä löytyy kierrätyksestä mutta laitteille on käyttöjärjestelmän tuessa ongelmia.

      https://en.wikipedia.org/wiki/Parallel_port

      Nykyään tarvittavan USB <-> rinnakkaisportti - muuntimen sijaan itse käyttäisin ulkoisia laitteita esimerkiksi Raspberry PI:n tai Arduinon SPI/I2C väylien avulla. Niiden ohjaus virtuaalisen sarjaportin tai WLAN-yhteyden kautta onnistuu myös tämän päivän muodin mukaisissa käyttöjärjestelmissä ja laitteissa.

      • Anonyymi

        Jaa että pitäisi vielä jotakin maksaa siitä, että saa kytkeä tietokoneeseen omia laitteita? Jos ilmaiseksi saa kytkettyä omia kytkentöjä koneeseen sarja tai rinnakkaisportin kautta - miksi pitäisi käyttää rahaa tekniikkaan jota ei selvästikkään tarvita vaan on kehitetty rahastuksen takia?
        Valitettavasti USB on erittäin surkea väylä. Se käy selväksi jos yrittää tehdä mitään kaksisuuntaista tiedonsiirtoa, jossa vastauksen ajoitukset ovat yli 1kHz taajuisia signaaleja - pakettiformaatti ei pysty vastaamaan tarpeeseen. Vertailun vuoksi, rinnakkaisporttiin pystyy kirjoittamaan tai lukemaan 2MHz taajuudella. USB:n käyttö toki on mahdollista, mutta vaatii aina väliin puskurointia ja mikrokontrollereita. Miksi näitä pitäisi käyttää?
        PCI-express väylään saa rinnakkaisportin ostettua kympillä. Valitettavasti PCI-express väylässä on myös USB-väylä, joten pitää olla tarkkana, että laite todella on express-väylässä kiinni eikä USB. Käyttäjiä siis harhautetaan tässäkin.
        Emolle sitä ei ole integroitu koska valmistajille sopii ajatella rinnakkaisportti vain kirjoitinporttina, jolloin usb-toteutus on tiedon siirron kannalta käyttökelpoinen ratkaisu.
        En kuitenkaan ymmärrä, miksi välissä pitäisi olla ylimääräisiä "rahastuspiirejä", jos homma onnistuu ilmankin?


      • Anonyymi
        Anonyymi kirjoitti:

        Jaa että pitäisi vielä jotakin maksaa siitä, että saa kytkeä tietokoneeseen omia laitteita? Jos ilmaiseksi saa kytkettyä omia kytkentöjä koneeseen sarja tai rinnakkaisportin kautta - miksi pitäisi käyttää rahaa tekniikkaan jota ei selvästikkään tarvita vaan on kehitetty rahastuksen takia?
        Valitettavasti USB on erittäin surkea väylä. Se käy selväksi jos yrittää tehdä mitään kaksisuuntaista tiedonsiirtoa, jossa vastauksen ajoitukset ovat yli 1kHz taajuisia signaaleja - pakettiformaatti ei pysty vastaamaan tarpeeseen. Vertailun vuoksi, rinnakkaisporttiin pystyy kirjoittamaan tai lukemaan 2MHz taajuudella. USB:n käyttö toki on mahdollista, mutta vaatii aina väliin puskurointia ja mikrokontrollereita. Miksi näitä pitäisi käyttää?
        PCI-express väylään saa rinnakkaisportin ostettua kympillä. Valitettavasti PCI-express väylässä on myös USB-väylä, joten pitää olla tarkkana, että laite todella on express-väylässä kiinni eikä USB. Käyttäjiä siis harhautetaan tässäkin.
        Emolle sitä ei ole integroitu koska valmistajille sopii ajatella rinnakkaisportti vain kirjoitinporttina, jolloin usb-toteutus on tiedon siirron kannalta käyttökelpoinen ratkaisu.
        En kuitenkaan ymmärrä, miksi välissä pitäisi olla ylimääräisiä "rahastuspiirejä", jos homma onnistuu ilmankin?

        Mitä käyttistä koneessa käytät?

        Raspberry PI 4 tekee sujuvasti SPI-liikennettä nopeudella 30 MHz eli siitä saa lävitse luokkaa yli 20 megabittiä sekunnissa. Eli 8 - bittinen spi->parallel piiri voi syytää dataa 2 MHz bittitaajuudella.

        Kun näitä laitteita vertaillaan niin yksi asia pitää muistaa. Vanhanmallinen pööytätietokone on melkoinen tehosyöppö. Jos laite on päällä vain lyhyitä aikoja niin sitten sillä ei ole väliä mutta esimerkiksi 24/7 - käytössä alkaa kilowattitunteja kertyä. Kalliimpi mutta vähemmän sähkötehoa syövä laite voi tulla käytössä huokeammaksi. Sata wattia vuoden ajan tekee 876 kWh eli viidentoista sentin sähkönhinnalla (siirto kulutus) tuosta tulisi 130 euroa. Jos joku ratkaisu säästää jatkuvasti 20 W käyttötehoa niin se säästää vuodessa luokkaa 26 euroa.

        Omassa käytössä tärkeintä on tietenkin se, mitä itse pitää tärkeimpänä. Jos on tottunut ohjelmoimaan laitetta X niin sitten voi hyvinkin kannattaa käyttää laitetta X vaikka jonkun muun mielestä se olisikin huonompi ratkaisu. Ja jos laitetta ei ole tarkoitettu sarjatuotantoon niin osien saatuvuusongelmatkaan eivät vaikuta.


      • Anonyymi
        Anonyymi kirjoitti:

        Jaa että pitäisi vielä jotakin maksaa siitä, että saa kytkeä tietokoneeseen omia laitteita? Jos ilmaiseksi saa kytkettyä omia kytkentöjä koneeseen sarja tai rinnakkaisportin kautta - miksi pitäisi käyttää rahaa tekniikkaan jota ei selvästikkään tarvita vaan on kehitetty rahastuksen takia?
        Valitettavasti USB on erittäin surkea väylä. Se käy selväksi jos yrittää tehdä mitään kaksisuuntaista tiedonsiirtoa, jossa vastauksen ajoitukset ovat yli 1kHz taajuisia signaaleja - pakettiformaatti ei pysty vastaamaan tarpeeseen. Vertailun vuoksi, rinnakkaisporttiin pystyy kirjoittamaan tai lukemaan 2MHz taajuudella. USB:n käyttö toki on mahdollista, mutta vaatii aina väliin puskurointia ja mikrokontrollereita. Miksi näitä pitäisi käyttää?
        PCI-express väylään saa rinnakkaisportin ostettua kympillä. Valitettavasti PCI-express väylässä on myös USB-väylä, joten pitää olla tarkkana, että laite todella on express-väylässä kiinni eikä USB. Käyttäjiä siis harhautetaan tässäkin.
        Emolle sitä ei ole integroitu koska valmistajille sopii ajatella rinnakkaisportti vain kirjoitinporttina, jolloin usb-toteutus on tiedon siirron kannalta käyttökelpoinen ratkaisu.
        En kuitenkaan ymmärrä, miksi välissä pitäisi olla ylimääräisiä "rahastuspiirejä", jos homma onnistuu ilmankin?

        "Vertailun vuoksi, rinnakkaisporttiin pystyy kirjoittamaan tai lukemaan 2MHz taajuudella."

        Täytyy olla erityisesti huippunopeuksiin suunniteltu piiri ja piirilevy, jos tuohon pystyy!

        Normaalitapauksessa 1 MHz on tuon LPT -portin yläraja, joka tulee ihan tästä:

        esim.

        mov DX, porttinumero
        mov AL, databyte
        out DX,AL

        Ylläolevassa koodissa käsky out DX,AL kuluttaa tyypillisesti aikaa yhden mikrosekunnin CPU:n kellotaajuudesta riippumatta !

        Eli olipa 20 MHz vanha CPU tai 3,5 GHz uusi CPU, niin molemmilla n. 1 mikrosekunti kestää käskyn out DX,AL suoritus !

        Johtuuk otuo CPU:sta itsestään, väyläelektroniikasta vai kirjoitinportin omasta toteutuksesta, sitä en tiedä.

        Lisäksi vain MS-DOS -käyttöjärjestelmässä voi sovellusohjelma sellaisenaan ohjata laitteistoportteja, mutta sekä Windows että Linux asettavat omia sääntöjään asiaan !


    • Anonyymi

      Hienoa! Uusin kone mikä löytyy on vuodelta 2006 :) Vanhin taitaa olla -80 luvulta, mutta siinäkin on centronics portti - eikä PC ensinkään. Kaikki käytössä.

    • Anonyymi

      Justiinsa!

      Käyttöjärjestelmät (vanhaa MS-DOSia lukuunottamatta) ovat suurin este tuolle!

      Linuxissa ilmeisesti onnistuu, mutta vaatii:

      1) Ohjelmisto-osaamista (käytä funktiota ioperm antaaksesi ohjelmalle oikeudet laiteporttien käsittelyyn).

      2) Aja ohjelma root -oikeuksin. Muuten ioperm() ei toimi !

      Windowsissa onnistuu myös, mutta vain 32-bittisissä käyttöjärjestelmäversioissa, ja sielläkin vaatii laiteohjaimen (esim. giveio.sys) lataamista. Omissa ohjelmissa: Käytä DeviceIoControl() -funktiota laiteohjaimen kanssa keskusteluun.

      En ole nähnyt netissä vastaavaa 64-bittiseen käyttöjärjestelmäversioon sopivaa laiteohjainta.

      Vanhoissa Windows 95/98/98SE/ME -versioissa ei tarvita laiteohjainta, vaan niissä CPU:n omat In ja Out -käskyt riittävät !

      Nuo laiteohjaimet (Windows) yleensä joko:

      a) Tarjoavat InPort() ja OutPort() -funktiot, joita käytetään CPU:n omien In ja Out -käskyjen sijasta.


      b) Asentavat sellaisen "fault handler":in, joka reagoi esim. CPU:n omaa out -käskyyn näin (koska se suojatussa käyttöjärjestelmässä generoi "CPU Protection Fault"):

      mov EAX, [Client_EAX]
      mov EDX, [Client_EDX]
      out DX,AL

      add [Client_EIP], n

      missä n = käskyn "Out DX,AL" koko tavuina.
      Jos käyttäisin nyt 32-bit windowsia, olisin voinut tarkistaa tuon käskyn koon DEBUG.EXEä käyttämällä, mutta kun 64-bit windowsissa ei ole DEBUG.EXEä, niin jää harjoitustehtäväksi lukijalle.

      Tuo periaate esim."mov EAX, [Client_EAX]" on tuttu Anrdew Schulmanin kirjasta "Undocumented Windows 95".

      Tuo koodi siis ajetaan sitä varten erikseen suunnitellussa keskeytyskäsittelijässä, ja tuon seurauksena suoraan sovellusohjelmasta tehty "Out DX,AL" -käsky "toimii" - todellisuudessa se ei toimi, mutta sen toimintaa simuloidaan oikein suunnitellulla keskeytyskäsittelijällä, jolloin se näyttää toimivan, ja ainoa ero siihen, että se toimisi oikeasti, on suoritusnopeus, eli kun sovellusohjelma "suorittaa" käskyn Out DX,AL, niin todellisuudessa suoritetaan vähintään satoja, ellei tuhansia käskyjä samaan lopputulokseen pääsemiseksi kuin suojaamattomassa (esim. MS-DOS) käyttöjärjestelmässä tapahtuisi !

      Tällaista kirjoitellessa tuntuu joskus, että ohjelmointi on monimutkaisempaa kuin elektroniikka, mutta tämä ei ole koko totuus asiasta.

      • Anonyymi

        Mitenkähän lienee, linuxissa löytyy 64-bittisissäkin inb/outb rutiineista ainakin 8 /16/32 bittiset versiot. I/O ei taida voida olla 64-bittistä perus-emoilla? Käytännössä nuo on wrappereita suoraan alla oleville asm-komennoille. ioperm():n ne vaatii tai sitten on tehtävä kernel-ajuri, mikä voi olla hyvä idea jos siirrettävää dataa on enemmän: User space:sta ei saa tehtyä kaikkia temppuja, kuten DMA-siirtoa suoraan laitteelta muistiin. Valmiitakin ajureita löytyy, joissa toiminnot saatu ioctl():n avulla user space:n puolelle koko lailla - DMA siirtoa ei taida pystyä virittelemään sinne kuitenkaan..
        No, ei jaksa kuitenkaan opetella mitään uutta enää: Välillä ms-dos virtualboxissa tuntuu ihan hyvältä ratkaisulta saada homma toimimaan.


      • Anonyymi
        Anonyymi kirjoitti:

        Mitenkähän lienee, linuxissa löytyy 64-bittisissäkin inb/outb rutiineista ainakin 8 /16/32 bittiset versiot. I/O ei taida voida olla 64-bittistä perus-emoilla? Käytännössä nuo on wrappereita suoraan alla oleville asm-komennoille. ioperm():n ne vaatii tai sitten on tehtävä kernel-ajuri, mikä voi olla hyvä idea jos siirrettävää dataa on enemmän: User space:sta ei saa tehtyä kaikkia temppuja, kuten DMA-siirtoa suoraan laitteelta muistiin. Valmiitakin ajureita löytyy, joissa toiminnot saatu ioctl():n avulla user space:n puolelle koko lailla - DMA siirtoa ei taida pystyä virittelemään sinne kuitenkaan..
        No, ei jaksa kuitenkaan opetella mitään uutta enää: Välillä ms-dos virtualboxissa tuntuu ihan hyvältä ratkaisulta saada homma toimimaan.

        "Välillä ms-dos virtualboxissa tuntuu ihan hyvältä ratkaisulta saada homma toimimaan."

        Siis ajatko virtulboxissa ms-dosia linuxin sisällä?

        saman asian ajaa varmaankin dosemu.

        Mutta: Onko nuo Virtualbox ja Dosemu muka tehty niin, että ne sallivat suoran laite-I/O:n MS-DOS -ohjelmasta samoin kuin aito MS-DOS (ilman emulointia) sallisi ?


    Ketjusta on poistettu 1 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Suomi on täysin sekaisin

      Jo ties monettako päivää hirveä itku ja poru jostain helvetin nilviäisistä. https://www.is.fi/taloussanomat/art-2000010
      Maailman menoa
      445
      4778
    2. Ensimmäisestä kohtaamisesta saakka

      minulla on ollut hämmentynyt olo. Miten voit tuntua siltä, että olisin tuntenut sinut aina? Sinun kanssasi on yhtä aikaa
      Ikävä
      15
      1702
    3. Aivan täysin tahallinen teko

      Ei mitään puolusteluja, eikä selittelyitä. Kuljettajalle kerrottiin asiasta siinä paikanpäällä, mutta silti hän ajoi ves
      Suomussalmi
      93
      1438
    4. Suomussalmi saatu vihdoin maailmankartalle!

      Nyt kun Suomussalmi on vihdoin viimein saatu ennennäkemättömällä tavalla maailman tietoisuuteen niin voitaisiin järjestä
      Suomussalmi
      53
      1339
    5. Olet saanut minut sekoamaan

      Tunteiden ristiaallokossa vellominen on ollut melkoinen kokemus. Ei kukaan ole saanut minua niin raiteiltaan kuin sinä.
      Ikävä
      22
      1296
    6. Mainehaitta metsäkonefirmalle

      Hukkajoen tapahtumista liikkuu paljon huhuja. Eikö kannattaisi julkaista raakkuja tuhonneen metsäkoneyrityksen nimi, kos
      Suomussalmi
      50
      1171
    7. Oho! Maajussi-Kallelta pakit saanut morsioehdokas Miss Suomi -kisoissa! Tunnistaisitko hänet nyt?

      Hmm, tunnistaisitko?!? Onnea missihulinoihin! Lue lisää ja katso kuvat: https://www.suomi24.fi/viihde/oho-maajussi-
      Suomalaiset julkkikset
      0
      1065
    8. Myönnän sinulle nyt

      Että olen erittäin mustasukkainen sinusta jo nyt. Ikävä on tämä tunne, kun tietämättömyyden solista nousee myrkkyä miele
      Ikävä
      54
      980
    9. Pysytäänkö nainen

      edelleen yhtä viileän tyynenä kun nähdään. Uskotko että tahtoessani saisin murettua tyyneytesi hyvin helposti.
      Ikävä
      57
      865
    10. Olen käyttäytynyt ristiriitaisesti

      eikä minusta varmaankaan ota mitään selvää. Se johtuu siitä, kun järki sanoo ei, ei, ei ja sydän sanoo kyllä, kyllä, kyl
      Ikävä
      60
      839
    Aihe