Exemple #1
0
//!  Checks Target Vdd  - Updates Target Vdd LED & status
//!
//!  Updates \ref cable_status
//!
uint8_t bdm_checkTargetVdd(void) {
#if (HW_CAPABILITY&CAP_VDDSENSE)
   if (bdm_targetVddMeasure() > VDD_2v) {
      RED_LED_ON();
      if (bdm_option.targetVdd == BDM_TARGET_VDD_OFF)
         cable_status.power = BDM_TARGET_VDD_EXT;
      else
         cable_status.power = BDM_TARGET_VDD_INT;
   }
   else {
      RED_LED_OFF();
      if (bdm_option.targetVdd == BDM_TARGET_VDD_OFF)
         cable_status.power = BDM_TARGET_VDD_NONE;
      else {
    	 // Possible overload
         cable_status.power = BDM_TARGET_VDD_ERR;
         VDD_OFF();
      }
   }
#else
   // No target Vdd sensing - assume external Vdd is present
   cable_status.power = BDM_TARGET_VDD_EXT;
#endif // CAP_VDDSENSE
   if ((cable_status.power == BDM_TARGET_VDD_NONE) ||
       (cable_status.power == BDM_TARGET_VDD_ERR))
      return BDM_RC_VDD_NOT_PRESENT;
   return BDM_RC_OK;
}
Exemple #2
0
/** Perform MMC block write from diskSect */
unsigned char WritePhysicalSector()
{
  unsigned char c;  




  //RED_LED = LED_ON;
  sectorAddress.l = sectorAddress.l * 2; //convert to bytes (combined with 8bit shift)
  c=MmcCommand(0x40 | 24, sectorAddress.b.b2, sectorAddress.b.b1,
	       sectorAddress.b.b0, 0);
  sectorAddress.l = sectorAddress.l >> 1; //convert back to blocks

  //ConsolePutChar('w');
  //ConsolePutHex8(c);
  
  if (c!=0x00) return (c); //Error - MMC did not go to write mode
  
/*
  while (c!=0x00) { //wait for BUSY token, if you get 0x01(idle), it's an ERROR!
    c = SPIGetChar();
    ConsolePutHex8(c);
  }      
*/  
  dataBufPtr = diskSect.raw.buf;
  SPIPutCharWithoutWaiting(0xFE);
  SPIWait();
  
  for (c=0;c<128;c++){
    SPIPutCharWithoutWaiting(*dataBufPtr++);   
    SPIWait();
    SPIPutCharWithoutWaiting(*dataBufPtr++);   
    SPIWait();
    SPIPutCharWithoutWaiting(*dataBufPtr++);   
    SPIWait();
    SPIPutCharWithoutWaiting(*dataBufPtr++);   
    SPIWait();
  }
  //ConsolePutChar('-');

  c = SPIGetChar();  //crc 1st byte (sends 0xff)
  c = SPIGetChar(); //crc 2nd byte (sends 0xff)
  c = SPIGetChar();
  //ConsolePutHex8(c); //This prints xxx00101, (usually e5) when data ok
  
//  while (SPIGetChar()!=0xff)      //busy wait moved to mmcCommand
//    ; // Wait until MMC not busy.     



  
  SPI8Clocks(16);
  DeselectMSD();
  SPI8Clocks(16);

  RED_LED_OFF();

  return 0;
}
Exemple #3
0
//Initialize IO control ports of LEDS
void InitIOForLEDs()
{
	LED_DDR |= (1<<RED_LED);
	LED_DDR |= (1<<GREEN_LED);

	RED_LED_OFF();
	GREEN_LED_ON();
}
Exemple #4
0
int main(void)
{
	int8_t i;
	
	rc_init();
	rfm70_init(RFM70_MODE_PTX, rfm70_addr);
	RED_LED_OUT();
	RED_LED_OFF();
	sei();
	
	while(1) {
		rc_get_code(&code);
		//RED_LED_TOGGLE();
		
		tx_buf[0] = code.addr;
		tx_buf[1] = code.data;
#if 0		
		for(i = 7; i >= 0; i--)
		{
			if(code.data & (1 << i)) {
				RED_LED_ON();
				_delay_ms(50);
				RED_LED_OFF();
				_delay_ms(50);
			}
			RED_LED_ON();
			_delay_ms(50);
			RED_LED_OFF();
			_delay_ms(50);
				
			_delay_ms(500);
		}
#endif
	
		if(0 == rfm70_transmit_packet(tx_buf,sizeof(tx_buf))) {
			RED_LED_TOGGLE();
		}	

	
		_delay_ms(70);
	
	}
}
Exemple #5
0
void core1_main(void)
{
    //asm volatile ("mov sp,%0" : :"r" (ram1));
    
    while(1)
    {
        for(j=0; j < 300000; j++); //wait for some time
        RED_LED_ON();
        for(j=0; j < 300000; j++); //wait for some time
        RED_LED_OFF();
    }
}
Exemple #6
0
int main(void)
{
	power_on_delay();
	timer0_init();
	rfm70_init(RFM70_MODE_PTX, addr);
	RED_LED_OUT();
	RED_LED_OFF();	
	sei();   // enable interrupts globally
	
	while(1)
	{
		sub_program_1hz();
	}
}
Exemple #7
0
int main(void)
{	
	_delay_ms(1000); //power_on_delay
	RFM73_Initialize();
	RED_LED_OUT();
	RED_LED_OFF();
	
	set_sleep_mode(SLEEP_MODE_PWR_DOWN);
	sei();   // enable interrupts globally
	sleep_mode();  // go to sleep
	
	while(1)
	{
		Receive_Packet();
		sleep_mode();
	}
}
Exemple #8
0
void Receive_Packet(void)
{
	UINT8 i, len, chksum = 0; 
	
	RFM73_Receive_Packet(rx_buf, &len);
	
	for(i=0;i<16;i++)
	{
		chksum +=rx_buf[i]; 
	}
	if(chksum==rx_buf[16]&&rx_buf[0]==0x30)
	{
		/* Packet received correctly */
		RED_LED_ON();
		_delay_ms(50);
		RED_LED_OFF();
	}
}
Exemple #9
0
usbMsgLen_t	usbFunctionWrite(uint8_t *data, uint8_t len)
{
	if(ledState == data[0]) { /* same value as present */
		return 1; 
	}
	else {
		ledState = data[0];
	}
	/* LED for Capslock */
	if(ledState & 0x2) {
		RED_LED_ON();
	} 
	else {
		RED_LED_OFF();
	}
	
	return 1;
}
Exemple #10
0
int main(void)
{
	power_on_delay();  
 	timer0_init();
	RED_LED_OUT();
	RED_LED_OFF();

	if(rfm70_init(RFM70_MODE_PRX, addr) != 0) {
		RED_LED_ON();
	}

	sei();   // enable interrupts globally
	rfm70_set_ack_payload(RFM70_PIPE0, ack_pld, sizeof(ack_pld));
	while(1)
	{
		Receive_Packet();
	}
}
Exemple #11
0
int main(void)
{
	uint8_t i;
	bool timeout = false;
	
	RED_LED_OUT();
	GREEN_LED_OUT();
	RED_LED_OFF();
	GREEN_LED_OFF();
	
	usbInit();
    usbDeviceDisconnect();  /* enforce re-enumeration, do this while interrupts are disabled! */
    i = 0;
    while(--i){             /* fake USB disconnect for > 250 ms */
        wdt_reset();
        _delay_ms(1);
    }
    usbDeviceConnect();
    sei();
	
	for(;;){                /* main event loop */
        wdt_reset();
        usbPoll();
        if((get_input_requested == true) || ((timeout == true) && (feature_report_buf.ucReportingState != 
											 HID_USAGE_SENSOR_PROPERTY_REPORTING_STATE_NO_EVENTS_SEL_ENUM)) ) {
			if(get_input_requested == true) {
				get_input_requested = false;
				input_report_buf.ucEventType = HID_USAGE_SENSOR_EVENT_POLL_RESPONSE_SEL_ENUM;
			}
			else if(timeout == true) {
				timeout = false;
				input_report_buf.ucEventType = HID_USAGE_SENSOR_EVENT_DATA_UPDATED_SEL_ENUM;
				input_report_buf.sGyroXValue++;
			}
			RED_LED_TOGGLE();
            /* called after every poll of the interrupt endpoint */
            usbSetInterrupt((void *)&input_report_buf, sizeof(input_report_buf));
        }
		_delay_ms(2);
		if(i++ == 0) {
			timeout = true;
		}
    }
}
/*==============================================================================
 * DESCRIPTION:
 * @param
 * @return
 * @precondition
 * @postcondition
 * @caution
 * @notes
 *============================================================================*/
void OT_GPIO_init(OT_GPIO_CB_T *cb, void *cbarg) {
  ot_gpio_cb    = cb;
  ot_gpio_cbarg = cbarg;

  SENSOR_ON();
  TRIGGER_IN_DISABLE();
  TRIGGER_OUT_OFF();

  GPIO_Init(GREEN_LED_PORT, GREEN_LED_PIN, GPIO_MODE_OUT_PP_LOW_SLOW);
  GREEN_LED_OFF();

  GPIO_Init(RED_LED_PORT, RED_LED_PIN, GPIO_MODE_OUT_PP_LOW_SLOW);
  RED_LED_OFF();

#if defined(WAKEUP_BUTTON)
  BUTTON_DISABLE();
#endif // WAKEUP_BUTTON

  DIP_ENABLE();
  return;
}
Exemple #13
0
int main(void)
{	
	uint8_t 	i;
	
	power_on_delay();  
	rfm70_init(RFM70_MODE_PRX, addr);
	RED_LED_OUT();
	RED_LED_OFF();
	
	usbInit();
	usbDeviceDisconnect();  /* Disconnect for some time to enforce reenumeration */
	i = 0;
	while(--i) {
		_delay_ms(1);
	}
	usbDeviceConnect();
	sei();   // enable interrupts globally
	
	while(1)
	{
		usbPoll();
		Receive_Packet();
	}
}
Exemple #14
0
void Receive_Packet(void)
{
	uint8_t i, len, chksum = 0; 
	
	rfm70_receive_packet(rx_buf, &len);
	if(len == 0) { /* No packet received */
		return;
	}
		
	for(i=0;i<16;i++)
	{
		chksum +=rx_buf[i]; 
	}
	if(chksum==rx_buf[16]&&rx_buf[0]==0x30)
	{	
		/* set ack payload */
		rfm70_set_ack_payload(RFM70_PIPE0, ack_pld, sizeof(ack_pld));
		
		/* Packet received correctly */
		RED_LED_ON();
		_delay_ms(50);
		RED_LED_OFF();
	}
}