Por que te la complicas tanto para sacar el promedio de 2 numeros ?
entonces se va a la posicion 0 del arreglo para obtener el valor q esta en esa pocision, es decir 1023 entonces al hacer las operaciones me tiene q dar cero. Entonces cuendo lea el sensor2 la operacion final me tendria q dar 1000 ya que el dato ahora lo estoy guaradando en valor[1] y como i=1 entonces al hacer las operaciones me tendria q dar como resultado 1000,
Pero ahi no vas a la posicion 0 del arreglo, a no ser que estes usando un puntero u algo por el estilo.
No entiendo por que 1023 ( asumiendo que es el valor que lees del ADC y lo conoces ) la operacion te tiene que dar cero ?
Por que cuando lees el sensor 2 te tendria que dar 1000 ?.
Me termine basando en lo que pusiste al comienzo por que no logro entender lo que pedis para tu programa.
Es decir:
Estoy tratando de hacer un programa que me lea la lectura de ADC con pic y que saque un promedio, es decir quiero leer 2 lecturas de sensores cny70 con el convertidor analogico digital y obtener un promedio.
A no ser que quieras hacer un promedio movil o Moving average ( simple, acumulativo, exponencial, etc )
El promedio no es mas que la suma de ambos y lo dividis por 2.
while(true)
{
//sensor1
set_adc_channel(1);
delay_us(10);
sensor1= read_adc();
valor[0]=sensor1;
//sensor2
set_adc_channel(2);
delay_us(10);
sensor2= read_adc();
valor[1]=sensor2;
promedio = (valor[0] + valor[1])/2; // o rotado a la derecha una ves "promedio = (valor[0] + valor[1]) >> 1;"
}O como lo queres hacer con un for (Pero por la cantidad de numeros a sumar ocuparias mas ciclos de reloj y 1 lugar de memoria mas para la variable i):
promedio=0;
for(i=0;i<2;i++)
{
promedio += valor[i];
}
promedio /= 2; // o promedio >>= 1;
Es decir promedio comienza con 0 (ya que al volverse a ejecutar el codigo tendria otro valor), luego hace la suma "promedio = promedio + valor[0]" y luego la suma "promedio = promedio + valor[1]" por ultimo lo divide por 2 "promedio = promedio / 2".
O si no queres hacer un for y concentrarlo todo en una linea como hice en el primer ejemplo pones las 3 instrucciones que explique aca una abajo de la otra y listo.
O tu idea es hacerlo con punteros ?
valor es lo mismo que &valor[0], es decir la
direccion de donde se encuentra valor[0] y no el contenido.
Por lo que podrias reemplazar el valor
en el for por *(valor + i ). Pero creo que seria complicarte aun mas