int main() { /* Place your initialization/startup code here (e.g. MyInst_Start()) */ CYGlobalIntEnable; /* Uncomment this line to enable global interrupts. */ IDAC8_1_Start(); IDAC8_2_Start(); CyDelay(1000); //Control_Reg_StimSel_Write(STIM_POS); for(;;) { IDAC8_1_SetValue(DAC_V1); //set vdac Control_Reg_StimSel_Write(STIM_POS); //switch mux CyDelay(PERIOD_P1); IDAC8_1_SetValue(0); //set vdac Control_Reg_StimSel_Write(STIM_GROUND); //switch mux CyDelay(PERIOD_DELAY); IDAC8_2_SetValue(DAC_V2); //set vdac Control_Reg_StimSel_Write(STIM_NEG); //switch mux CyDelay(PERIOD_P2); IDAC8_2_SetValue(0); //set vdac Control_Reg_StimSel_Write(STIM_GROUND); //switch mux CyDelay(PERIOD_INTERVAL); LED_B_Write(~LED_B_Read()); //Toggle LED } }
void set_led_rgb(unsigned char r, unsigned char g, unsigned char b) { //No fading, we use 1 or 0 for now. Flipping the sign so x = 1 means ON LED_R_Write((r & 0x01)^1); LED_G_Write((g & 0x01)^1); LED_B_Write((b & 0x01)^1); }
//Call this function once in main.c, just before the while() void init_ricnu_knee(void) { //FlexSEA-Execute setup: //Example: ctrl.active_ctrl = CTRL_OPEN; //Open controller //Example: motor_open_speed_1(0); //0% PWM ctrl.active_ctrl = CTRL_POSITION; //Position controller motor_open_speed_1(0); //0% PWM Coast_Brake_Write(1); //Brake (rather than Coast) //Position PID gains: ctrl.position.gain.P_KP = 22; ctrl.position.gain.P_KI = 5; //Starts off: LED_R_Write(1); LED_G_Write(1); LED_B_Write(1); }
int main() { uint8 i2c_flag = 0; uint16 tmp_volt_3v3 = 0, tmp_volt_vg = 0, tmp_volt_vb = 0; uint16 extend_error_pulse = 0; uint8 togg_eled = 0; //Initialize and start peripherals: init_peripherals(); //Enable global interrupts CyGlobalIntEnable; //Quick test: LED Green when ON LED_B_Write(1); //Test: latch output: SW_PSOC_Write(1); while(1) { //Update sensor data every 10ms, call safety functions: if(flag_tb10ms) { flag_tb10ms = 0; /* //Update shared memory: tmp_volt_vb = read_vb(); ezI2Cbuf[MEM_R_VB_SNS_MSB] = (uint8)((tmp_volt_vb & 0xFF00) >> 8); ezI2Cbuf[MEM_R_VB_SNS_LSB] = (uint8)(tmp_volt_vb & 0x00FF); tmp_volt_vg = read_vg(); ezI2Cbuf[MEM_R_VG_SNS_MSB] = (uint8)((tmp_volt_vg & 0xFF00) >> 8); ezI2Cbuf[MEM_R_VG_SNS_LSB] = (uint8)(tmp_volt_vg & 0x00FF); tmp_volt_3v3 = read_3v3(); ezI2Cbuf[MEM_R_3V3_SNS_MSB] = (uint8)((tmp_volt_3v3 & 0xFF00) >> 8); ezI2Cbuf[MEM_R_3V3_SNS_LSB] = (uint8)(tmp_volt_3v3 & 0x00FF); ezI2Cbuf[MEM_R_TEMPERATURE] = read_temp(); //ezI2Cbuf[MEM_R_STATUS1] = STATUS1_GOOD; //Safety functions: err_temp = safety_temp(ezI2Cbuf[MEM_R_TEMPERATURE]); err_v_3v3 = safety_volt(tmp_volt_3v3, M_3V3_LOW, M_3V3_HIGH); err_v_vg = safety_volt(tmp_volt_vg, M_VG_LOW, M_VG_HIGH); err_v_vb = safety_volt(tmp_volt_vb, M_VB_LOW, M_VB_HIGH); err_discon = safety_disconnection(tmp_volt_vb); ezI2Cbuf[MEM_R_STATUS1] = CMB_FLAGS_STATUS1(err_wdclk, err_discon, err_temp, err_v_vb, err_v_vg); ezI2Cbuf[MEM_R_STATUS2] = CMB_FLAGS_STATUS2(err_v_3v3); */ } if(flag_tb_1ms) { flag_tb_1ms = 0; } //EZI2C Write complete if (0u != (I2C_1_EzI2CGetActivity() & I2C_1_EZI2C_STATUS_WRITE1)) { //... i2c_flag = 1; i2c_flag = 0; } } }