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 } }
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(); } } }
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 } }
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; }
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; }
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; } }
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); }
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(); } } }
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); }
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); }
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(); } } }