Parallellport programmering, hjelp trengs!

G

gvanto

Guest
Jeg har bygget en liten DAC konverter å arbeide på parallellporten.
Jeg bruker Dev-cpp til å sende ut prøver av et cosinus bølge (se koden nedenfor) i C ...

Den raskeste output frekvensen jeg kan få fra DAC er i underkant av 700 Hertz (ie. raskest mulig "for" loop jeg kan tenke på).Dette bruker 255 samples / perdiod - mindre prøver kan selvsagt få en høyere frekvens produksjon på dyre i oppløsning.

Dette er litt dissapointing som jeg håper å kunne bygge frekvenser opp til 20KHz si minst.

Im benytter en 800MHz CPU bærbar btw.

Any help / råd om å øke utskriftshastighet (kan det gjøres?) Vil bli verdsatt.Jeg har hørt at å bruke Direct Memory Access (DMA) er raskere, men jeg har ikke fått det svakeste idé hvor jeg skal begynne og om økningen i hastighet er viktig?

Til slutt ideen var / er å implementere en digital (lyd) filter i programvare - er dette mulig, eller skal jeg bare ikke bry?

Hjelp mye verdsatt,
gvanto
Code:int N = 255; / / Number of samples / periode

int k;

double pi = 3.1459;mens 1 () (

for (k = 0; k <= N; k )

(Resultatet = 0.5 * cos (2 * k * pi / N) 0,5; / Halve wave, legg 0.5 DC for å få har bare

verdi = mobilen (resultat * 255);

Out32 (BASE_ADDRESS, value);)

)

 
Du kan forsøke å beregne verdiene først og deretter lagre dem i en se opp tabell, circuler buffer, og deretter gå gjennom tabellen outputing verdiene.

 
Takk, men jeg tror du refererer til en maskinvarebasert løsning (non-PC) rett?

(I dont se hvor i C dette ville gjøre det noe raskere)

Hvis ja, thats OK yeah kunne prob bruke EPROM eller noe, men den ikke virkelig hjelpe meg med henblikk på hva im prøver å gjøre (se mitt budskap over igjen

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Smil" border="0" />
 
Nei, beregningene tar mye tid, gjør dem først, lagre resultatene i en rekke, og deretter gå gjennom matrisen, mye raskere!
LOOP:

for (k = 0; k <N; k )
Out32 (BASE_ADDRESS, array [k]);

 
takk btbass,

Dette er imidlertid en enkel cosinus bølge utgang.Jeg ønsker å til slutt ha en inngang (ADC) scenen gjennom serieporten (sannsynligvis - er USB mye raskere enn serieporten?) etterfulgt av noen DSP operasjoner gjort i C-programvaren, deretter ut det på par.port.

mitt mutter i hodet mitt forteller meg er dette kommer til å kreve en helvetes mye prosessorkraft (litt mer enn beregning av cosinus verdi).

Gjør regner du dette er en mulig plan?

en venn av meg har nettopp kjøpt en kommersiell USB-baserte bitscope (PC-baserte oscilloskop) og dets utrolig hvor fort det er - er dette fordi USB er mye raskere enn pari.port?

hilsen og takk for hjelpen,
gvanto

 
Ja, usb er mye raskere.USB 1 full hastighet er 12MHz og USB 2 med høy hastighet er opp til 400MHz.

 
De matematiske funksjonene bør kjøre på megahertz på din maskin.Den typiske PC parallellporten hastigheten er svært grovt millioner Ins eller outs per sekund, avhengig av hovedkort chips.

Det er mulig porten er lammet på noen måte, men jeg gjetter at flaskehalsen ligger i Out32 ()-funksjonen.Det kan være å bruke noen convoluted operativsystemet port tilgang metoden, i stedet for en enkel OUT opcode.Prøv å sette en enkel løkke rundt en Out32 () for å måle hastigheten.Hvis det er problemet da prøve å bruke PortTalk eller annen port tilgang metoden (disse er for Windows):
http://www.lvr.com/parport.htm

USB1 er 12MHz, men det biter per sekund.Parallellporter er omtrent like i fart - gjerne litt tregere, men noen er raskere.USB2 fluer.

Vennligst ikke kryss-post.Det er mot styret regler.
http://www.edaboard.com/viewtopic.php?p=506179

 
OK takk fyrene vil se nærmere på denne merkelige én.

hilsen,
gvanto

 

Welcome to EDABoard.com

Sponsor

Back
Top