void play_song(int* notebuf, int* accidentalsbuf, int* octavebuf, int length) { PWM_1_Start(); PWM_2_Start(); PWM_3_Start(); PWM_4_Start(); for (int i = 0; i < length; i+=4) { PWM_1_WriteCompare((note_lengths[note_lookup[notebuf[i]]+accidentalsbuf[i]]/2)>>octavebuf[i]); PWM_1_WritePeriod(note_lengths[note_lookup[notebuf[i]]+accidentalsbuf[i]]>>octavebuf[i]); PWM_1_WriteCounter(0); PWM_2_WriteCompare((note_lengths[note_lookup[notebuf[i+1]]+accidentalsbuf[i]]/2)>>octavebuf[i+1]); PWM_2_WritePeriod(note_lengths[note_lookup[notebuf[i+1]]+accidentalsbuf[i]]>>octavebuf[i+1]); PWM_2_WriteCounter(0); PWM_3_WriteCompare((note_lengths[note_lookup[notebuf[i+2]]+accidentalsbuf[i]]/2)>>octavebuf[i+2]); PWM_3_WritePeriod(note_lengths[note_lookup[notebuf[i+2]]+accidentalsbuf[i]]>>octavebuf[i+2]); PWM_3_WriteCounter(0); PWM_4_WriteCompare((note_lengths[note_lookup[notebuf[i+3]]+accidentalsbuf[i]]/2)>>octavebuf[i+3]); PWM_4_WritePeriod(note_lengths[note_lookup[notebuf[i+3]]+accidentalsbuf[i]]>>octavebuf[i+3]); PWM_4_WriteCounter(0); if (Keypad_1_Status_Reg_Read() & 0x10) break; CyDelay(TEMPO_MS); } PWM_1_Stop(); PWM_2_Stop(); PWM_3_Stop(); PWM_4_Stop(); }
void main() { uint8 ButtonPressFlag = 0; int32 temp=0; uint32 lowest=24,i; uint32 increment=2; uint32 battery_volts; volatile uint32 counter=0; CYGlobalIntDisable; /* Intitalize hardware */ LEDControlReg_Write(0xff); /* Turn off the LEDs on PORT2(pin 0-3) and PORT4 pin(0-3) */ PSU_Enable_Write(3); // AMux_1_Start(); /* Enable THe analog mux input to the ADC */ // AcclADC_Start(); /* Start ADC */ // VDAC8_1_Start(); /* Start and configure the VDAC used to measure the Thermistor */ // VDAC8_1_SetRange(VDAC8_1_RANGE_1V); // VDAC8_1_SetValue(200 ); PWM_0_Start(); PWM_1_Start(); PWM_2_Start(); PWM_3_Start(); PWM_4_Start(); PWM_5_Start(); PWM_6_Start(); PWM_7_Start(); // VBATT_ADC_Start(); //VBATT_ADC_StartConvert(); // VBATT_ADC_Stop(); //debugging // UART_1_Start(); I2C_1_Start(); I2C_1_EnableInt(); Button_ClearInterrupt(); ALERT2_ClearPending(); ALERT1_ClearPending(); ALERT1_StartEx(ALERT1_ISR); Button_Pressed_StartEx(Button_Press_ISR); ALERT2_StartEx(ALERT2_ISR); CYGlobalIntEnable; /* Enable global interrupt */ I2C_1_MasterClearStatus(); while(set_ina226(CH1)!=CYRET_SUCCESS); while(set_tmp100(CH1)!=CYRET_SUCCESS); while(1) { if(0) //if(Status_Reg_1_Read()&1) { read_tmp100(CH1); read_ina226(CH1); } LEDControlReg_Write(((uint8)~(PSU_Enable_Read()))); for(i=0;i<65000;i++); LEDControlReg_Write(((uint8)~(PSU_Enable_Read())) & ~(1<<7)); for(i=0;i<65000;i++); // CyPmSaveClocks(); // CyPmSleep(PM_SLEEP_TIME_NONE, PM_SLEEP_SRC_PICU); // CyPmRestoreClocks(); // battery_volts = VBATT_ADC_GetResult32(); if(reset==1) { for(i=0;i<65000;i++); //delay for half a second. PSU_Enable_Write(3); //Both PSU ON I2C_1_Start(); I2C_1_EnableInt(); while(set_ina226(CH1)!=CYRET_SUCCESS); while(set_tmp100(CH1)!=CYRET_SUCCESS); reset=0; } } while(1) { /* Calculate the current board temperature */ temp = Thermistor_TemperatureCompute() / 10; //we get 24.1 as 241. We drop fractionals. uint32 barrels_above= (temp-lowest)/increment; if(temp<=lowest) barrels_above=0; //negative temperatures are too low! if(barrels_above>8) barrels_above=8; LEDControlReg_Write(1<<barrels_above); } }
int main() { CyGlobalIntEnable; /* Enable global interrupts. */ //PWM_1_Start(); PWM_1_Start(); USBUART_Start(0,USBUART_5V_OPERATION); while(!USBUART_bGetConfiguration()){} USBUART_CDC_Init(); int count = 0; uint8 buff[64]; buff[0] = 0; int up_b = 0; int left_b = 0; int down_b = 0; int right_b = 0; int PWM_count = 0; int judge_count = 0; while(1)//main loop { if(0 != USBUART_GetConfiguration()) { if(0 != USBUART_DataIsReady()) { count = USBUART_GetAll(buff); if( count != 0){ while(0 == USBUART_CDCIsReady()){} PWM_1_Start(); PWM_2_Start(); PWM_3_Start(); PWM_4_Start(); USBUART_PutData(buff,count); CyDelay(500); USBUART_PutCRLF(); switch(buff[0]){ case 48: up_b = 1; break; case 49: up_b = 0; break; case 50: left_b = 1; break; case 51: left_b = 0; break; case 52: right_b = 1; break; case 53: right_b = 0; break; case 54: down_b = 1; break; case 55: down_b = 0; break; default: break; } judge_count = up_b + left_b + down_b +right_b; if(judge_count == 0){ PWM_count = 0; } if(judge_count == 1){//押されているボタンの数が1つの場合 if(PWM_count <=100){ PWM_count++; int i = 0; for(i=0;i<=100;i++){} }else{} if(up_b == 1){//上ボタン PWM_1_WriteCompare(PWM_count); PWM_1_direction_Write(1); PWM_2_WriteCompare(PWM_count); PWM_2_direction_Write(1); PWM_3_WriteCompare(PWM_count); PWM_3_direction_Write(1); PWM_4_WriteCompare(PWM_count); PWM_4_direction_Write(1); } if(left_b == 1) PWM_1_WriteCompare(PWM_count); PWM_1_direction_Write(0); PWM_2_WriteCompare(PWM_count); PWM_2_direction_Write(1); PWM_3_WriteCompare(PWM_count); PWM_3_direction_Write(1); PWM_4_WriteCompare(PWM_count); PWM_4_direction_Write(0); } if(right_b == 1) PWM_1_WriteCompare(PWM_count); PWM_1_direction_Write(1); PWM_2_WriteCompare(PWM_count); PWM_2_direction_Write(0); PWM_3_WriteCompare(PWM_count); PWM_3_direction_Write(0); PWM_4_WriteCompare(PWM_count); PWM_4_direction_Write(1); } if(down_b == 1) PWM_1_WriteCompare(PWM_count); PWM_1_direction_Write(0); PWM_2_WriteCompare(PWM_count); PWM_2_direction_Write(0); PWM_3_WriteCompare(PWM_count); PWM_3_direction_Write(0); PWM_4_WriteCompare(PWM_count); PWM_4_direction_Write(0); } }else if(judge_count == 2){//2個の場合 if(PWM_count <=100){ PWM_count++; int i = 0; for(i=0;i<=100;i++){} }else{} if(up_b == 1&& left_b == 1){ PWM_1_WriteCompare(0); PWM_1_direction_Write(0); PWM_2_WriteCompare(PWM_count); PWM_2_direction_Write(1); PWM_3_WriteCompare(PWM_count); PWM_3_direction_Write(1); PWM_4_WriteCompare(0); PWM_4_direction_Write(0); }else if(up_b == 1&& right_b == 1){ PWM_1_WriteCompare(PWM_count); PWM_1_direction_Write(1); PWM_2_WriteCompare(0); PWM_2_direction_Write(0); PWM_3_WriteCompare(0); PWM_3_direction_Write(0); PWM_4_WriteCompare(PWM_count); PWM_4_direction_Write(1); }else if(down_b == 1&& right_b==1){ PWM_1_WriteCompare(0); PWM_1_direction_Write(0); PWM_2_WriteCompare(PWM_count); PWM_2_direction_Write(0); PWM_3_WriteCompare(PWM_count); PWM_3_direction_Write(0); PWM_4_WriteCompare(0); PWM_4_direction_Write(0); }else if(down_b == 1&& left_b == 1){ PWM_1_WriteCompare(PWM_count); PWM_1_direction_Write(0); PWM_2_WriteCompare(0); PWM_2_direction_Write(0); PWM_3_WriteCompare(0); PWM_3_direction_Write(0); PWM_4_WriteCompare(PWM_count); PWM_4_direction_Write(0); } }else{} //if(USBUART_IsLineChanged() == USBUART_LINE_CODING_CHANGED || USBUART_IsLineChanged() == USBUART_LINE_CONTROL_CHANGED) //{ USBUART_PutCRLF(); //CyDelay(100); //} if(64 == count){ while(0 == USBUART_CDCIsReady()){} //sent zero packet USBUART_PutData(NULL,0); } //LED_Write(0); } }