int main(void){ // for the real board grader to work, you must connect PD3 to your DAC output int piano; // to read current piano keys int prevPiano; // to store piano keys in prev cycle TExaS_Init(SW_PIN_PE3210, DAC_PIN_PB3210,ScopeOn); // activate grader and set system clock to 80 MHz Sound_Init(); // initialize SysTick timer and DAC Piano_Init(); EnableInterrupts(); // enable after all initialization are done while(1){ piano = Piano_In(); if(piano != prevPiano){ // only react if piano keys pressed if(piano == 0x00) Sound_Off(); else if(piano == 0x01) Sound_Tone(2389); else if(piano == 0x02) Sound_Tone(2128); else if(piano == 0x04) Sound_Tone(1896); else if(piano == 0x08) Sound_Tone(1594); delay(10); } prevPiano = piano; } }
void ModbusEEPROMLoader() { uint8_t change_flag = 0; for (uint8_t i = 0; i < coeff_list_SIZE; i++) { if (!Uint32Comparrer(usRegHoldingBuf[2 * i + MB_OFFSET + MB_Kp_Oz], usRegHoldingBuf[2 * i + MB_OFFSET + MB_Kp_Oz + 1], coeffs[i].array[0], coeffs[i].array[1])) { coeffs[i].array[0]=usRegHoldingBuf[2 * i + MB_OFFSET + MB_Kp_Oz]; coeffs[i].array[1]=usRegHoldingBuf[2 * i + MB_OFFSET + MB_Kp_Oz + 1]; eeprom_write_float((float*)(i * 4), coeffs[i].value); change_flag = 1; } } if (change_flag) { filterUpdate(); Sound_On(); _delay_ms(100); Sound_Off(); } ModbusInitValues(); }
int main(void) { unsigned long input= 0; PLL_Init(); Sound_Init(); // initialize SysTick timer and DAC Piano_Init(); EnableInterrupts(); // enable after all initialization are done while(1) { // input from keys to select tone input= Piano_In(); switch (input) { case 0x01: Sound_Tone(C); break; case 0x10: Sound_Tone(D); break; case 0x04: Sound_Tone(E); break; case 0x08: Sound_Tone(G); break; default: Sound_Off(); break; } } }
int main(void){ // Real Lab13 // for the real board grader to work // you must connect PD3 to your DAC output TExaS_Init(SW_PIN_PE3210, DAC_PIN_PB3210,ScopeOn); // activate grader and set system clock to 80 MHz // PortE used for piano keys, PortB used for DAC Sound_Init(); // initialize SysTick timer and DAC Piano_Init(); EnableInterrupts(); // enable after all initialization are done while(1){ /*DAC_Out(wave[n]); // your code to output to the DAC delay(1000); // wait 1s (later change this to 1ms) n = (n+1)&0x1F;*/ switch(Piano_In()) { case C: delay(delayValue); //EnableInterrupts(); //Sound_Tone(523.251); Sound_Tone(C0); break; case D: //EnableInterrupts(); delay(delayValue); Sound_Tone(D0); break; case E: //EnableInterrupts(); delay(delayValue); Sound_Tone(E0); break; case G: //EnableInterrupts(); delay(delayValue); Sound_Tone(G0); break; default: delay(delayValue); Sound_Off(); //DisableInterrupts(); break; } } }
//Обрабатываем значения HoldingRegisters void ModbusSaver() { switch (usRegHoldingBuf[MB_OFFSET+MB_COMMAND]) { case 1: wdt_enable(WDTO_15MS); // enable watchdog while(1); // wait for watchdog to reset processor break; break; case 2: ADXL345_Calibrate(); break; } usRegHoldingBuf[MB_OFFSET+MB_COMMAND] = 0; if (usRegHoldingBuf[MB_OFFSET+MB_LED_BLUE]) { LED_On(LED_BLUE); } else { LED_Off(LED_BLUE); } if (usRegHoldingBuf[MB_OFFSET+MB_LED_GREEN]) { LED_On(LED_GREEN); } else { LED_Off(LED_GREEN); } if (bit_is_set(usRegHoldingBuf[MB_OFFSET+MB_SOUND], 0)) { Sound_On(); } else { Sound_Off(); } if (usRegHoldingBuf[MB_OFFSET+MB_ALL]<16000UL) { usRegHoldingBuf[MB_OFFSET+MB_ALL]=16000UL; } if (bit_is_set(usRegHoldingBuf[MB_OFFSET+MB_MANUAL], 4)) { float speeds[4]; speeds[FRONT_LEFT] = (float)usRegHoldingBuf[MB_OFFSET + MB_FRONT_LEFT]; speeds[FRONT_RIGHT] = (float)usRegHoldingBuf[MB_OFFSET + MB_FRONT_RIGHT]; speeds[REAR_LEFT] = (float)usRegHoldingBuf[MB_OFFSET + MB_REAR_LEFT]; speeds[REAR_RIGHT] = (float)usRegHoldingBuf[MB_OFFSET + MB_REAR_RIGHT]; SetMotors(speeds); } else { usRegHoldingBuf[MB_OFFSET + MB_FRONT_LEFT] = counter[FRONT_LEFT]; usRegHoldingBuf[MB_OFFSET + MB_FRONT_RIGHT] = counter[FRONT_RIGHT]; usRegHoldingBuf[MB_OFFSET + MB_REAR_LEFT] = counter[REAR_LEFT]; usRegHoldingBuf[MB_OFFSET + MB_REAR_RIGHT] = counter[REAR_RIGHT]; } //t_Ox.value = 0; //t_Oy.value = 0; t_Ox.array[0] = usRegHoldingBuf[2]; t_Ox.array[1] = usRegHoldingBuf[3]; t_Oy.array[0] = usRegHoldingBuf[4]; t_Oy.array[1] = usRegHoldingBuf[5]; t_Oz.array[0] = usRegHoldingBuf[6]; t_Oz.array[1] = usRegHoldingBuf[7]; ModbusEEPROMLoader(); }