74ls299 ja kirjoitinportti

Tuli mieleeni säästää muutama io-nasta kontrollerista, kun siinä on SPI-liitäntä saatavilla. Etsin sopivaa serial/parallel muunnin piiriä ja tuo näytti tarkoitukseen sopivalta. Onko kukaan tuolla kokeillut jotain vastaavaa? Idea olisi käyttää "EPP moodia", eli data-io:n suunnan määräisi nWrite. Samoin olisi pelkkä data-moodi käytössä, eli nDataStrobe:lla siirtäisi dataa rinnakkaismuodossa ja nWait muodostettaisiin ihan vaan invertterillä strobesta.
Tuo piiri tarvitsee lisäksi S0 ja S1 ohjausnastoihin "load" ja "shift" komennot, eli vähän irtologiikkaa siihen. Lisäksi OE0 ja OE1 kytketään suoraan nDataStrobe:en ja invertterin kautta nWrite:en.
Kellopulssi on kytkettävä ainakin nDataStrobe:en "load":n aikana. Lisäksi "shift":n aikana pitää kontrollerin kello kytkeä tähän nastaan.
Katsotaanpa toimiiko tällä reseptillä.
5115
Äänestä

Muut lukivat myös

Vastaukset 5

Vanhimmat

Ei ole tullut tuollaisella kokeiltua, mutta 74HC165 inputtina (MISO) ja 74HC595 outputtina (MOSI) , niin saa samalla siirrolla molemmat suunnat ja nuo muistaakseni pystyi ketjuttamaan.

t:p

Äänestä

Katselin tuota hiukan uudemman kerran ja kyllä se näyttää jo siltä, että pitää kokeilla. S0/S1 voisi periaatteessa olla normaalisti "shift" tilassa ja "load" tulisi yksinkertaisesti nStrobe:sta invertoituna.
nWait tulisi myös nStrobe:sta, mutta jos se ei riitä, niin periaatteessa SPI:n /SS-signaalia voisi kanssa hyödyntää tässä.. voi muuten mennä vähän datavuon hallinta hankalaksi.
Master-moodissa ajattelin ajaa, jolloin kellot tulee kontrollerilta automaattisesti. Ainoastaan tuo nStrobe/"load" kello pitää kiikuttaa jotenkin.
Kyllä tällä pitäisi 2MB/s nopeuteen päästä, mikä kyllä riittää. Lisäksi data ei kärsi jitteristä, kuten USB-väyläisten kohdalla => ohjelmien kirjoittaminen yksinkertaistuu merkittävästi, kun bufferointia ei välttämättä tarvita.

Äänestä

Sain kyhättyä komponentit yhteen tuossa. Nyt näyttää siltä, että driverit on NetMos:n parallel-kortilla(9865) niin sekaisin, että jopa ajurin latauskerrat vaikuttaa lopputulokseen.. veikkaan, että tämä kortti ei toimi ihan siinä moodissa, missä olettaisi.
Päädyin kirjoittamaan portin komentoja ihan inb/outb:llä. EPP:n mukaisesti, kun alustaa linjat, päätyy tilanteeseen, jossa ei näytä data-write rekisteriin toimivalta. Sitten kun vähän yleismittarin kanssa mittaillen - lopussa tarvitsee muisti skooppiakin - saa signaalit oikein päin, onkin ihmettelyn aika. nWrite: tämä 0V:hen. nDataStrobe: pitää asettaa vastoin ohjetta signaali siten, että on 0V:ssä ennakolta. Tämän jälkeen datan kirjoitus EPP rekisteriin aiheuttaa 0V-5V-0V pulssin nastassa 14. Jos siis tarvitsee sen 5V-0V-5V stroben, pitää kirjoittaa data normirekisteriin ja ctrl-rekisteriin strobet.. Jos jättää 5V:hen, ei pulssia tule!
Loput softasta onkin vielä täysin hukassa.. no, kontrollerin pitäisi osata väläyttää lediä, kun tulee strobe:sta keskeytys, mutta mitään ei välky.
Nyt kun tarkemmin miettii, niin nuo kuvatukset speksissä taitaa olla piirtänyt joku softa-heebo, koska näkökanta ei ole fyysisen tason signaaleissa - jotka on nimetty jopa väärin! :)

Äänestä

Menihän siihen aikaa, mutta nyt alkas olla toimintakunnossa tuo värkki ;) Nopeutta on n. 200kt/s, eli ei paljoakaan enempää kuin mitä standardi-moodissa olisi. Periaatteessa tuo siirtorekisteri antaa kuitenkin mahdollisuuden, kun käyttää F-sarjaa jopa 100mbit/s nopeuksiin. EPP-moodille puolestaan luvataan "hyvällä" kortilla 8Mt/s ja tavallisella PC:n takaa löytyvällä 1-2Mt/s. LS-sarjan logiikka siis riittää vielä tuolle.
Toteutus menee käytännössä 74ls-sarjan logiikalla - ei riitä 8bit kontrollerissa nopeus millään.. 74ls299:ä on sinänsä mukava ohjata suoraan EPP-portilla, mutta itse tarvitsin lisäksi not, nand, nor ja and-piirit.
Juuh.. ja on ne piirretty netissä EPP- addr/data read-write kuvat oikein. Holtekin HT-6535 piirin datakirjassa on hyvät kuvat, mikäli aikoo itse toteuttaa jotakin vastaavaa.
Vielä on koodissa vähän hiomista. '299 toimii käytännössä itsenäisesti PC:n suuntaan ja nDataStrobe:lla generoidaan vaan luku/kirjoitus keskeytys(mikä kontrollerin näkökulmasta on sama asia). nAddrStrobea en edes käyttänyt, koska kontrollerin hitaus ei oikein sitä kannattanut. Toisaalta - nyt voin halutessani kytkeä kaksi kontrolleria samaan porttiin!

Äänestä

Softapuolesta tulikin helppo: Linuxista löytyy käsky outsb(port, buf, buf_length), jonka avulla saa lähetettyä EPP-porttiin buf_length tavua dataa kerrallaan.
Ajattelin tehdä tähän vielä sellaisen binäärilaskurin, joka laskee 8 bittiä ja käyttää 2-porttista muistia, jonka voi kytkeä suoraan kontrollerin osoiteväylälle. Eli komennot menee SPI:n kautta, mutta datan voi viedä suoraan muistiin/muistista.

Äänestä

Kommentoi aloitusta


serial-parallel kirjoitti:

Tuli mieleeni säästää muutama io-nasta kontrollerista, kun siinä on SPI-liitäntä saatavilla. Etsin sopivaa serial/parallel muunnin piiriä ja tuo näytti tarkoitukseen sopivalta. Onko kukaan tuolla kokeillut jotain vastaavaa? Idea olisi käyttää "EPP moodia", eli data-io:n suunnan määräisi nWrite. Samoin olisi pelkkä data-moodi käytössä, eli nDataStrobe:lla siirtäisi dataa rinnakkaismuodossa ja nWait muodostettaisiin ihan vaan invertterillä strobesta.
Tuo piiri tarvitsee lisäksi S0 ja S1 ohjausnastoihin "load" ja "shift" komennot, eli vähän irtologiikkaa siihen. Lisäksi OE0 ja OE1 kytketään suoraan nDataStrobe:en ja invertterin kautta nWrite:en.
Kellopulssi on kytkettävä ainakin nDataStrobe:en "load":n aikana. Lisäksi "shift":n aikana pitää kontrollerin kello kytkeä tähän nastaan.
Katsotaanpa toimiiko tällä reseptillä.

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