Пример #1
0
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(); 
}
Пример #3
0
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;
		}
  }       
}
Пример #4
0
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();
}