Solved
whats wrong in below code
uint16_t val[200];
unsigned char data[20];
uint32_t AVG_val[10];
uint16_t val_2=0;
unsigned char count=0;
double rms=0.0;
uint32_t square = 0;
double mean = 0;
double root=0.0;
int arr[]={15,78,59,85,56};
int n=100;
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_ADC3_Init();
MX_USART1_UART_Init();
HAL_Delay(3000);
while (1)
{
while(1){
HAL_ADC_Start(&hadc3);
HAL_ADC_PollForConversion(&hadc3,1000);
val_2 = HAL_ADC_GetValue(&hadc3); //i=6;
val[count] = (2500*val_2)/65535;
HAL_ADC_Stop(&hadc3);
HAL_Delay(1);
count++;
if(count==99){count=0;break;}
}
/* while(1){
data[0]=val[count]/10000+48;
val[count] = val[count]%10000;
data[1]=val[count]/1000+48;
val[count] = val[count]%1000;
data[2]=val[count]/100+48;
val[count] = val[count]%100;
data[3]=val[count]/10+48;
data[4] = val[count]%10+48;
count++;
HAL_UART_Transmit (&huart1, data, sizeof (data), 10);
HAL_UART_Transmit (&huart1, "\r\n", 2, 10);
HAL_Delay(1);
if(count==99){count=0;break;}*/
square = 0;
for (int i = 0; i < 100; i++) {
square += pow(val[i], 2);
}
//sprintf(data,"%ld",square);
// HAL_UART_Transmit (&huart1, data, sizeof (data), 10);
// HAL_UART_Transmit (&huart1, "\r\n", 2, 10);
// Calculate Mean.
mean = (389753638 / (float)(100));
sprintf(data,"%lf",mean);
HAL_UART_Transmit (&huart1, data, sizeof (data), 10);
HAL_UART_Transmit (&huart1, "\r\n", 2, 10);
// Calculate Root.
// root = sqrt(mean);
// sprintf(data,"%lf",root);
//HAL_UART_Transmit (&huart1, data, sizeof (data), 10);
// HAL_UART_Transmit (&huart1, "\r\n", 2, 10);
}
HAL_Delay(2000);
/* USER CODE END 3 */
}i am trying to read RMS value, i cant get the mean value .
so try to get mean value of constant, it printed only null value.
what wrong with this line i dont understand. i thought this is because of data size.
but thesame problem with double.
thanking you
