Exemple #1
0
__interrupt void TimerAhandler(void)
{	
	//unsigned char Register;
          unsigned char Register[2];

         //kputchar('V');
	stopCounter;
	
	//Register = IRQStatus;		//IRQ status register address
	//irqCLR;				//PORT2 interrupt flag clear
	//ReadSingle(&Register, 1);	//function call for single address read
					//IRQ status register has to be read
        Register[0] = IRQStatus;	/* IRQ status register address */
        Register[1] = IRQMask;		//Dummy read	
	//ReadSingle(Register, 2);	/* function call for single address read */
        //ReadCont(Register, 1);
        ReadCont(Register, 2);
       // ReadSingle(Register, 1);



        *Register = *Register & 0xF7;	//set the parity flag to 0

	
	//if(Register == 0x00)
        if(*Register == 0x00 || *Register == 0x80) //added code
          	//if(RXTXstate > 1)
                //  	i_reg = 0xFF;
        	//else
			i_reg = 0x00;
	else
		i_reg = 0x01;
	
	__low_power_mode_off_on_exit();
	
}//TimerAhandler
Exemple #2
0
/*
 =======================================================================================================================
 =======================================================================================================================
 */
void InterruptHandlerReader(unsigned char *Register)
{
	/*~~~~~~~~~~~~~~~~*/
	/*
	 * char phello[20];
	 * //for testing
	 */
	unsigned char	len;
	/*~~~~~~~~~~~~~~~~*/

	/*
	 * Register = Register & 0xF7;
	 * //set the parity flag to 0 ;
	 * parity is not used in 15693 and Tag-It
	 */
#if DBG
	Put_byte(*Register);
#endif
	if(*Register == 0xA0)
	{					/* TX active and only 3 bytes left in FIFO */
		i_reg = 0x00;
#if DBG
		kputchar('.');	/* FIFO filling is done in the transmit function */
#endif
	}

	else if(*Register == BIT7)
	{					/* TX complete */
		i_reg = 0x00;
		*Register = Reset;			/* reset the FIFO after TX */
		DirectCommand(Register);
#if DBG
		kputchar('T');
#endif
	}

	else if((*Register & BIT1) == BIT1)
	{								/* collision error */
		i_reg = 0x02;				/* RX complete */

//		*Register = StopDecoders;	/* reset the FIFO after TX */
//		DirectCommand(Register);

		CollPoss = CollisionPosition;
		ReadSingle(&CollPoss, 1);
		
//		*Register = 0x0c;
//		ReadSingle(Register, 1);
		/*
		 * CollPoss &= 0xF7;
		 */
		len = CollPoss - 0x20;		/* number of valid bytes if FIFO */

		if(!POLLING)
		{
			kputchar('{');
			Put_byte(CollPoss);
			kputchar('}');
		}

		if((len & 0x0f) != 0x00) len = len + 0x10;	/* add 1 byte if broken byte recieved */
		len = len >> 4;

		if(len != 0x00)
		{
			buf[RXTXstate] = FIFO;					/* write the recieved bytes to the correct place of the
													 * buffer;
													 * */
			ReadCont(&buf[RXTXstate], len);
			RXTXstate = RXTXstate + len;
		}						/* if */
		*Register = StopDecoders;	/* reset the FIFO after TX */
		DirectCommand(Register);
		
		*Register = Reset;
		DirectCommand(Register);

		*Register = IRQStatus;	/* IRQ status register address */
                 *(Register + 1) = IRQMask;
		//ReadSingle(Register, 2);	/* function call for single address read */
                // ReadCont(Register, 2);
                    if (SPIMODE)
                       ReadCont(Register, 2);
                    else
                        ReadSingle(Register, 1);	

		TRF_IRQ_CLEAR();
	}