コード例 #1
0
ファイル: usbasp.c プロジェクト: Technus/usbavrlab-tool
uchar ispFlushPage(unsigned long address, uchar pollvalue) 
{
  ISP_transmit(0x4C);
  ISP_transmit(address >> 9);
  ISP_transmit(address >> 1);
  ISP_transmit(0);


  if (pollvalue == 0xFF) {
    TIMER_delay(5);
    return 0;
  } else {

    // polling flash 
    uchar retries = 30;
	TIMER_start(1);


    while (retries != 0) {
      if (ispReadFlash(address) != 0xFF) {
	return 0;
      };

      if (TIMER_timeout == 0) 
	    {
   	      TIMER_start(1);
	      retries --;
        }
    }

    return 1; // error 
  }
}
コード例 #2
0
ファイル: main_takt.c プロジェクト: alexbrickwedde/floodping
int main(void)
{
    extern uchar usbNewDeviceAddr;
    uint8_t i;
//Reconnect USB
    usbDeviceDisconnect();  /* enforce re-enumeration, do this while interrupts are disabled! */
    i = 0;
    while(--i)
        _delay_ms(2);
    usbDeviceConnect();
    usbInit();
    sei();

    leds[LED_RED].frequency = LED_ON;
    LED_init();
    for (i=0; i<3; i++)
        TIMER_delay(250);
    leds[LED_RED].frequency = LED_OFF;
    leds[LED_GREEN].frequency = 1;


    while(1)
    {
        if (TIMER_timeout == 0)
        {
            if(usbNewDeviceAddr)
                leds[LED_BLUE].frequency = LED_ON;
            PORTD ^= (1<<PD7);
            TIMER_start(1);
            usbPoll();
            LED_poll();
        }
    }
}
コード例 #3
0
ファイル: usbasp.c プロジェクト: Technus/usbavrlab-tool
uchar ispWriteFlash(unsigned long address, uchar data, uchar pollmode) 
{
  ISP_transmit(0x40 | ((address & 1) << 3));
  ISP_transmit(address >> 9);
  ISP_transmit(address >> 1);
  ISP_transmit(data);

  if (pollmode == 0)
    return 0;

  if (data == 0x7F) {
    TIMER_delay(5); // wait 4,8 ms 
    return 0;
  } else {

    // polling flash 
    uchar retries = 30;
	TIMER_start(1);
    while (retries != 0) {
      if (ispReadFlash(address) != 0x7F) {
	return 0;
      };
      
      if (TIMER_timeout == 0) 
	    {
   	      TIMER_start(1);
	      retries --;
        }

    }
    return 1; // error 
  }
}
コード例 #4
0
int	main(void) 
{
  extern uchar usbNewDeviceAddr;
  uint8_t i;
  PORTC |= (1<<PC2);

//Reconnect USB
  usbDeviceDisconnect();  /* enforce re-enumeration, do this while interrupts are disabled! */
  i = 0;
  while(--i)
     _delay_ms(2);
  usbDeviceConnect();
  usbInit();
  sei();
  leds[LED_RED].frequency = LED_ON;
  LED_init();
  for (i=0;i<3;i++)
    TIMER_delay(250);
  leds[LED_RED].frequency = LED_OFF;
  LED_poll();
//  wdt_enable(WDTO_60MS);
  i2c_init();

  for(;;) 
    {
      if(usbNewDeviceAddr)
	    {
          leds[LED_BLUE].frequency = LED_ON;
		}
      wdt_reset();
      LED_poll();
      usbPoll();
    }
  return 0;
}
コード例 #5
0
ファイル: usbasp.c プロジェクト: Technus/usbavrlab-tool
uchar ispWriteEEPROM(unsigned int address, uchar data) 
{
  ISP_transmit(0xC0);
  ISP_transmit(address >> 8);
  ISP_transmit(address);
  ISP_transmit(data);

  TIMER_delay(10); // wait 9,6 ms 

  return 0;
} 
コード例 #6
0
int main(void)
{
  extern uchar usbNewDeviceAddr;
  PORTC |= (1<<PC2);
  uint8_t i;
//Reconnect USB
  usbDeviceDisconnect();  /* enforce re-enumeration, do this while interrupts are disabled! */
  i = 0;
  while(--i)
     _delay_ms(2);
  usbDeviceConnect();
  usbInit();
  sei();


  leds[LED_RED].frequency = LED_ON;
  LED_init();
  for (i=0;i<3;i++)
    TIMER_delay(250);
  leds[LED_RED].frequency = LED_OFF;

  CHANNELDDR1 &= ~((1 << CHANNEL_1) | (1 << CHANNEL_2) | (1 << CHANNEL_3) | (1 << CHANNEL_4));
  CHANNELPORT1 |= ((1 << CHANNEL_1) | (1 << CHANNEL_2) | (1 << CHANNEL_3) | (1 << CHANNEL_4));
  CHANNELDDR2 &= ~((1 << CHANNEL_5) | (1 << CHANNEL_6));
  CHANNELPORT2 |= ((1 << CHANNEL_5) | (1 << CHANNEL_6));

  uint8_t tmp1,tmp1_old; 
  uint8_t tmp2,tmp2_old;
  while(1)
    {
      if (TIMER_timeout == 0)
        {
          if(usbNewDeviceAddr)
            leds[LED_BLUE].frequency = LED_ON;
          TIMER_start(49);
          usbPoll();
          LED_poll();
        }
      tmp1 = CHANNELPIN1; 
      tmp2 = CHANNELPIN2;
	  if ((tmp1 != tmp1_old) || (tmp2 != tmp2_old))
//      if (((channel1trigger & tmp1) == channel1trigger) || ((channel2trigger & tmp2) == channel2trigger))
        {
		  buffer[buffer_put++] = (tmp1 & ((1 << CHANNEL_1) | (1 << CHANNEL_2) | (1 << CHANNEL_3) | (1 << CHANNEL_4)))
		                        +(tmp2 & ((1 << CHANNEL_5) | (1 << CHANNEL_6))); 
	    }
      tmp1_old = tmp1; 
      tmp2_old = tmp2; 
	}
}
コード例 #7
0
ファイル: fob-cmds.cpp プロジェクト: anosnowhong/phantom
BOOL    FOB_SetFBB( int ID, BYTE birds )
{
BOOL    ok;

    if( (ok=FOB_ValByte(ID,FOB_BIRD_NULL,FOB_VAL_AUTOCONFIG,FOB_VAL_SET,&birds)) )
    {
        TIMER_delay(FOB_WAIT_AUTOCONFIG);        // Wait for FOB to auto-configure...
    }

    STR_printf(ok,FOB_debugf,FOB_errorf,"FOB_SetFBB(ID=%d,birds=%d) %s.\n",
               ID,birds,
               STR_OkFailed(ok));

    return(ok);
}
コード例 #8
0
int main(void)
{
  extern uchar usbNewDeviceAddr;
  uint8_t i,j;
  PORTC |= (1<<PC2);
  /* activate pull-ups except on USB lines */
  USB_CFG_IOPORT   = (uchar)~((1<<USB_CFG_DMINUS_BIT)|(1<<USB_CFG_DPLUS_BIT));
  /* all pins input except USB (-> USB reset) */
#ifdef USB_CFG_PULLUP_IOPORT    /* use usbDeviceConnect()/usbDeviceDisconnect() if available */
  USBDDR    = 0;    /* we do RESET by deactivating pullup */
  usbDeviceDisconnect();
#else
  USBDDR    = (1<<USB_CFG_DMINUS_BIT)|(1<<USB_CFG_DPLUS_BIT);
#endif
  j = 0;
  while(--j){          /* USB Reset by device only required on Watchdog Reset */
      i = 0;
      while(--i);      /* delay >10ms for USB reset */
  }
#ifdef USB_CFG_PULLUP_IOPORT
  usbDeviceConnect();
#else
  USBDDR    = 0;      /*  remove USB reset condition */
#endif
  usbInit();
  sei();

  leds[LED_RED].frequency = LED_ON;
  LED_init();
  for (i=0;i<3;i++)
    TIMER_delay(250);
  leds[LED_RED].frequency = LED_OFF;

  while(1)
    {
      if (TIMER_timeout == 0)
        {
          if(usbNewDeviceAddr)
            leds[LED_BLUE].frequency = LED_ON;
          TIMER_start(10);
          usbPoll();
          LED_poll();
		  KEY_pol();
        }
	}
}
コード例 #9
0
ファイル: asensor.cpp プロジェクト: anosnowhong/phantom
BOOL ASENSOR::BiasSave( void )
{
BOOL ok;
matrix B,H;
time_t t;
int i;

    if( !CalibrationFlags[ASENSOR_CALIBRATION_BIAS] )
    {
        return(TRUE);
    }

    //disp(BiasVolts);
    TIMER_delay(10.0);
    B.duplicate(BiasVolts);
    MakeRowVector(B);

    //printf("ASENSOR::BiasSave()\n");
    //disp(B);

    ok = matrix_write(BiasFile,B);
    STR_printf(ok,ASENSOR_debugf,ASENSOR_errorf,"ASENSOR::BiasSave() %s %s.\n",BiasFile,STR_OkFailed(ok));

    if( ok )
    {
        time(&t);
        H.dim(1,DAQ_ChannelCount+1);
        H(1,1) = (double)t;
        for( i=0; (i < DAQ_ChannelCount); i++ )
        {
            H(1,i+2) = B(i+1,1);
        }

        ok = matrix_append(BiasHistoryFile,H);
        STR_printf(ok,ASENSOR_debugf,ASENSOR_errorf,"ASENSOR::BiasSave() %s %s.\n",BiasHistoryFile,STR_OkFailed(ok));
    }

    return(ok);
}
コード例 #10
0
ファイル: fob-cmds.cpp プロジェクト: anosnowhong/phantom
BOOL    FOB_CmdResetViaRTS( int ID, BOOL nowait )
{
BOOL    ok;
BOOL    flag[] = { ON,OFF };
double  wait[] = { FOB_WAIT_RTS,FOB_WAIT_RESET };
int     step;

    if( nowait )
    {
        wait[1] = 0.0;
    }

    for( ok=TRUE,step=0; ((step < 2) && ok); step++ )
    {
        if( (ok=COM_RTS(FOB_Port[ID].comH,flag[step])) )
        {
            TIMER_delay(wait[step]);
        }
    }

    return(ok);
}
コード例 #11
0
ファイル: main_bitbanging.c プロジェクト: abicash/floodping
int main(void)
{
  extern uchar usbNewDeviceAddr;
  uint8_t i;
//Reconnect USB
  usbDeviceDisconnect();  /* enforce re-enumeration, do this while interrupts are disabled! */
  i = 0;
  while(--i)
     _delay_ms(2);
  usbDeviceConnect();
  usbInit();
  sei();


  leds[LED_RED].frequency = LED_ON;
  LED_init();
  for (i=0;i<3;i++)
    TIMER_delay(250);
  leds[LED_RED].frequency = LED_OFF;
  leds[LED_GREEN].frequency = LED_ON;

  //Input with pullups
  CHANNELDDR1 &= ~((1 << CHANNEL_1) | (1 << CHANNEL_2) | (1 << CHANNEL_3) | (1 << CHANNEL_4));
  CHANNELPORT1 |= ((1 << CHANNEL_1) | (1 << CHANNEL_2) | (1 << CHANNEL_3) | (1 << CHANNEL_4));
  CHANNELDDR2 &= ~((1 << CHANNEL_5) | (1 << CHANNEL_6));
  CHANNELPORT2 |= ((1 << CHANNEL_5) | (1 << CHANNEL_6));
  
  //Preset data with actual pin states
  DATA = 0;
  if (CHANNELPIN1 & (1<<CHANNEL_1))
    DATA = 1;
  if (CHANNELPIN1 & (1<<CHANNEL_2))
    DATA = 2;
  if (CHANNELPIN1 & (1<<CHANNEL_3))
    DATA = 4;
  if (CHANNELPIN1 & (1<<CHANNEL_4))
    DATA = 8;
  if (CHANNELPIN2 & (1<<CHANNEL_5))
    DATA = 16;
  if (CHANNELPIN2 & (1<<CHANNEL_6))
    DATA = 32;
  
  //Set actual Pinstates as Output
  CHANNELPORT1 = CHANNELPIN1;
  CHANNELPORT2 = CHANNELPIN2;
  CHANNELDDR1 |= ((1 << CHANNEL_1) | (1 << CHANNEL_2) | (1 << CHANNEL_3) | (1 << CHANNEL_4));
  CHANNELDDR2 |= ((1 << CHANNEL_5) | (1 << CHANNEL_6));
  

  while(1)
    {
      if (TIMER_timeout == 0)
        {
          if(usbNewDeviceAddr)
            leds[LED_BLUE].frequency = LED_ON;
          TIMER_start(10);
          usbPoll();
          LED_poll();
        }
	}
}