Exemplo n.º 1
0
//*********************************************
//********* TIMER 1 interrupt handler *********
// Action: Test if RTC crystall is runing, like
// 		   Toglle LEDx with frequency 1Hz. 
//*********************************************
void __ISR(_TIMER_1_VECTOR, ipl3) Timer1Handler(void)
{
    // clear the interrupt flag
    mT1ClearIntFlag();
	LED0_IO ^= 1;	
	
	// Check and display LEDs status into Terminal
	USART_Test_Menu_Begin();
	if(PORTDbits.RD0){	
		USART_Send_String("\n\r        | LED1 |   ON   |  :)   ");
		USART_Send_Data(0X01);	// emoticon ASCII code
		USART_Send_String("  |");	
	}
	else{
		USART_Send_String("\n\r        | LED1 |   OFF  |  :(   ");
		USART_Send_Data(0X02);	// emoticon ASCII code
		USART_Send_String("  |");	
	}
	if(PORTDbits.RD1){	
		USART_Send_String("\n\r        | LED2 |   ON   |  :)   ");
		USART_Send_Data(0X01);	// emoticon ASCII code
		USART_Send_String("  |");	
	}
	else{
		USART_Send_String("\n\r        | LED2 |   OFF  |  :(   ");
		USART_Send_Data(0X02);	// emoticon ASCII code
		USART_Send_String("  |");	
	}
	if(PORTDbits.RD2){	
		USART_Send_String("\n\r        | LED3 |   ON   |  :)   ");
		USART_Send_Data(0X01);	// emoticon ASCII code
		USART_Send_String("  |");	
	}
	else{
		USART_Send_String("\n\r        | LED3 |   OFF  |  :(   ");
		USART_Send_Data(0X02);	// emoticon ASCII code
		USART_Send_String("  |");	
	}
	USART_Send_String("\n\r         ------ -------- ---------- \n\r");
}
Exemplo n.º 2
0
// Initialize the RFA1's low-power 2.4GHz transceiver.
// Sets up the state machine, and gets the radio into
// the RX_ON state. Interrupts are enabled for RX
// begin and end, as well as TX end.
uint8_t rfBegin(uint8_t channel)
{
	USART_Send_String("RF Init started\n");
	for (int i=0; i<128; i++)
	{
	radioRXBuffer.buffer[i] = 0;
	}
	radioRXBuffer.tail = 0;
	radioRXBuffer.head = 0;

	// Transceiver Pin Register -- TRXPR.
	// This register can be used to reset the transceiver, without
	// resetting the MCU.
	
	TRXPR |= (1<<TRXRST);   // TRXRST = 1 (Reset state, resets all registers)
	_delay_ms(1);

	//TRXPR &= ~(1<<TRXRST); //clear reset (RZ)
	// Transceiver Interrupt Enable Mask - IRQ_MASK
	// This register disables/enables individual radio interrupts.
	// First, we'll disable IRQ and clear any pending IRQ's
	IRQ_MASK = 0;  // Disable all IRQs

	// Transceiver State Control Register -- TRX_STATE
	// This register controls the states of the radio.
	// First, we'll set it to the TRX_OFF state.

	TRX_STATE = TRX_OFF;  // Set to TRX_OFF (0x08) state |  0xE0 = 11100000 
	_delay_ms(1);  
	USART_Send_String("\nTRX_STATE Set to off\n");
	
	// Transceiver Status Register -- TRX_STATUS
	// This read-only register contains the present state of the radio transceiver.
	// After telling it to go to the TRX_OFF state, we'll make sure it's actually
	// there.
	if ((TRX_STATUS & 0x1F) != TRX_OFF )// Check to make sure state is correct | 0x1F = 00011111
		return FAILURE;	// Error, TRX isn't off
	// Transceiver Control Register 1 - TRX_CTRL_1
	// We'll use this register to turn on automatic CRC calculations.
	TRX_CTRL_1 |= (1<<TX_AUTO_CRC_ON);  // Enable automatic CRC calc. 
  
	// Enable RX start/end and TX end interrupts
	IRQ_MASK = (1<<RX_START_EN) | (1<<RX_END_EN) | (1<<TX_END_EN);
  
	// Transceiver Clear Channel Assessment (CCA) -- PHY_CC_CCA
	// This register is used to set the channel. CCA_MODE should default
	// to Energy Above Threshold Mode.
	// Channel should be between 11 and 26 (2405 MHz to 2480 MHz)
	if ((channel < 11) || (channel > 26)) channel = 11;  
	
	PHY_CC_CCA = (PHY_CC_CCA & 0xE0) | 11; // Set the channel to 11
	
	// Set transceiver transmit power
	PHY_TX_PWR = 0; //maximum power @ 3.5dBm / 2mW
  
	// Finally, we'll enter into the RX_ON state. Now waiting for radio RX's, unless
	// we go into a transmitting state.
	TRX_STATE = (TRX_STATE & 0xE0) | RX_ON; // Default to receiver
	USART_Send_String("RF Init OK\n");
	return SUCCESS;
}