Hola, soy nuevo en este tipo de programación (entiendo la electrónica) y lei el PDF "Introduccion a OSEK-OS" que me ayudo mucho. En diciembre arranque a hacer pruebas con la edu-ciaa-nxp y entendi como funcionan los ejemplos de los leds y los interruptores. Ahora quiero hacer pruebas con el ADC y vi un ejemplo que tiene lo siguiente:
1 fd_adc = ciaaPOSIX_open("/dev/serial/aio/in/0", ciaaPOSIX_O_RDONLY);
2 ciaaPOSIX_ioctl(fd_adc, ciaaPOSIX_IOCTL_SET_SAMPLE_RATE, 100000);
3 ciaaPOSIX_ioctl(fd_adc, ciaaPOSIX_IOCTL_SET_CHANNEL, ciaaCHANNEL_3)
Vi en el grupo que hicieron un par de dudas con este código pero no me queda del todo claro de lo que hacen la segunda y tercer liena (sobre todo la segunda).
luego viene la tarea analogic:
TASK(Analogic)
{
uint16_t hr_ciaaDac;
/* Read ADC. */
ciaaPOSIX_read(fd_adc, &hr_ciaaDac, sizeof(hr_ciaaDac));
/* Signal gain. */
hr_ciaaDac >>= 0;
/* Write DAC */
ciaaPOSIX_write(fd_dac, &hr_ciaaDac, sizeof(hr_ciaaDac));
/* end of Blinking */
TerminateTask();
lo que entiendo de esta parte es que toma la señal analogica y la escribe discretizada en hr_ciaaDac y luego la vuelve a sacar por el DAC. No veo una alarma u algo que haga que la tarea se repita.
Otra duda que tengo es ¿ Cuales son los valores de discretización (rango)? basicamente quiero tomar una señal del ADC y en base a ese valor realizar una accion (por ejemplo si la señal analogica es un escalon de 5V o mayor que prenda un led).
Otra duda que tengo es: ¿ Como uso los GPIO? supongamos que quiera poner en "1" GPIO1 o supongamos que quiera escribir un numero de 1 Byte desde GPIO0 a GPIO7.
Si me tienen paciencia seria joya porque en C hice muy pocas cosas.
Gracias.
Federico.