Reikia 1us laikrodis laikotarpį lygiagrečiai uoste

F

foofi22

Guest
Labas,
Aš stengiuosi parašyti C kodo rašyti duomenis per tam SPI nuorodą naudojant lygiagrečiai uosto.

Aš galiu parašyti duomenis, kaip tikėtasi, tačiau apyvarta yra ne pakankamai greitai.Laikas tarp laikrodžio ciklai yra 8us šį reikia 1us, ar yra kokiu nors būdu patobulinti šią?

Jeigu aš tiesiog pridėkite skyrių kodas przełączać laikrodis linija 1,0,1,0
ir tt ..greičiau jis bus vis dar 8us laikrodis laikotarpį.Tai net galima rašyti 1MBs serijiniu naudojant lygiagrečiai uosto?

 
Wikipedia

Lygiagrečiai uoste yra 8 bitų duomenų autobusai ir keturi kaišteliai kontrolės produkcijos (Strobe, eilutės, inicijuoti ir pasirinkite In), ir dar penki kontrolės sąnaudos (ACK, Užimta, Pasirinkite, klaidos, ir knyga Out).Jos duomenų perdavimo greitis yra
12000 kbit / s.

ir iš kitos svetainės

Nors yra keletas labai skirtumus tarp ECP ir ELP, tiek iš esmės remti aukštojo apyvarta šiandien įvairių prietaisų per lygiagrečiai uostų.B & B Electronics vykdo linija lygiagrečiai kortelės atitinka jūsų įvairių periferiniai reikia:

ISAPP1 - ISA Paralelus Single Port Card SPP / BPP / EPP / ECP 2 Mbps maksimalų
PCIPP1 - PCI Paralelus Single Port Card SPP / BPP / ELP 5,5-6 MB
/ s didžiausios
PCIPP2 - PCI Paralelus Dual Port Card SPP / BPP / ELP 5,5-6 MB
/ s didžiausios

Visos aukščiau išvardytos paramos SPP ir BPP režimų užtikrina pagrindines suderinamumo su senesnėmis periferiniai ir spausdintuvai.SPP suteikia pirmyn kryptimi tik perduoti duomenis, et BPP suteikia dvikryptė funkcija, kiekvienas su didžiausią duomenų perdavimo spartą 150 kbps.Todėl bendrą maksimalų tarifą ISA yra iki 2 MB
/ s ir 5,5-6 MB
/ s PCI.

 
Gerai, kad greitai aš galiu przełączać vienoje eilutėje yra kas 8us, kokių nors pasiūlymų, kaip tai galima paspartinti?(I'm
using C ir IO.DLL kontrolės lygiagrečios uostą)

 
galite įdėti kodą, kad kas nors gali patikrinti, kad ...

 
Kodas:

# include "io.h"

# include <iostream>

using namespace std;PORTOUT PortOut;

PORTWORDOUT PortWordOut;

PORTDWORDOUT PortDWordOut;

PORTIN PortIn;

PORTWORDIN PortWordIn;

PORTDWORDIN PortDWordIn;

SETPORTBIT SetPortBit;

CLRPORTBIT ClrPortBit;

NOTPORTBIT NotPortBit;

GETPORTBIT GetPortBit;

RIGHTPORTSHIFT RightPortShift;

LEFTPORTSHIFT LeftPortShift;

ISDRIVERINSTALLED IsDriverInstalled;HMODULE hio;tuščia UnloadIODLL () (

FreeLibrary (hio);

)int LoadIODLL () (

hio = LoadLibrary ( "IO");

jei (hio == NULL) return 1;PortOut = (PORTOUT) GetProcAddress (hio, "PortOut");

PortWordOut = (PORTWORDOUT) GetProcAddress (hio, "PortWordOut");

PortDWordOut = (PORTDWORDOUT) GetProcAddress (hio, "PortDWordOut");

PortIn = (PORTIN) GetProcAddress (hio, "PortIn");

PortWordIn = (PORTWORDIN) GetProcAddress (hio, "PortWordIn");

PortDWordIn = (PORTDWORDIN) GetProcAddress (hio, "PortDWordIn");

SetPortBit = (SETPORTBIT) GetProcAddress (hio, "SetPortBit");

ClrPortBit = (CLRPORTBIT) GetProcAddress (hio, "ClrPortBit");

NotPortBit = (NOTPORTBIT) GetProcAddress (hio, "NotPortBit");

GetPortBit = (GETPORTBIT) GetProcAddress (hio, "GetPortBit");

RightPortShift = (RIGHTPORTSHIFT) GetProcAddress (hio, "RightPortShift");

LeftPortShift = (LEFTPORTSHIFT) GetProcAddress (hio, "LeftPortShift");

IsDriverInstalled = (ISDRIVERINSTALLED) GetProcAddress (hio, "IsDriverInstalled");atexit (UnloadIODLL);return 0;

)void main () (int a;

a = LoadIODLL ();ClrPortBit (890, 5); / / nustatyti duomenų uosto išėjimas/ / dabar przełączać KALTAI 0 duomenimis, autobusu

SetPortBit (888, 0);

ClrPortBit (888, 0);

SetPortBit (888, 0);

ClrPortBit (888, 0);

SetPortBit (888, 0);

ClrPortBit (888, 0);

SetPortBit (888, 0);

ClrPortBit (888, 0);

SetPortBit (888, 0);

ClrPortBit (888, 0);

SetPortBit (888, 0);

ClrPortBit (888, 0);

)
 

Welcome to EDABoard.com

Sponsor

Back
Top