rinnakkaisportti ja 24kpl io:ta

vanha_ja_hyvä

Tämän laatuinen kytkentä tuli vastaan:
https://mediatoget.blogspot.com/2011/02/lpt-port-expander.html
Tuohan on EPP-moodissa mitä mainioin, koska voi syöttää 32bit dataa yhdellä asm-komennolla portista ulos tai sisään jokaisella io-nastalla. Lisäksi tarvitaan vain 4-laskuri, joka koodaa io:ta. A0 ja A1 linjoille. Ja jos hommasta haluaa 2-suuntaista, niin sitten tarvitaan vielä rd/wr nastojen ohjaamista invertterillä ja cs-nastaan tri-state. Piiri on iso, mutta pääsee yllättävän vähällä oheislogiikalla, eikä tarvitse enää tyytyä 8 io-nastaan, jos kestää ohjelmassa hiukan nurinkurisen eli asetusten tekemisen viimeisenä. Toisaalta, kuka kieltää ajamasta laskuria sopivaan tilaan ensin ja pyörittämällä hommaa siitä kohdasta?

9

<50

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Ripulirapuli

      Anna mun kaikki kestää, tuli just ripulit housuun.

    • yhden.kortin.ihme

      Rinnakkaisportti on nykyään sukupuuttoon kuoleva laji, joten sen sijaan kannattaisi ehkä miettiä USB:n, HDMI:n, WLANin tai nettipiuhan kautta ohjautuvia ratkaisuita. Olen toki huomannut että melkein kaikki vuoden 2010 jälkeen tehdyt pöytäkone tietsikat ovat edelleen käyttökelpoisia ohjaukseen jne. mutta niiden saatavuus alkaa heiketä ja tehonkulutus on varsin hurjaa verrattuna läppäreihin ja yhden kortin rasberryihin.

      • softa_haitakkeet

        höpö höpö. USB ei voi korvata rinnakkaisporttia jitterin takia. HDMI:llä puolestaan ohjataan lähinnä näyttöjä. WLAN on nettiliikenneratkaisu. Kyllä varmasti noihinkin saa kytkettyä 8bittistä io:ta tuottavia laitteita, mutta se vaiva on todennäköisesti niin järkyttävä, että 99% ihmisistä joutuu jättämään leikin kesken.
        Siispä käytän edelleen rinnakkaisporttia, koska siihen pääsee jo käsiksi assembler-tasolta yhdellä out-komennolla. Teepä sama noilla muilla tekniikoilla! :)
        Oma arvaukseni on, että nuo yo. on esitelty, jotta saadaan tehtyä "yhteensopivuusongelmia" laitteiden välille, jolloin ihmisten on pakko päivittää aina jotain laitetta, koska homma ei enää muuten toimi. Toinen vaihtoehto on pitäytyä laitekannassa, eikä päivittää sitä. Menee sitten kaikki kerralla vaihtoon ja ei aiheuta päivitysrumbaa eikä muutenkaan ongelmia, kun ostaa avaimet käteen periaatteella.
        Yksinkertainen homma saada tuolla 8255-piirillä io-nastoja käyttöön nopeudella n. 500kbit/s nastaa kohti. Piirin sain ennen laitettua suoraan ISA-väylään, mutta tämä parport ratkaisu poistaa osoite-dekoodauksen tarpeen ja on siten yksinkertaisempi.
        Toki yhtä hyvin voi em. väylään tehdä monia muita expandereita, kuten SPI/I2C ja ilman väliin tulevia piirejä, mutta joskus tarvitaan io:ta ja tuon piirin löytää helposti vielä nykyäänkin, koska se on lähes kaikissa PC-laitteissa ollut aikanaan.
        USB ei taivu, kun se on softa-ratkaisu..


      • Joakim1
        softa_haitakkeet kirjoitti:

        höpö höpö. USB ei voi korvata rinnakkaisporttia jitterin takia. HDMI:llä puolestaan ohjataan lähinnä näyttöjä. WLAN on nettiliikenneratkaisu. Kyllä varmasti noihinkin saa kytkettyä 8bittistä io:ta tuottavia laitteita, mutta se vaiva on todennäköisesti niin järkyttävä, että 99% ihmisistä joutuu jättämään leikin kesken.
        Siispä käytän edelleen rinnakkaisporttia, koska siihen pääsee jo käsiksi assembler-tasolta yhdellä out-komennolla. Teepä sama noilla muilla tekniikoilla! :)
        Oma arvaukseni on, että nuo yo. on esitelty, jotta saadaan tehtyä "yhteensopivuusongelmia" laitteiden välille, jolloin ihmisten on pakko päivittää aina jotain laitetta, koska homma ei enää muuten toimi. Toinen vaihtoehto on pitäytyä laitekannassa, eikä päivittää sitä. Menee sitten kaikki kerralla vaihtoon ja ei aiheuta päivitysrumbaa eikä muutenkaan ongelmia, kun ostaa avaimet käteen periaatteella.
        Yksinkertainen homma saada tuolla 8255-piirillä io-nastoja käyttöön nopeudella n. 500kbit/s nastaa kohti. Piirin sain ennen laitettua suoraan ISA-väylään, mutta tämä parport ratkaisu poistaa osoite-dekoodauksen tarpeen ja on siten yksinkertaisempi.
        Toki yhtä hyvin voi em. väylään tehdä monia muita expandereita, kuten SPI/I2C ja ilman väliin tulevia piirejä, mutta joskus tarvitaan io:ta ja tuon piirin löytää helposti vielä nykyäänkin, koska se on lähes kaikissa PC-laitteissa ollut aikanaan.
        USB ei taivu, kun se on softa-ratkaisu..

        Eikös sulla PC:ssä ole joku käyttöjärjestelmä, jonka alla sitä ohjelmaa pyörität. Kyllä siihenkin tulee jitteriä, kun käyttis tekee muutakin kuin sinun ohjelmaasi ja sitä rinnakkaisportin ohjaamista.

        Saahan USB:n kauttakin ohjattua lukuisia I/O portteja suurella nopeudella. Ei tietysti niin, että jokaista porttimuutosta kohti tehdään uusi USB-komento, jolloin homma menee hyvin hitaaksi. On myös USB-palikoita, joissa voi pyörittää omaa ohjelmaa siinä USB-piirissä.

        Yhteensopivuudeltaan USB on loistava. Ainakin minulla kaikki ikinä olleet USB-laitteet saa toimimaan edelleenkin uusimmassa tietokoneessa. Itse myös teen USB-pohjaisia laitteita. 2007 suunniteltu USB-laitteeni on edelleen täysin identtinen kuin silloin ja toimii uusimmissa koneissa uusimmilla käyttiksillä. Ei rinnakkaisportti koskaan ollut noin yhteensopiva kaikkine eri moodeineen.


      • vanhalla_tavalla

        Lähinnä tuo jitteri on kuitenkin ennustettavampaa rinnakkaisportilla, kun missään ei suoriteta bufferointia(jos sitä ei halua). Tottunut kytkemään piirejä suoraan PC:hen. Tämä vaatii, että pystyy yksittäisiä bittejä vääntelemään mielin määrin. Tuo usb vaatii väliin kuitenkin kontrolleria. En oikein tiedä, onko järkeä tehdä usb-liitäntäinen, kun sitten se vaatii, että isäntäkoneessa on usb. Nyt voi periaatteessa kehitystyön jälkeen hyllyttää pc:n ja laittaa laitetta ohjaamaan _minkä tahansa_ 8bittistä io:ta käyttävän kontrollerin, jossa n 10 nastaa vapaana. Se on rinnakkaismuodossa nopeampaa kuitenkin, kuin mitä SPI-expanderilla. Toki löytyy sellainenkin, mutta haluttuun nopeusluokkaan pitää sitten pystyä syöttämään dataa 24MHz taajuudella, mikä taas vaatii isompaa kontrolleria. Nyt pärjää 4MHz vehkeellä. Lisäksi tuon värkkääminen esim ATMega128:n muistiväylään on älyttömän helppoa, eli jos laite käyttää jo valmiiksi ulkoista muistia, laitetaan yhteen muistikantaan adapteri ja ladotaan io suoraan liittimen lay-outille. Yksi piuha pitää vetää erilleen, eli se, jolla valitaan normitoiminnan asemesta käyttöön oma io eikä muisti, cs-nasta johdotetaan siis uusiksi muistipiiriltä ja expanderilta.
        Eli eiköhän tehdä hommat niillä laitteilla joilla ne on opittu tekemään ja siinä sivussa opitaan sitten vähän uutta - eikä vaihdeta toimivasta epävarmaan toimintaan - tai ainakaan toimintaan, josta ollaan epävarmoja. Siitä seuraa vain hammasten kiristelyä. Omalla kohdalla usb ei oikein ole koskaan menestynyt ja ainoa, mitä siihen laitan kiinni on muistitikku. Ongelmia on aika liuta: PCI-enumeraatio sekoittaa kortit keskenään. USB-enumerointi vaihtaa laitteiden paikkaa käyttöjärjestelmien välillä. Toimimaton kontrolleripiiri saa aikaan sen, että välillä enumerointi on väärin päin saman koneen käynnistyskertojen välillä. Ei missään tapauksessa laitteisiin, joiden käytöllä voi olla seurauksia.


      • elektr_harrastaja
        vanhalla_tavalla kirjoitti:

        Lähinnä tuo jitteri on kuitenkin ennustettavampaa rinnakkaisportilla, kun missään ei suoriteta bufferointia(jos sitä ei halua). Tottunut kytkemään piirejä suoraan PC:hen. Tämä vaatii, että pystyy yksittäisiä bittejä vääntelemään mielin määrin. Tuo usb vaatii väliin kuitenkin kontrolleria. En oikein tiedä, onko järkeä tehdä usb-liitäntäinen, kun sitten se vaatii, että isäntäkoneessa on usb. Nyt voi periaatteessa kehitystyön jälkeen hyllyttää pc:n ja laittaa laitetta ohjaamaan _minkä tahansa_ 8bittistä io:ta käyttävän kontrollerin, jossa n 10 nastaa vapaana. Se on rinnakkaismuodossa nopeampaa kuitenkin, kuin mitä SPI-expanderilla. Toki löytyy sellainenkin, mutta haluttuun nopeusluokkaan pitää sitten pystyä syöttämään dataa 24MHz taajuudella, mikä taas vaatii isompaa kontrolleria. Nyt pärjää 4MHz vehkeellä. Lisäksi tuon värkkääminen esim ATMega128:n muistiväylään on älyttömän helppoa, eli jos laite käyttää jo valmiiksi ulkoista muistia, laitetaan yhteen muistikantaan adapteri ja ladotaan io suoraan liittimen lay-outille. Yksi piuha pitää vetää erilleen, eli se, jolla valitaan normitoiminnan asemesta käyttöön oma io eikä muisti, cs-nasta johdotetaan siis uusiksi muistipiiriltä ja expanderilta.
        Eli eiköhän tehdä hommat niillä laitteilla joilla ne on opittu tekemään ja siinä sivussa opitaan sitten vähän uutta - eikä vaihdeta toimivasta epävarmaan toimintaan - tai ainakaan toimintaan, josta ollaan epävarmoja. Siitä seuraa vain hammasten kiristelyä. Omalla kohdalla usb ei oikein ole koskaan menestynyt ja ainoa, mitä siihen laitan kiinni on muistitikku. Ongelmia on aika liuta: PCI-enumeraatio sekoittaa kortit keskenään. USB-enumerointi vaihtaa laitteiden paikkaa käyttöjärjestelmien välillä. Toimimaton kontrolleripiiri saa aikaan sen, että välillä enumerointi on väärin päin saman koneen käynnistyskertojen välillä. Ei missään tapauksessa laitteisiin, joiden käytöllä voi olla seurauksia.

        kaikki riippuu myös käyttöjärjestelmästä!

        MS-DOS: toimii hyvin, jos on tarpeen tehdä bittitason I/O:ta omasta ohjelmasta

        Vanhat windowsit (95, 98, 98SE, ME): toimii myös, koska antavat ohjata I/O -portteja sovellusohjelmista, toisin kuin NT-pohjaiset windowsit (2000, XP, Vista, 7, 8, 8.1, 10).

        Uusissa windowseissa tulee ongelmia! Ei tukea rinnakkaisportin epästandardille käytölle !
        Toisaalta, JOS saat laitteesi suunniteltua niin, että standardinmukainen sarjaliikenne sarjaportin kautta riittää, niin silloin toimii ok.

        Linux: toimii, mutta vaatii ohjelmalle root -oikeudet (muuten ei lupaa I/O -toimintoihin).

        MUTTA:

        pelkkä I/O -oikeus ei välttämättä riitä!

        Vaikka I/O sinänsä toimisikin, niin kun käyttöjärjestelmä tekee kaikkea muutakin, niin bittitason ohjailussa tulee helposti ajastusongelmia (eli kun käyttöjärjestelmä tekee jotain muuta, sillä aikaa ohjelma ei saa suoritusaikaa, ja portin ohjailu viivästyy tai jos kyse on lukemisesta, dataa voidaan menettää, jos ohjelma ei saa suoritusaikaa, kun pitäisi lukea).

        Suositus: joko Atmel AVR tai Raspberry Pi siihen väliin, ja aikakriittiset osat tuon Atmel AVR tai Raspberry Pi:n hoidettaviksi, ja standardinmukainen sarjaliikenne PC:n kanssa. Jos PC:ssä ei ole sarjaporttia, niin esim. ftdichip:in muunnoskaapeli USB --- 5V tai 3,3V sarjaliikenne.


      • Kannattaamuistaa
        elektr_harrastaja kirjoitti:

        kaikki riippuu myös käyttöjärjestelmästä!

        MS-DOS: toimii hyvin, jos on tarpeen tehdä bittitason I/O:ta omasta ohjelmasta

        Vanhat windowsit (95, 98, 98SE, ME): toimii myös, koska antavat ohjata I/O -portteja sovellusohjelmista, toisin kuin NT-pohjaiset windowsit (2000, XP, Vista, 7, 8, 8.1, 10).

        Uusissa windowseissa tulee ongelmia! Ei tukea rinnakkaisportin epästandardille käytölle !
        Toisaalta, JOS saat laitteesi suunniteltua niin, että standardinmukainen sarjaliikenne sarjaportin kautta riittää, niin silloin toimii ok.

        Linux: toimii, mutta vaatii ohjelmalle root -oikeudet (muuten ei lupaa I/O -toimintoihin).

        MUTTA:

        pelkkä I/O -oikeus ei välttämättä riitä!

        Vaikka I/O sinänsä toimisikin, niin kun käyttöjärjestelmä tekee kaikkea muutakin, niin bittitason ohjailussa tulee helposti ajastusongelmia (eli kun käyttöjärjestelmä tekee jotain muuta, sillä aikaa ohjelma ei saa suoritusaikaa, ja portin ohjailu viivästyy tai jos kyse on lukemisesta, dataa voidaan menettää, jos ohjelma ei saa suoritusaikaa, kun pitäisi lukea).

        Suositus: joko Atmel AVR tai Raspberry Pi siihen väliin, ja aikakriittiset osat tuon Atmel AVR tai Raspberry Pi:n hoidettaviksi, ja standardinmukainen sarjaliikenne PC:n kanssa. Jos PC:ssä ei ole sarjaporttia, niin esim. ftdichip:in muunnoskaapeli USB --- 5V tai 3,3V sarjaliikenne.

        Muistathan aina että ripulikin on kakkaa?


      • epp_aa
        elektr_harrastaja kirjoitti:

        kaikki riippuu myös käyttöjärjestelmästä!

        MS-DOS: toimii hyvin, jos on tarpeen tehdä bittitason I/O:ta omasta ohjelmasta

        Vanhat windowsit (95, 98, 98SE, ME): toimii myös, koska antavat ohjata I/O -portteja sovellusohjelmista, toisin kuin NT-pohjaiset windowsit (2000, XP, Vista, 7, 8, 8.1, 10).

        Uusissa windowseissa tulee ongelmia! Ei tukea rinnakkaisportin epästandardille käytölle !
        Toisaalta, JOS saat laitteesi suunniteltua niin, että standardinmukainen sarjaliikenne sarjaportin kautta riittää, niin silloin toimii ok.

        Linux: toimii, mutta vaatii ohjelmalle root -oikeudet (muuten ei lupaa I/O -toimintoihin).

        MUTTA:

        pelkkä I/O -oikeus ei välttämättä riitä!

        Vaikka I/O sinänsä toimisikin, niin kun käyttöjärjestelmä tekee kaikkea muutakin, niin bittitason ohjailussa tulee helposti ajastusongelmia (eli kun käyttöjärjestelmä tekee jotain muuta, sillä aikaa ohjelma ei saa suoritusaikaa, ja portin ohjailu viivästyy tai jos kyse on lukemisesta, dataa voidaan menettää, jos ohjelma ei saa suoritusaikaa, kun pitäisi lukea).

        Suositus: joko Atmel AVR tai Raspberry Pi siihen väliin, ja aikakriittiset osat tuon Atmel AVR tai Raspberry Pi:n hoidettaviksi, ja standardinmukainen sarjaliikenne PC:n kanssa. Jos PC:ssä ei ole sarjaporttia, niin esim. ftdichip:in muunnoskaapeli USB --- 5V tai 3,3V sarjaliikenne.

        Nimenomaan ongelmaksi tulee ajoitukset - jos yrittää tehdä ilman kättelyitä juttuja. Kättelyjen kanssa homma taas menee heti hitaaksi (helposti n. 200kt/s std portilla, suurella vaivallakin <700kt/s). Tuo EPP bufferoinnilla on siitä hyvä, että jos kirjoittaa 32-bittisiä lukuja, niin 16 tavun bufferin saa täyteen 4x i/o:ta. Ja rinnakkaisporttiajuri käytännössä takaa tuon kirjoituksen hw-bufferiin(fifoon..) onnistumisen. Siispä device-päähän on mahdollista tehdä laite, joka lukee perättäisiä tavuja tuon verran ilman kättelyä eli kytkemällä kättelyn oikotietä suoraan takaisin invertterillä. Tällöin saa n. 2Mt/s nopeutisen purskeen ja driver-overhead putoaa samalla 1/4:aan. Ja IRQ-nastan avulla pystyy pyytämään lisää datasiirtoa, kun purskeen on saanut käsiteltyä.
        Tässä on siis paljon mahdollisuuksia selvitä 1-2 ylimääräisellä logiikkapiirillä kytkennässä ja silti saavuttaa nopeushyöty. Tai sitten käyttää se n. 5-6 mikropiiriä ja olla standardin mukainen - vaihtoehto tietysti ottaa n. 64 nastainen EPP-hw chip, mutta se ei ole mielestäni enää tarkoituksenmukaista, jos ohjain-chip on tehokkaampi, kuin vastaanottava mikrokontrolleri ja maksaa n. 10 kertaa enemmän..
        Kannattaa tutustua myös ECP-moodiin, se voi olla mukavampi kuin EPP, ainakin jos vastapäät ovat ohjelmallisesti toteutettuja. EPP on kuitenkin yliveto monessakin asiassa juuri sen yksinkertaisuuden vuoksi. Sarjaliikenne ei tällaisessa oikein toimi, kun siinä ensin pitää siirtä 10-bittinen kehys ja tämän jälkeen prosessorilla vasta voi reagoida/tuottaa signaalin. Konfiguroinnit ja debug-tulosteet saa tietysti kehitysvaiheessa hyvin tuon kautta hoidettua.
        Joskus muisti-skoopilla katsonut minkä verran saa kerralla dataa rinnakkaisportista taottua ohjelmalla, joka ei tee muuta kuin looppaa xor:n avulla 101010.. io:ta ulos ja siinä on tosiaan muusta prosessoinnista riippumatta aina välillä kernelin schedulerin ajosta aiheutuvia taukoja. Ja ihan missä välissä tahansa - tämä voi mm. vääristää bittien kestoaikoja linjalla, jos ohjelma poistuu ajosta vaikka jonkin bitin päälle asetuksen ja nollauksen välillä hetkeksi.


    • teholukemia

      Mitattu tehonkulutus monitori 3200MHz keskusyksikkö 300W. Monitorin sulkemalla saa tehonkulutuksen puolitettua 150W:hen. Mitenkähän tuo nyt sitten vaikuttaa sähkölaskuuni, kun talossa on sähkölämmitys? Toki jos kaikki energia tulee ilmalämpöpumpun kautta, niin sitten on vaikutusta. -20C pakkasella sekin on lähes suoraa sähkölämpöä, mitä tulee - pumppu ei sitä paljoa enää boostaa.
      Eri asia sitten, jos pystyy keräämään esim. risuja ja saa lämpönsä sitä kautta ilmaiseksi. Silloin on järkevä päivittää mahdollisimman vähän energiaa kuluttavaan ratkaisuun. Paitsi että sekään ei auta, vaan sähkölaskusta alkaa olla 75% siirtomaksuja, eli kulutuksen pienetessä kiinteät maksun osat korostuu, kuten liittymän kk-maksu.
      No en tuota 150W tuhoavaa rohmua kyllä pitäisi päällä 24/7 jos ei olisi sähkölämmitys, mutta vanhat pentiumit vie vain n. 30W tehoja, joten se ei enää ole mitenkään suuri tehon syöjä, mikäli pitää jotakin mitata kellon ympäri. Laitteillakin on tietysti eroja. Vanha läppärikin voi olla joskus erittäin sopiva ratkaisu.

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

    Luetuimmat keskustelut

    1. Taasko se show alkaa

      Koo osottaa taas mieltään
      Ikävä
      27
      1858
    2. Miksi ihmeessä nainen seurustelit kanssani joskus

      Olin ruma silloin ja nykyisin vielä rumempi En voi kuin miettiä että miksi Olitko vain rikki edellisestä suhteesta ja ha
      Ikävä
      23
      1798
    3. Heikki Silvennoinen petti vaimoaan vuosien ajan

      Viiden lapsen isä Heikki kehuu kirjassaan kuinka paljon on pettänyt vaimoaan vuosien varrella.
      Kotimaiset julkkisjuorut
      117
      1761
    4. Persut nimittivät kummeli-hahmon valtiosihteeriksi!

      Persujen riveistä löytyi taas uusi törkyturpa valtiosihteeriksi! Jutun perusteella järjenjuoksu on kuin sketsihahmolla.
      Perussuomalaiset
      70
      1567
    5. Onko ministeri Juuso epäkelpo ministerin tehtäviensä hoitamiseen?

      Eikö hänellä ole kompetenttia hoitaa sosiaali- ja terveysministetin toimialalle kuuluvia ministerin tehtäviä?
      Perussuomalaiset
      60
      1432
    6. Sakarjan kirjan 6. luku

      Jolla korva on, se kuulkoon. Sain profetian 22.4.2023. Sen sisältö oli seuraava: Suomeen tulee nälänhätä niin, että se
      Profetiat
      20
      1246
    7. Elia tulee vielä

      Johannes Kastaja oli Elia, mutta Jeesus sanoi, että Elia tulee vielä. Malakian kirjan profetia Eliasta toteutuu kokonaan
      Helluntailaisuus
      37
      1153
    8. Nellietä Emmaa ja Amandaa stressaa

      Ukkii minnuu Emmaa ja Amandaa stressaa ihan sikana joten voidaanko me koko kolmikko hypätä ukin kainaloon ja syleilyyn k
      Isovanhempien jutut
      10
      1127
    9. Söpö lutunen oot

      Kaipaan aina vaan, vaikkakin sitten yksipuolisesti.
      Ikävä
      11
      1118
    10. Avaa sydämesi mulle

      ❤ ❤❤ Tahdon pelkkää hyvää sulle Sillä ilmeisesti puhumalla Avoimesti välillämme Kaikki taas selviää Kerro kaikki, tahdo
      Ikävä
      36
      1102
    Aihe