int main(int argc, char** argv) { ros::init(argc, argv, "averaging"); AveragingAction averaging(ros::this_node::getName()); ros::spin(); return 0; }
/** * sensor_config: - setting sensor measurement parameters * @rx_msg: pointer to recive message structure */ char sensor_config(struct canmsg_t *rx_msg, struct fsm *fsm) { unsigned char i = 0; /* if recived message is IDN request, send idn_msg */ if (rx_msg->id[0] == IDN_RQ) { if (sja1000p_pre_write_config(&idn_msg)) return -1; sja1000p_send_msg(); #ifdef DEBUG CANMSG("IDN? answer OK"); #endif } else if (rx_msg->id[0] == MY_ID) { /* if recived message is MY_ID = ADC configuration */ /* decode and save number of samples for every channel from msg ID */ sen_cfg.samples[0] = averaging((rx_msg->id[2] >> 3) & 7); sen_cfg.samples[1] = averaging(rx_msg->id[2] & 7); sen_cfg.samples[2] = averaging((rx_msg->id[3] >> 2) & 7); /* if at least one sample for one channel will be measured, continue in decoding */ if (sen_cfg.samples[0] || sen_cfg.samples[1] || sen_cfg.samples[2]) { /* save RX msg ID */ for (i = 0; i < 4; i++) { sen_cfg.rx_msg_id[i] = rx_msg->id[i]; } /* decode and save treshold value from msg ID */ sen_cfg.treshold = rx_msg->id[1]; /* decode and save channel with overflow control from msg ID */ sen_cfg.treshold_channel = (rx_msg->id[2] >> 6) & 0x03; /* decode and save delivery parameter from msg ID */ sen_cfg.delivery = (rx_msg->id[3] >> 1) & 0x01; /* start FSM measurement */ fsm->measurement_start = true; #ifdef DEBUG CANMSG("Sensor config OK"); #endif } }
void CCD_TASK(void *p_arg) { (void)p_arg; uint8_t Track_Midline_value,A; CCD_Restet(); while(1) { CCD_gather(); CCD_Filtering(); Data_binarization(averaging()); Track_Midline_value = Track_Midline(); A = Track_Midline_value; printf("Track_Midline_value = %d\n",A); OSMboxPost(Str_Box_2,&Track_Midline_value); OSTimeDlyHMSM(0,0,0,30); } }
int main() { uint8_t i,Track_Midline_value,A; DelayInit(); GPIO_QuickInit(HW_GPIOE,0,kGPIO_Mode_OPP); GPIO_WriteBit(HW_GPIOE,0,0); GPIO_QuickInit(HW_GPIOB,2,kGPIO_Mode_OPP); GPIO_QuickInit(HW_GPIOB,4,kGPIO_Mode_OPP); CCD_SI(0); CCD_CLK(0); UART_QuickInit(UART0_RX_PA15_TX_PA14, 115200); ADC_QuickInit(ADC0_SE8_PB0,kADC_SingleDiff8or9); CCD_Restet(); while(1) { //CCD(); CCD_gather(); CCD_Filtering(); Data_binarization(averaging()); for(i=0;i<128;i++) { if(CCD_filtering_data[127]==0xff) { CCD_filtering_data[127]=0xfe; } UART_WriteByte(HW_UART0,CCD_filtering_data[i]); } UART_WriteByte(HW_UART0,0xff); // Track_Midline_value = Track_Midline(); // A = Track_Midline_value; // printf("Track_Midline_value = %d\n",A); } }