ECP Port Project: Hjælp mig optimere min kode

A

aamiralikhoja

Guest
Kære Fellows.Jeg arbejder på ECP Port Project Port ECP Works Fine.Jeg tager data

fra microcontroler på 16Bytes/Sec og lagring i hukommelsen buffer.efter

lagring, jeg writting data til harddisken dette programm virker fint i dos hjælp

watcom c compiler men data går tabt, når du kører i Windows 98 ved hjælp af visuelle c

compiler.Jeg bruger P-3 pc.IAM via følgende psedo kode.

Kontrol FIFO fuld flag i mit Visual C programm efter FIFO fyldt.Jeg har læst fifo gennem følgende kode
gøre
(
gøre
(
) While (! Fifofull);
for (i = 0; i <16, i )
buffer [i j] = inport (fifiaddr);
j = j 16
)) While (buffer! Fuld);
hvor buffer 1MB hukommelse.
Sådan opbevarer og behandler data i sådanne vilkår i MS Windows.Sådan
optimeret denne kode.Jeg hørte data ECP kan trasfer data på IMBits / Sec Hvordan
det kan done.pleas svar.

 
Din kode er svær at læse - ingen indrykning, seler gøre krøllede ikke stemmer overens, syntaksfejl "buffer! Fuld".

Det sort-af udseende din loop venter indtil FIFO er fuld, før det begynder at læse nogen af bytes.Det ville medføre løbende 100% CPU udnyttelse (meget anti-social Windows adfærd), og nederlag fleste af formålet med at have en FIFO (kan du risikere at overflow hvis bytes 16 og 17 ankommer tæt sammen).

Har du egentlig kun seksten bytes per sekund?Du skal blot starte en 20 Hz timer at kontrollen FIFO tomme flag og input alle tilgængelige bytes.

 
Kære

Tak for svar.Det er ikke syntaksfejl men stavet forkert.

Aactually data kommer på 16KBytes/Sec og jeg venter

indtil FIFO bliver fuld efter FIFO fyldt Iam læser

Hele FIFO og loop igen for at tjekke fifoFull Flag.How Du kan læse FIFO

så der er noget tab af data.I er benytter min ansøgning i

konsol type projekt.Næste Jeg vil flytte MFC projekt.

 
16K bytes / sek gør en stor forskel.Hvis dit eksterne hardware enheden har ingen FIFO buffer, så du kan nok ikke gøre rent software input loop fungere pålideligt under Windows på grund af multitasking forsinkelser.En 1kHz multimedia timer og 16-byte ECP FIFO kommer meget tæt på dine krav, men det vil formentlig lige netop ikke.I så fald skal du have en enhedsdriver, der bruger afbryder og måske DMA.Big projekt!Forhåbentlig kan du tilføje en ekstern FIFO at undgå, at hovedpine.

Nogle diskussion om drivere:
http://www.edaboard.com/viewtopic.php?t=98894

 

Welcome to EDABoard.com

Sponsor

Back
Top