int main(){ // setup functions pwmSetup(); adcSetup(); ADC::Sync_result result; // begin I2C, slave address 0x01 // register event on receive Wire.begin(I2CADDR); Wire.onReceive(rxEvent); //Serial.begin(9600); while(1){ // read the adc result = adc->readSynchronizedContinuous(); adc1Val = (uint16_t)result.result_adc0; adc2Val = (uint16_t)result.result_adc1; // update outputs setSleep(SLPA, SLPB, sleepFlag); setDirection(DIRA, dirAflag); setDirection(DIRB, dirBflag); setPWM(PWMA, pwmAval); setPWM(PWMB, pwmBval); } }
int main(){ SystemInit(); setup(); adcSetup(); Init_Display(); timerSetup(); tempMeasure(); updateDegrees(); setupInterupts(5); lightMeasure(); pwmSetup(); setupInterupts(1000); PrintMenu(); *PWM_CDTYUPD = 1800; int input; while(nInterupts < 500){} while(1){ if(nInterupts >= 500){ tempMeasure(); nInterupts = 0; } updateDegrees(); Print(floatToChar, 33,1); //Skriv ut temperatur if(value > maxLimit){ Print("ALARM", 32, 3); Print("TOO HOT ", 32,4); } else if(value < lowLimit){ Print(" ALARM", 32, 3); Print("TOO COLD", 32,4); } else if(value >lowLimit || value<maxLimit){ Print(" ", 32, 3); Print(" ", 32, 4); } if(tempCount >= fastMode){ updateDegrees(); delay(60); if(tempFlag == 1){ tempCalc(); tempCount = 0; tempFlag = 0; } } input = readKeypad(); if(buttonPressed == 1){ buttonPressed = 0; menuCases(&input); } } }
int main(void) { WordVal src_addr_init = {SRC_ADDR}; WordVal src_pan_id_init = {SRC_PAN_ID}; WordVal dst_addr_init = {DST_ADDR}; SetupClock(); SwitchClocks(); SetupPorts(); batSetup(); swatchSetup(); radioInit(src_addr_init, src_pan_id_init, RXPQ_MAX_SIZE, TXPQ_MAX_SIZE); radioSetChannel(MY_CHAN); //Set to my channel macSetDestAddr(dst_addr_init); dfmemSetup(); unsigned char memsize; memsize = dfmemGetChipSize(); xlSetup(); gyroSetup(); mcSetup(); cmdSetup(); //senSetup(); adcSetup(); pidSetup(); steeringSetup(); //radioReadTrxId(id); LED_RED = 1; LED_BLUE = 0; LED_YELLOW = 0; //while(1); if(phyGetState() == 0x16) { LED_GREEN = 1; } //print("Ready"); //readDFMemBySample(5); while(1) { cmdHandleRadioRxBuffer(); //Simple idle ; reduces idle current to 70 mA // TODO (abuchan, apullin, fgb) : Idle() causes unexpected behavior //if(radioIsRxQueueEmpty()){ // Idle(); //} } }
void setupTemperatureSensor(void){ gpioSetup(); adcSetup(); //initializeMovingAverage(&ma); int init_buffer = 0; ma.newIndex = 0; ma.buffer_length = 0; while(init_buffer < DEPTH_D) { ma.filterBuffer[init_buffer] = 0; init_buffer++; } }
void temperature_detection_thread (void const *argument) { /*Set configuration to ADC for acquiring Vadc*/ adcSetup(); setupTemperatureSensor(); Temperature_Tim_Interrupt(); temperatureGetId = osThreadGetId(); while(1){ // wait for the signal data ready sent by the ISR osSignalWait(SIGNAL_TEMPERATURE_READY, osWaitForever); temp = runTemperatureSensorMoving(); Interrupt_Timer_Temperature_read=0; //printf ("Temp:%f\n", temp); //--> FOR DEBUG PURPOSE //DisplayTemperature(temp); } }
int main(void) { clockSetup(); ioSetup(); adcSetup(); while (1) { adcSample(); avg_adc = ((adc[0]+adc[1]+adc[2]+adc[3]+adc[4]+adc[5]+adc[6]+adc[7]+adc[8]+adc[9]) / 10);; findClosest(); if (distance < 20) { if (alarm_state == STATE_DISARMED) state = 0; else { if (state == 0) { alarm_state = STATE_ALERT; memset(txString, 0, 80); sprintf(txString, "%s%sSystem Status: %s", clear_screen, line_1, ALERT); i = 0; state = STATE_CHANGE; UC0IE |= UCA0TXIE; // Enable USCI_A0 TX interrupt UCA0TXBUF = txString[i++]; } P2OUT |= ALERTLED; P2OUT &= ~(SAFELED + WARNLED); change_lights = 1; } } else if (change_lights == 1) { if (alarm_state == STATE_ARMED) { P2OUT |= SAFELED; P2OUT &= ~(ALERTLED + WARNLED); } else if (alarm_state == STATE_DISARMED) { P2OUT |= WARNLED; P2OUT &= ~(ALERTLED + SAFELED); } } } }
void setup(){ // NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); // 0 bits for preemption, 4 bits for subpriority /* Set up interrupt controller: 2 bits for priority (0-3), * 2 bits for sub-priority (0-3). Priorities control which * interrupts are allowed to preempt one another. */ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); /* Increase SysTick priority to be higher than USB interrupt * priority. USB code stalls inside interrupt and we can't let * this throw off the SysTick timer. */ NVIC_SetPriority(SysTick_IRQn, NVIC_EncodePriority(NVIC_PriorityGroup_2, SYSTICK_PRIORITY, SYSTICK_SUBPRIORITY)); NVIC_SetPriority(DMA1_Stream3_IRQn, NVIC_EncodePriority(NVIC_PriorityGroup_2, 0, 0)); NVIC_SetPriority(DMA1_Stream4_IRQn, NVIC_EncodePriority(NVIC_PriorityGroup_2, 0, 0)); NVIC_SetPriority(SPI2_IRQn, NVIC_EncodePriority(NVIC_PriorityGroup_2, 1, 0)); NVIC_SetPriority(ADC_IRQn, NVIC_EncodePriority(NVIC_PriorityGroup_2, 2, 0)); ledSetup(); setLed(RED); /* check if we need to DFU boot */ configureDigitalInput(SWITCH_B_PORT, SWITCH_B_PIN, GPIO_PuPd_UP); if(isPushButtonPressed()) jump_to_bootloader(); adcSetup(); clockSetup(); setupSwitchA(footSwitchCallback); setupSwitchB(pushButtonCallback); settings.init(); midi.init(MIDI_CHANNEL); patches.init(); #ifdef EXPRESSION_PEDAL #ifndef OWLMODULAR setupExpressionPedal(); #endif #endif RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE); // DEBUG configureDigitalOutput(GPIOB, GPIO_Pin_1); // PB1, DEBUG LED debugClear(); #ifdef DEBUG_AUDIO RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); // DEBUG configureDigitalOutput(GPIOA, GPIO_Pin_7); // PA7 DEBUG configureDigitalOutput(GPIOC, GPIO_Pin_5); // PC5 DEBUG clearPin(GPIOC, GPIO_Pin_5); // DEBUG clearPin(GPIOA, GPIO_Pin_7); // DEBUG #endif /* DEBUG_AUDIO */ usb_init(); #if SERIAL_PORT == 1 setupSerialPort1(115200); #elif SERIAL_PORT == 2 setupSerialPort2(115200); // expression pedal #warning expression pedal jack configured as serial port #ifdef EXPRESSION_PEDAL #error invalid configuration #endif #endif #ifdef OWLMODULAR configureDigitalInput(GPIOB, GPIO_Pin_6, GPIO_PuPd_NOPULL); // PB6 OWL Modular digital input configureDigitalOutput(GPIOB, GPIO_Pin_7); // PB7 OWL Modular digital output setPin(GPIOB, GPIO_Pin_7); // PB7 OWL Modular digital output #endif codec.setup(); codec.init(settings); printString("startup\n"); updateBypassMode(); codec.start(); }
int main() { // Processor Initialization SetupClock(); SwitchClocks(); SetupPorts(); sclockSetup(); LED_1 = 1; LED_2 = 1; LED_3 = 1; // Message Passing fun_queue = carrayCreate(FUN_Q_LEN); cmdSetup(); // Radio setup radioInit(RADIO_RXPQ_MAX_SIZE, RADIO_TXPQ_MAX_SIZE); radioSetChannel(RADIO_CHANNEL); radioSetSrcAddr(RADIO_SRC_ADDR); radioSetSrcPanID(RADIO_PAN_ID); uart_tx_packet = NULL; uart_tx_flag = 0; //uartInit(&cmdPushFunc); tactileInit(); // Need delay for encoders to be ready delay_ms(100); amsEncoderSetup(); mpuSetup(); tiHSetup(); dfmemSetup(); telemSetup(); adcSetup(); pidSetup(); LED_1 = 0; LED_3 = 1; while(1){ // Send outgoing radio packets radioProcess(); /* // Send outgoing uart packets if(uart_tx_flag) { uartSendPacket(uart_tx_packet); uart_tx_flag = 0; }*/ checkTactileBuffer(); // move received packets to function queue while (!radioRxQueueEmpty()) { // Check for unprocessed packet rx_packet = radioDequeueRxPacket(); if(rx_packet != NULL) { cmdPushFunc(rx_packet); } } // process commands from function queue while(!carrayIsEmpty(fun_queue)) { rx_packet = carrayPopHead(fun_queue); unsigned int rx_src_addr = rx_packet->src_addr.val; if(rx_packet != NULL) { rx_payload = macGetPayload(rx_packet); if(rx_payload != NULL) { rx_function = (test_function)(rx_payload->test); if(rx_function != NULL) { LED_2 = ~LED_2; (rx_function)(payGetType(rx_payload), payGetStatus(rx_payload), payGetDataLength(rx_payload), payGetData(rx_payload), rx_src_addr); } } ppoolReturnFullPacket(rx_packet); } } } return 0; }
int main(void) { //wakeTime = 0; //dcCounter = 0; // Processor Initialization SetupClock(); SwitchClocks(); SetupPorts(); sclockSetup(); LED_1 = 0; LED_2 = 0; LED_3 = 0; cmdSetup(); radioInit(RADIO_TXPQ_MAX_SIZE, RADIO_RXPQ_MAX_SIZE); radioSetChannel(RADIO_CHANNEL); radioSetSrcPanID(RADIO_PAN_ID); radioSetSrcAddr(RADIO_SRC_ADDR); dfmemSetup(); uint64_t id = dfmemGetUnqiueID(); telemSetup(); //Timer 5, HW priority 4 mpuSetup(); imuSetup(); //Timer 4, HW priority 3 tiHSetup(); adcSetup(); //AMS Encoders //encSetup(); //"Open Loop" vibration & jitter generator, AP 2014 //olVibeSetup(); legCtrlSetup(); //Timer 1, HW priority 5 steeringSetup(); //Timer 5, HW priority 4 //Tail control is a special case //tailCtrlSetup(); //Camera is untested with current code base, AP 12/6/2012 //ovcamSetup(); LED_RED = 1; //Red is use an "alive" indicator LED_GREEN = 0; LED_YELLOW = 0; //Radio startup verification //if (phyGetState() == 0x16) { // LED_GREEN = 1; //} //Sleeping and low power options //_VREGS = 1; //gyroSleep(); /////FUNCTION TEST, NOT FOR PRODUCTION //olVibeStart(); //////////////////// while (1) { cmdHandleRadioRxBuffer(); radioProcess(); } }