コード例 #1
0
ファイル: usart.c プロジェクト: pekkaroi/bldc-drive
void parseUsart()
{
	const char delimiters[] = " ";

	char *param;
	char *value;
	if(strstr(recvbuffer, "STREAM")!=NULL)
	{
		strtok(recvbuffer,delimiters); //first param
		value = strtok(NULL,delimiters);
		if(strstr(value,"START"))
		{
			serial_stream_enabled=1;
			usart_send_stream();
		}
		else
			serial_stream_enabled=0;
	}
	if(strstr(recvbuffer, "SET")!=NULL)
	{
	  strtok(recvbuffer,delimiters); //first param
	  param = strtok(NULL,delimiters);
	  value = strtok(NULL,delimiters);
	  if(param!=NULL && value!=NULL)
		  setConfig(param,atoi(value));

	}
	if(strstr(recvbuffer, "SAVE")!=NULL)
	{
		usart_sendStr("Saving:\n\r");
		printConfiguration();
		writeConfig(s);
		usart_sendStr("SAVE OK\n\r");
	}
	if(strstr(recvbuffer, "GET")!=NULL)
	{
		//getConfig();
		printConfiguration();
	}


	if(recvctr < 3)
	{

		uint16_t len =sprintf(txbuffer, "Count: %d, Hall: %d, error: %d, max_error: %d\n\r",(int)encoder_count, (int)hallpos, (int)position_error, (int)max_error);
		max_error=0;
		usart_startDMA(len);


	}
}
コード例 #2
0
ファイル: configuration.c プロジェクト: yikedz/bldc-drive
void writeConfig()
{



	uint16_t i;
	int16_t *ptr = (int16_t *)&s;
	for(i=0; i<sizeof(servoConfig)/2;i++)
	{
		if(EE_WriteVariable(EADDR_CONFIG_START+i, *ptr)!=FLASH_COMPLETE)
		{
			usart_sendStr("Flash Error\n\r");
		}
		ptr++;
	}


}
コード例 #3
0
ファイル: configuration.c プロジェクト: yikedz/bldc-drive
void printConfiguration()
{
	char buf[50];
	sprintf(buf,"commutationMethod: %d\n\r",s.commutationMethod);
	usart_sendStr(buf);
	sprintf(buf,"inputMethod: %d\n\r",s.inputMethod);
	usart_sendStr(buf);
	sprintf(buf,"encoder_PPR: %d\n\r",s.encoder_PPR);
	usart_sendStr(buf);
	sprintf(buf,"encoder_poles: %d\n\r",s.encoder_poles);
	usart_sendStr(buf);
	sprintf(buf,"encoder_counts_per_step: %d\n\r",s.encoder_counts_per_step);
	usart_sendStr(buf);
	sprintf(buf,"pid_Kp: %d\n\r",s.pid_Kp);
	usart_sendStr(buf);
	sprintf(buf,"pid_Ki: %d\n\r",s.pid_Ki);
	usart_sendStr(buf);
	sprintf(buf,"pid_Kd: %d\n\r",s.pid_Kd);
	usart_sendStr(buf);
	sprintf(buf,"usart_baud: %d\n\r",s.usart_baud);
	usart_sendStr(buf);


}
コード例 #4
0
ファイル: configuration.c プロジェクト: yikedz/bldc-drive
void getConfig()
{
	FLASH_Unlock();

	uint16_t i;

	uint16_t *ptr;
	EE_Init();
	EE_ReadVariable(EADDR_IS_INITIALIZED,&i);
	if(i != 0x5253)
	{
		//empty or corrupted EEPROM detected: write default config
		//EE_Format();
		EE_WriteVariable(EADDR_IS_INITIALIZED, 0x5253);
		s.commutationMethod = commutationMethod_HALL;
		s.inputMethod = inputMethod_stepDir;
		s.encoder_PPR = 4000;
		s.encoder_poles = 4;
		s.encoder_counts_per_step = 10;
		s.pid_Kp = 10;
		s.pid_Ki = 0;
		s.pid_Kd = 0;
		s.usart_baud = 1152;
		writeConfig(s);
		return;

	}
	ptr = (uint16_t *)&s;
	for(i=0; i<sizeof(servoConfig)/2;i++)
	{

		if(EE_ReadVariable(EADDR_CONFIG_START+i, ptr)!=0)
			usart_sendStr("Flash Error\n\r");
		ptr++;
	}

	return;

}
コード例 #5
0
ファイル: configuration.c プロジェクト: yikedz/bldc-drive
void setConfig(char* param, int16_t value)
{
	if (strstr( param, "commutationMethod" ) != NULL)
	{
		s.commutationMethod = (uint16_t)value;
		//writeConfig();

		//this is taken into account on next boot
		usart_sendStr("SET commutationMethod to ");
		usart_sendChar(value + 48);
		usart_sendStr("\n\r");
	}
	if (strstr( param, "inputMethod" ) != NULL)
	{
		s.inputMethod = (uint16_t)value;
		//writeConfig();
		//this is taken into account on next boot

		usart_sendStr("SET OK");
	}
	if (strstr( param, "encoder_PPR" ) != NULL)
	{
		s.encoder_PPR = (uint16_t)value;

		//writeConfig();

		usart_sendStr("SET OK");
	}
	if (strstr( param, "encoder_poles" ) != NULL)
	{
		s.encoder_poles = (uint16_t)value;
		//writeConfig();

		usart_sendStr("SET OK");
	}
	if (strstr( param, "encoder_counts_per_step" ) != NULL)
	{
		s.encoder_counts_per_step = (uint16_t)value;
		//writeConfig();

		usart_sendStr("SET OK");
	}
	if (strstr( param, "pid_Kp" ) != NULL)
	{
		s.pid_Kp = (int16_t)value;
		//writeConfig();

		usart_sendStr("SET OK");
	}
	if (strstr( param, "pid_Ki" ) != NULL)
	{
		s.pid_Ki = (int16_t)value;
		//writeConfig();

		usart_sendStr("SET OK");
	}
	if (strstr( param, "pid_Kd" ) != NULL)
	{
		s.pid_Kd = (int16_t)value;
		//writeConfig();

		usart_sendStr("SET OK");
	}
	if (strstr( param, "usart_baud" ) != NULL)
	{
		s.usart_baud = (uint16_t)value;
		//writeConfig();
		//this is taken into account on next boot
		usart_sendStr("SET OK");
	}
}