Hello Ernesto.
I think that you have the same problem that me.
You must rewrite :
FILE_PTR f,fadc, fadc0, fadc1, fadc2, fadc3, fadc4, fadc5, fadc6, fadc7;
f = fopen("adc:",&adc_init);
fadc = fopen("adc:0",&adc_channel_param0); //for example
I create 8 handlers, and one more called f, and fadc.
First you create a handler. Second, you start the interfaz ADC, and then you assign sources to this handler choosing the channel.
I use to the next code:
ADC_RESULT_STRUCT data;
FILE_PTR f,fadc, fadc0, fadc1, fadc2, fadc3, fadc4, fadc5, fadc6, fadc7;
pointer event_ptr;
data.result=VALOR_NO_VALIDO; //VALOR_NO_VALIDO is it data wrong.
f = fopen("adc:",&adc_init);
if(f != NULL)
{
printf("OK.\n");
}
else//....code for errors
for (canal=0;canal!=8;canal++) //open the 8 ADC´s
{
//printf("Abriendo canal #%d...",canal);
switch (canal)
{
case ADC_SOURCE_AN0: fadc = fopen("adc:0",&adc_channel_param0);
fadc0=fadc;
break;
case ADC_SOURCE_AN1: fadc = fopen("adc:1",&adc_channel_param1);
fadc1=fadc;
break;
case ADC_SOURCE_AN2: fadc = fopen("adc:2",&adc_channel_param2);
fadc2=fadc;
break;
case ADC_SOURCE_AN3: fadc = fopen("adc:3",&adc_channel_param3);
fadc3=fadc;
break;
case ADC_SOURCE_AN4: fadc = fopen("adc:4",&adc_channel_param4);
fadc4=fadc;
break;
case ADC_SOURCE_AN5: fadc = fopen("adc:5",&adc_channel_param5);
fadc5=fadc;
break;
case ADC_SOURCE_AN6: fadc = fopen("adc:6",&adc_channel_param6);
fadc6=fadc;
break;
case ADC_SOURCE_AN7: fadc = fopen("adc:7",&adc_channel_param7);
fadc7=fadc;
break;
}
if(fadc != NULL)
{
//printf("correcto, puntero asociado a canal %d OK.\n",canal);
}
else//..code for errors{}
}
//and learn conversion....bucle
switch (canal)
{
case ADC_SOURCE_AN0: fadc=fadc0;
break;
case ADC_SOURCE_AN1: fadc=fadc1;
break;
case ADC_SOURCE_AN2: fadc=fadc2;
break;
case ADC_SOURCE_AN3: fadc=fadc3;
break;
case ADC_SOURCE_AN4: fadc=fadc4;
break;
case ADC_SOURCE_AN5: fadc=fadc5;
break;
case ADC_SOURCE_AN6: fadc=fadc6;
break;
case ADC_SOURCE_AN7: fadc=fadc7;
break;
}
ioctl(f,IOCTL_ADC_FIRE_TRIGGER,(pointer)ADC_TRIGGER_1);
_time_delay(500);//espera
if (read(fadc, &data, sizeof(data)))
{
if (data.result!=VALOR_NO_VALIDO) data_save=data.result;
}
else printf("Fail to learn.\n");
This is WORK!!
Tell your experience