병렬 포트에 이상이 필요

F

foofi22

Guest
안녕,
내가 쓰려고 오전 일부
C 코드는 SPI의 링크를 통해 데이터를 병렬 포트를 사용하여 작성합니다.

예상대로 그 데이터를 기록할 수 있지만 처리량 단지로는 충분히 빠르지 못해이다.클럭 사이클 8us 사이의 시간이 필요
1us 수 있도록 개선하기 위해
어떤 방법이있다?

만약 내가 그냥 시계 라인 1,0,1,0
등 .. 토글로 코드의 섹션을 추가가장 빠른지기는 여전히 8us 시계 기간입니다.심지어 그게 가능한 건가요 1MBs에서 직렬로의 병렬 포트를 사용하여 작성하는?

 
위키 피 디아에서

LPT 포트, 그리고
5 개의 컨트롤 입력 (는 ACK, 바쁨, 선택, 오류, 그리고 더 많은는 8 - 비트 데이터 버스와 4 개의 제어 출력 (Strobe, linefeed, 초기화, 및 선택 있음)에 대한 핀이있다 용지 없음).자사의 데이터 전송 속도 12,000 kbit
/ s의입니다

다른 사이트에서

비록, 거기를 ECP와 EPP, 둘 사이의 차이는 근본적으로 병렬 포트를 통해 일부 예민한 오늘날의 다양한 기기의 높은 처리량을 지원합니다.B 조 & B 조 전자 병렬 카드의 다양한 주변 기기를 만날 수있는 라인을 운반 필요 :

ISAPP1 - 싱글 포트 카드는 ISA 병렬
SPP / BPP / EPP /를 ECP 2 MBps 최대
PCIPP1 - 싱글 포트 카드는 PCI 병렬
SPP / BPP / EPP 최대 5.5-6 MBps
PCIPP2 - 이중 포트 카드는 PCI 병렬
SPP / BPP / EPP 최대 5.5-6 MBps

위의 모든 SPP와 BPP 모드를 지원하는 주변 기기의 이전 및 프린터와 함께 기본적인 호환성을 보장합니다.SPP의 전진 방향으로 전송되는 데이터에만 제공하며, BPP
150 Kbps의 최대 데이터 전송 속도와 양방향
- 방향 기능, 각을 제공합니다.ISA에 대한 전반적인 최대 속도를
2 Mbps 및는 PCI를위한 5.5-6 Mbps로입니다.

 
그 하나의 라인은 빠르게 전환할 수있습니다 주어진 좋아, 모든 8us, 어떤 제안이 어떻게 빨라졌 될 수있다?(전 C 와 IO.DLL 병렬 포트를 사용하고 제어하는)

 
그래서 누군가를 확인하실 수있습니다 당신은 코드를 게시할 수있는가 ...

 
코드 :

# "io.h"포함

# 포함 <iostream>

표준을 사용하여 네임 스페이스;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;무효 UnloadIODLL () (

FreeLibrary (hio);

)int LoadIODLL () (

hio =하여 LoadLibrary ( "Io를");

만약 (hio == NULL을) 반환 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) GetProcAddress를 (hio, "IsDriverInstalled IsDriverInstalled");atexit (UnloadIODLL);반환 0;

)주요 무효 () (a int;

a = LoadIODLL ();ClrPortBit (890, 5); / / 출력하는 데이터 포트 설정/ 데이터에 / 지금 토글 비트 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);

SetPortBit (888, 0);

ClrPortBit (888, 0);

)
 

Welcome to EDABoard.com

Sponsor

Back
Top