How To Enable Video Capture And Playback Module (Init) - DIGITAL-LOGIC MICROSPACE PCC-P5 Technical User's Manual

Table of Contents

Advertisement

DIGITAL-LOGIC AG
PCCP5 Manual V2.3

4.11.2 How to enable video capture and playback module (Init)

This code should be executed before video starts flowing into the port.
1. Save and Set XRD0[4] = 1
2. Save and Set SAR04 = 0x2A; // To get wider (> 352) playback buffer width
Static USHORT XR60,XRD0,SAR04;
CaptureInit()
{
UCHAR XR_Index;
bVideoFlowingIn = 0; // assume video is not flowing into the port
XR_Index = ReadPortUshort(ulXrAddr); // Save XR Index
WritePortUchar(ulXrAddr,0xd0); // Read XRD0
xrD0 = ReadPortUshort(ulXrAddr); // Save XRD0
WritePortUshort(ulXrAddr,xrD0 | 0x7000);
// Enable video playback/Capture module
//
// Enable video port in 55x for ZV Port Style Video
//
WritePortUchar(ulXrAddr,0x60); // Read XR60
xr60 = ReadPortUshort(ulXrAddr); // Save XRD0
WritePortUshort(ulXrAddr,xr60 | 0x0300);
//
// Program 55x for playback of wider (> 352) video buffer.
//
WritePortUshort(ulXrAddr,0x044e); // Read SAR04
WritePortUchar(ulXrAddr,0x4f);
SAR04 = ReadPortUshort(ulXrAddr); // Save SAR04
WritePortUshort(ulXrAddr,(SAR04 & 0x00ff) | 0x2a00); // SAR04=2a
WritePortUchar(ulXrAddr,XR_Index); // Restore XR_Index
//
// Set video capture buffer address for both buffers.
//
u.d = osbMemAddress; // assign to a DWORD uinon to access bytes
WritePortUshort(ulMrAddr,((UINT)u.b[0] << 8) | MR_VIN_ADDR_1_L); //mr06
WritePortUshort(ulMrAddr,((UINT)u.b[1] << 8) | MR_VIN_ADDR_1_M); //mr07
WritePortUshort(ulMrAddr,((UINT)u.b[2] << 8) | MR_VIN_ADDR_1_H); //mr08
WritePortUshort(ulMrAddr,((UINT)u.b[0] << 8) | MR_VIN_ADDR_2_L); //mr09
WritePortUshort(ulMrAddr,((UINT)u.b[1] << 8) | MR_VIN_ADDR_2_M); //mr0a
WritePortUshort(ulMrAddr,((UINT)u.b[2] << 8) | MR_VIN_ADDR_2_H); //mr0b
WritePortUshort(ulMrAddr,((UINT)u.b[0] << 8) | MR_VDP_ADDR_1_L); //mr22
WritePortUshort(ulMrAddr,((UINT)u.b[1] << 8) | MR_VDP_ADDR_1_M); //mr23
WritePortUshort(ulMrAddr,((UINT)u.b[2] << 8) | MR_VDP_ADDR_1_H); //mr24
WritePortUshort(ulMrAddr,((UINT)u.b[0] << 8) | MR_VDP_ADDR_2_L); //mr25
WritePortUshort(ulMrAddr,((UINT)u.b[1] << 8) | MR_VDP_ADDR_2_M); //mr26
WritePortUshort(ulMrAddr,((UINT)u.b[2] << 8) | MR_VDP_ADDR_2_H); //mr27
//
// Set Aquisition rectangle to NULL (Left=-1, right=0) to avoid capturing of first
// frame. This is needed to latch the capture counter with the new address.
//
WritePortUshort(ulMrAddr,0xff0e); // program Left=-1
WritePortUshort(ulMrAddr,0xff0f);
WritePortUshort(ulMrAddr,0x0010); // program right=0
WritePortUshort(ulMrAddr,0x0011);
WritePortUshort(ulMrAddr,0x0012); // program top=0
WritePortUshort(ulMrAddr,0x0013);
WritePortUshort(ulMrAddr,0x0014); // program bottom=0
WritePortUshort(ulMrAddr,0x0015);
74

Advertisement

Table of Contents
loading

Table of Contents