diff --git a/examples/adc_dac/etc/adc_dac.oil b/examples/adc_dac/etc/adc_dac.oil index 9a6cfc8e..39625cfe 100644 --- a/examples/adc_dac/etc/adc_dac.oil +++ b/examples/adc_dac/etc/adc_dac.oil @@ -1,7 +1,8 @@ -/* Copyright 2014, Mariano Cerdeiro */ +/* Copyright 2014, 2015 Mariano Cerdeiro */ /* Copyright 2014, Gustavo Muro */ /* Copyright 2014, Pablo Ridolfi */ /* Copyright 2014, Juan Cecconi */ +/* All rights reserved. */ /* */ /* This file is part of CIAA Firmware. */ /* */ diff --git a/examples/adc_dac/src/adc_dac.c b/examples/adc_dac/src/adc_dac.c index 7ec3c56f..36dea144 100644 --- a/examples/adc_dac/src/adc_dac.c +++ b/examples/adc_dac/src/adc_dac.c @@ -1,7 +1,8 @@ -/* Copyright 2014, Mariano Cerdeiro +/* Copyright 2014, 2015 Mariano Cerdeiro * Copyright 2014, Gustavo Muro * Copyright 2014, Pablo Ridolfi * Copyright 2014, Juan Cecconi + * All rights reserved. * * This file is part of CIAA Firmware. * @@ -158,25 +159,36 @@ TASK(InitTask) fd_dac = ciaaPOSIX_open("/dev/serial/aio/out/0", ciaaPOSIX_O_WRONLY); ciaaPOSIX_ioctl(fd_dac, ciaaPOSIX_IOCTL_SET_SAMPLE_RATE, 100000); - /* Activates the ModbusSlave task */ - ActivateTask(Analogic); - /* end InitTask */ TerminateTask(); } +/** \brief Read ADC values + * + * This task is activated every 1ms by the AnalogicAlarm configured in + * adc_dac.oil + */ TASK(Analogic) { - uint16_t hr_ciaaDac; + int32_t count; + uint16_t hr_ciaaDac[128]; /* Read ADC. */ - ciaaPOSIX_read(fd_adc, &hr_ciaaDac, sizeof(hr_ciaaDac)); + count = ciaaPOSIX_read(fd_adc, &hr_ciaaDac, sizeof(hr_ciaaDac)); + + if (count > 0) + { + int32_t i; - /* Signal gain. */ - hr_ciaaDac >>= 0; + for(i = 0; i < (count/2); i++) { + /* signal processing. */ + /* e.g. duplicating the singal level */ + hr_ciaaDac[i] <<= 1; + } - /* Write DAC */ - ciaaPOSIX_write(fd_dac, &hr_ciaaDac, sizeof(hr_ciaaDac)); + /* Write DAC */ + ciaaPOSIX_write(fd_dac, &hr_ciaaDac, count); + } /* end of Blinking */ TerminateTask();