Rinnakkaisporttiin kontrolleria

portin_käyttäjä

Tulipa säädettyä linux-rinnakkaisportin kanssa, kun piti ohjata ulkoista laitetta jolla saa kerättyä mm. dataa lämpötilasta, kosteudesta, tuulesta ym. Pistin väliin avr:n - suoraan kiinni data-porttiin ja väliin 270 ohmin vastukset. Hyvin toimii! Samoin control ja status portin kautta pystyy suoraan kirjoittamaan avr:ltä pc:lle.
Varsinainen pihvi oli kuitenkin huomata, että parport_pc on melkoisen kätevä käytettynä yhdessä ppdev:n kanssa. Tällä voi tehdä jopa keskeytyskäsittelijän, joka asettaa keskeytyksessä satunnaisen nastan control-portissa. Data bufferoituu ja on luettavissa /dev/parport0:sta tavanomaisilla read()/write() käskyillä. Portin saa komennettua haluttuun tilaan ioctl() käskyillä. Hienointa tuossa on kuitenkin se, että riippuu täysin rakentamasi laitteen tuesta, mitä nuo tekevät: Jos on SPP-laite, tekee driveri SPP I/O:ta. Jos laitteesi tukee EPP:tä saat epp-tuen samasta driverista. Eli omasta laitteesta voi tehdä nopeamman yksinkertaisesti hoitamalla kättelyn nopeammalla protokollalla, kuten EPP.
Kannattaa muuten poistaa sitten kaikki cups/sane asennukset koneelta - muutamankin kerran kone jumahti, kun oma laite ei osannut "IEEE-1284" kättelyä vaan teki jotain puolinaista. Parasta suosiolla komentaa portti vaan haluttuun tilaan ja jättää neuvottelumoodit laitteiden kanssa pois laskuista!

6

107

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • usb_adapterilla

      Tulipa tässä tutkittua hieman lisää asiaa ja ilmeisesti on mahdollista saada oma laite, joka käyttää EPP-moodia, myös toimimaan USB-väylässä. Mutta se ei sitten tapahdu enää kirjoittamalla kirjoitinportin rekistereihin. Tätä varten tarvitaan USB-adapteri, joka tukee EPP-moodia ja tämän kun tuikkaa koneeseen, se näkyy tulostinjonona - ppdev ei siis ole käytössä, vaan pitää kirjoittaa suoraan "kirjoittimelle" menevään lp-jonoon(Esimerkki linkissä). Eli handshake-signaalit unohtamalla ja tekemällä vain epp-read/epp-write-komentoja pitäisi oma laite saada toimimaan:
      http://thx8411.over-blog.com/pages/Add_TTL_outputs_to_your_USB_Laptop_Part_1_Hardware-3229030.html
      Voi toki olla mahdollista saada myös kontrollit toimimaan, mutta se riippuu adapterista miten niitä kontrolloidaan - eikä taida mennä kovin helposti jos ajuria ei ole valmiina tyrkyllä. Sen sijaan pelkkä io toimii aina ja on itse asiassa aika nopea!

    • portit_harrastekäyttöön

      Tuolta ao. linkistä löytyy tietoa, miten tehdä EPP-yhteensopiva kättely. Homma on itse asiassa todella helppo: /DataStrobe:n voi kytkeä suoraan invertterin kautta /Wait:iin. DataStrobe on yleensä varsin lyhyt pulssi, n. 0.5us, koska portista pitää saada läpi n. 2MB/s. Myöskin ajoitus wait-signaalin käytölle on tiukka, joten suosittelen tuota invertteriä. Nasta kontrolleriin kytkettynä suoraan keskeytyskäsittelijään voi mennä jo liikaa aikaa 8-bittisellä avr:llä ja c:llä ohjelmoituna! Vähän nopeammalla prosarilla tai asm:lla homma toki onnistuu.
      http://retired.beyondlogic.org/epp/epp.htm
      Itse laittaisin tuohon shift-rekisterin joka kykenee tekemään parallel-load:in ja hoitaisin liikenteen eteenpäin SPI:n kautta avr:lle. IRQ:n pitäisi myös linux-ajurissa toimia: Eli data linjoille ja irq-pyyntö aiheuttaa EPP-read:in - kunhan keskeytykset on kytketty päälle ajurissa. Siispä käyttämällä kaksi-suuntaista shift-rekisteriä saa tehtyä SPI:n kautta periaatteessa sekä luku että kirjoitusoperaatiot helpolla, koska tyrkyllä on myös /Write signaali erottamaan portin suunnan. Pitää vain kehitellä sopiva datavuon valvonta, jotta homma ei mene puihin - ja pitää kaikki portit oletuksena sisäänpäin ja laittaa silti datalinjoille n. 270 ohmin vastukset lisäturvaksi! Kontrollinastoihinhan näitä ei voi käyttää, koska outputin lisäksi kyseessä on myös input ylösvetovastuksella jonka suuruus riippuu toteutuksesta.

    • avr_vinkki

      Jos osaat AVR:n assemblyä niin sitä voi "sekoittaa" helposti Free Pascal koodiin jolloin saadaan nopeutta verrattuna c-koodiin.
      http://wiki.freepascal.org/AVR_Programming
      Ongelmaksi voi muodostua se että käytössä on jo jotain valmiita c-kirjastoja.

      • Haminaattori

        Kyllä C näytti tykkäävän asmipätkistä. Liitti mukisematta pätkät käännökseen ja saatiin lyhennettyä ja nopeutettua koodia merkittävästi. Jos C on jotenkin hallussa, sillä selviää ihan hyvin eikä usean korkean tason kieli opettelu välttämttä tuo lisäarvoa ohjelmointiin. Ellei sitten ole vähän niinku masokistin vikaa niinkuin minulla.


      • fpc_tykkääjä

        Lueskelin tuota fpc-keskeytyskäsittelijä juttua ja tuostahan jo näkee, mikä sen käsittelijän oikein "hyydyttää" korkeamman tason kielellä. Nimittäin rekistereiden talteen laitto vie oletuksena aivan törkeän paljon aikaa! Kun avr-asm lupaa hypyn 4 kellojaksolla keskeytysrutiiniin, niin siinä ei ole otettu huomioon mitään rekisterien push/pop:eja. Laskeskelin itse tuossa, että ilman optimointia kääntäjä käytti (sattumalta tässä tapauksessa) 53 kellojaksoa tuohon toimintaan. Siitä voi sitten laskea, kuinka usein käsittelijää voi kutsua.. eli jos jokainen byte aiheuttaa erikseen keskeytyksen ei siinä kovin kummoista nopeutta kyllä saada.


    • muistin_siirto

      Yritän tässä toteuttaa EPP-rutiinia SRAM-piirille. Homman pitäisi toimia siten, että ensin tule address-sykli, jolla asetetaan muistisivu(256 tavun lohkon ylemmät osoitebitit) lukkopiiriin. Tämän jälkeen syötetään max. 256 datasykliä, jolloin laskuri laskee 8-bittistä osoitetta eteenpäin. Koska SRAM piiri sattuu olemaan 32kB, on käytössä 128 sivua. Kuva selventää:
      http://aijaa.com/jEWLao
      Kuten näkyy SRAM on myös kytketty atmega128:n XMEM liityntään, joten sitä voi käyttää piirin ulkoisena muistina silloin kun EPP-portilla ei ole liikennettä. Tämän voi varmistaa asettamalla nBusy:n ja odottamalla 1uS.
      Varmasti nopein tapa siirtää dataa kontrollerin ja PC:n välillä jos haluaa käyttää EPP:tä!

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

    Luetuimmat keskustelut

    1. 148
      4223
    2. Katso: Ohhoh! Miina Äkkijyrkkä sai käskyn lähteä pois Farmi-kuvauksista -Kommentoi asiaa: "En ole.."

      Tämä oli shokkiyllätys. Oliko tässä kyse tosiaan siitä, että Äkkijyrkkä sanoi asioita suoraan vai mistä.... Tsemppiä, Mi
      Tv-sarjat
      113
      3824
    3. Voi kun mies rapsuttaisit mua sieltä

      Saisit myös sormiisi ihanan tuoksukasta rakkauden mahlaa.👄
      Ikävä
      23
      2631
    4. Kyllä poisto toimii

      Esitin illan suussa kysymyksen, joka koska palstalla riehuvaa häirikköä ja tiedustelin, eikö sitä saa julistettua pannaa
      80 plus
      28
      1881
    5. "Joka miekkaan tarttuu, se siihen hukkuu"..

      "Joka miekkaan tarttuu, se siihen hukkuu".. Näin puhui jo aikoinaan Jeesus, kun yksi hänen opetuslapsistaan löi miekalla
      Yhteiskunta
      22
      1747
    6. Haluan jutella kanssasi Nainen

      Olisiko jo aika tavata ja avata tunteemme...On niin paljon asioita joihin molemmat ehkä haluaisimme saada vastaukset...O
      Ikävä
      15
      1629
    7. Poliisiauto Omasp:n edessä parkissa

      Poliisiauto oli parkissa monta tuntia Seinäjoen konttorin edessä tänään. Haettiinko joku tai jotain pankista tutkittavak
      Seinäjoki
      19
      1615
    8. Haluan tavata Sinut Rakkaani.

      Olen valmis Kaikkeen kanssasi...Tulisitko vastaa Rakkaani...Olen todella valmistautunut tulevaan ja miettinyt tulevaisuu
      Ikävä
      30
      1533
    9. Hermo mennyt sotealueeseen?

      Nyt hammaslääkäriaika peruttiin neljännen kerran. Perumiset alkoi tammikuussa. Nyt uusi aika elokuulle!????
      70 plus
      91
      1511
    10. Onko mies niin,

      että sinulle ei riitä yksi nainen? Minulle suhde tarkoittaa sitoutumista, tosin eihän se vankila saa olla kummallekaan.
      Tunteet
      18
      1501
    Aihe