//funcion de control del contador
BOOL Contador(WORD timebase, BYTE *Packet)
{
int i;
BYTE Dato;
Dato = 0x00;
//PB2=Parar
//PB3=Limpiar
//PB4=SEL
OEB |= EnFLAGS; //Habilita las banderas de control para el
contador
OEA = 0x00; //Habilitar puerto A como entradas
//inicializacion
IOB &= STOP;
IOB |= CLEAN;
IOB &= COUNTER_L;
_nop_( );
_nop_( );
_nop_( );//espera que se propaguen las sennales de control
//Bajar el pin limpiar
for (i =0; i < PACKETSIZE; i +=2)
{
IOB &= NO_CLEAN;
_nop_( );
_nop_( );
_nop_( );
//iniciar conteo
IOB |= START;
EZUSB_Delay(timebase); //Espera timebase milisegundos
IOB &= STOP;// detener el conteo
_nop_( );
_nop_( );
_nop_( );
_nop_( );
_nop_( );
_nop_( );
//leer parte baja
IOB &= COUNTER_L;
_nop_( );
_nop_( );
_nop_( );
Packet[i] = IOA;
//Leer parte alta
IOB |= COUNTER_H;
_nop_( );
_nop_( );
_nop_( );
Packet[i+1] = IOA;
IOB |= CLEAN;
_nop_( );
_nop_( );
_nop_( );
}
return TRUE;
}
BOOL Get_Packet(BYTE *Packet)
{
int i;
// BYTE Pack[PACKETSIZE];
// Utilizar el puerto B para implementar el sistema de control
del CAD
// PB0= #CS
// PB1= #INT
OEB |= PortB0_OUTEN;//Habilitar puerto B.0 como salida
OEB &= PortB1_INEN; //Habilitar el puerto B.1 como
entrada
OEA = 0x00; //Habilitar puerto A como entradas
IOB &= EndConversion; //Primero termina la conversión
(PIN #CS en alto). Esto se hace solo por seguridad en caso
que otra
//parte del código trate de
manipular este puerto
for ( i = 0 ; i < PACKETSIZE; i++ )
{
//Espera 500 ns para iniciar la transacción
/////////////////////////////////////////////////////
//24 nop instructions at 48 MHz = 500 ns delay
/////////////////////////////////////////////////////
_nop_( ); /* 1 CPU cycle delay for hardware */
_nop_( );
_nop_( );
_nop_( );
_nop_( );
_nop_( );
_nop_( );
_nop_( );
76
Comentarios a estos manuales