• Aucun résultat trouvé

IEEE 488 SWITCH OPTIONS:

Dans le document Sageutil Sage (Page 118-123)

The SAGE II must be assigned a bus address from 0-31. In the program example provided, it is assigned address 7. Generally,

the address of a bus device is assigned through use of an 8 bit dipswitch. GROUP-B on the SAGE II is used for this purpose. The user does not HAVE to use the switches. The SAGE II address and function bits can be defined directly if the switches are being used for another application.

If used, the standard definition for the switches is:

Swl-Sw5 Al-A5

Sw6 Dat

Sw7 Dal

Sw8 edpa

Sage II Listen & Ta~k address.

used to disable TALKER function.

set to 0 , enabling TALK.

used to disable Listen function.

set to 0 ,enabling LISTEN.

used to assign 2 consecutive address to one device.

As the SAGE II is generally a controller, set Sw6-Sw8 OFF (dwn).

Set Swl-Sw5 to the address.

EXAMPLE: addr=7 ---) Sw8 Sw7 Sw6 Sw5 Sw4 Sw3 Sw2 Sw1 dwn dwn dwn dwn dwn up up up

The GROUP-B switches are read by calling FUNCTION IB_SWITCH:

SW:=IB_SWITCH;

The entire switch setting should be given to the IB_INIT routine.

Just the Talk and LISTEN address ( the low 5 bits) of the SAGE II should be put in IB_SAGE:

IB_SAGE:=ORD (ODD (SW) AND ODD(31));

{ mask off address}

The switches on the other bus devices are defined as above. No two devices should have the same address.

BUSINITIALIZATION SECTION VII.3

VII.3 BUS INITIALIZATION:

Initialization of the bus is provided by calling IB_UNIT:

PROCEDURE IB_INIT (VAR CNTRL,ADDR: INTEGER;C~IDY7AIT: INTEGER) ; Set CNTRL = 1 if the SAGE is the controller, else 0.

Set ADDR = s the Talk & Listen address of the SAGE II.

Usually the value read from the switchesG It can be set without reading the switch.

All 8 bits must be defined as the high bits set/disable talk and listen functions. See the Switch Options.

Set CrilD~'lAIT= x Time required for slowest device to do cmd.

Specify in usec, divided by 2.

The Cz.ID~lAIT time is necessary for devices (such as the HP161SA logic analyzer) which will handshake on a bus command but not actually finish processing it for a longer period of time. This time is only for a command, not a transfer of data. The time must be set for the SLOWEST device. Each "tick" is 2us. Convert the time to usec then divide by 2 to get CMDWAIT. If the instrument documentation does not specify a command time, set CMDWAIT:=I; If this is too fast, the device may ignore the controller commands especially when changing from one mode of operation to another.

Increase CNDWAIT until satisfied with the device response.

During the initialization process these events occur:

TMS9914 interrupts are shut off.

The 488 bus is cleared with an IFC.

The remote enable mode is ON.

The SAGE is optionally the IEEE-488 bus controller.

All devices are inhibited from talking or listening.

The BUSSTATUS array is zeroed.

SAGE II USER'S MANUAL [1.3] 1982

THE IEEE-488 SUPPORT DEVICE DEFINITION SECTION VII.4

VII.4 DEVICE DEFINITION:

Now the user program must define the devices on the bus and what they can do. This is done with BUSSTAT:

PROCEDURE BUSSTAT(BDEV,STATUS:INTEGER);

Call it once for each device with

BDEV = Bus address of the device. The switch setting on the back of each device determines the device address. These are generally labeled AS-AI and create an address in the range 0-31.

No two devices can have the same address.

STATUS = The value of this is created by adding up the functions that the device can do:

TLK= 1: device can talk LST= 2: device can listen

TAK= 4 : devic·e can take control CTR= 8: device inits with control SRQ= 16: device can send an SRQ

PP= 32: device expects to be parallel polled (default is serial poll)

IAM= 64: self

-

this device is the SAGE II EXAMPLE: BUSSTAT(DEVlS,TLK+LST+SRQ);

At this point, the initialization process is now complete.

IB_INIT can be recalled if necessary at any time.

SUPPORT 'rALKING

SECTION VII.S

VII.S SAGB II AS A 'tALKER:

Sending data from the SAGE II to a device on the bus is done with either :

PROCEDURE IB_TALK(LDEV:INTEGER;VAR TBUF:INTEGER;LNG:INTEGER);

PROCEDURE IB_TALKS(LDEV:INTEGER;S:STRING);

LDEV is set to the address of the device that will LISTEN.

TBUF is the address of the first byte that the SAGE II will send. See the following explanation on setting up the USER BUFFER.

LNG is the number of byte/chars to send.

S TALKS is a special case of TALK where string S is sent to the listener. Up to 89 chars are sent. If the listener requires a terminator other than CR with EOI (end-of-input flag) it must be added to the str ing. TALKS is convenient for most character transfers, the user does not have to set up a buffer area.

EXAMPLE: TALKS ( 'MD0 ; I ) ; {Sets HPl6lS to 24-bit mode}

{The ,"I" is the terminator}

TALK will set up the DEV device to listen, the SAGE II to talk and send the data. An error will be returned if not successful in IB_ERR:

4 timeout occured while sending byte - no handshake.

7 Listen dev is not capable of listening.

SAGE II USER'S MANUAL [1.3] 1982

THE IEEE-48B SUP~ORT actually received is returned.

MORE is set false to start getting data. If error 2 occurred

THE IEEE-488 SUPPORT USER BUFFER

SECTION VII.7

VII.7 USER BUPPER:

The TALK and HEAR routines do not setup their own buffer areas.

Instead they work directly out of an area defined by the user.

This allows the user to create any size buffer needed. It also avoids the overhead of moving data back and forth between the Unit and the user program.

The data sent/received on the IEEE bus is in 8-bi t bytes'! The user buffer should be defined as a PACKED ARRAY[x •• y] OF 0 •• 255.

As byte parameters can not be passed through procedure calls, the buffer definition must include a variant so that the starting address of the buffer can be accessed.

The following example shows how a buffer of 512 bytes is set up.

It also shows that the buffer need not be as large as the amount of data expected. Use of the "ltIORE" option in IB_HEAR allows receiving data in blocks the size of the buffer.

PROCEDURE GETDATA1 CONST FULL=21

VAR STATE:PACKED RECORD CASE INTEGER OF 1: (B:PACKED ARRAY[O •• 5ll] OF BYTE) 1 2: (W: INTEGER) 1

END1

MORE:BOOLEAN1 DLNG:INTEGER1 BEGIN

MORE:=FALSE1 DLNG:=5121 REPEAT

IB_HEAR(HP16l5,STATE.W,DLNG,MORE)1

SAVEIT1 {Save data}

MORE:=TRUE1

UNTIL IB_ERR<>FULL;

END 1

SAGE II USER'S MANUAL 11.3] 1982

Dans le document Sageutil Sage (Page 118-123)

Documents relatifs