From: Hugo V. <hug...@gm...> - 2009-06-23 21:09:48
|
Hi Yuki, Attached is my test program to read from the ADC. You also need to enable ADC support in the kernel. I'm not able to provide step-by-step instructions for this as I'm using a fairly customized kernel at this point. Basically you need to enable MADC support in your kernel config (using make menuconfig, copy .config to defconfig in OpenEmbedded) with the CONFIG_TWL4030_MADC=y option, and make a few small changes in board-overo.c (patch attached also). Note that I haven't been able to get MADC to work as a kernel module (for unknown reasons), so it has to be compiled into the kernel. I've CC'd the gumstix mailing list as well; hopefully others might find this useful as well. Regards, Hugo Vincent On Wed, Jun 24, 2009 at 8:27 AM, <Yu...@bh...> wrote: > Hello, > > I've seen that you are able to read from the ADC on the Overo board. I would really appreciate any pointers as to where to start in order to do the same. > > We are building a small application and we are trying to get the ADC’s working on a Overo Water with a Tobi expansion board. > > We already have the i2c-tools working on the overo, but my question is: Do you have or know of a instruction set such as the robostix i2c-io “i2c-io i2c-addr Get port.pin” that will work on the Overo? > > If it is not too much to ask, could you provide us with some step-by-step instructions on how to get the ADC reading inputs. It doesn't have to be anything much elaborated just some quick guidelines. > > Thanks for your time, we really appreciate any information on the matter. > > Yuki Yunes > |
From: amenon <ame...@gm...> - 2009-07-16 18:58:42
|
Hi Hugo, Thank you for your code sample. I built the kernel from a recent git pull and this seems to include your patches for the tw4030-madc driver. I tried your test program and see voltages at ADC2 and ADC7; 1.6V at ADC2 and 1.4V at ADC7. All the other ADC float close to zero. I measured the voltage at ADC2 and ADC7 with a voltmeter; ADC7 read 1.4V and ADC2 drops to nearly zero (both on the voltmeter and the mad-test program). However, when I provide a voltage (1.5V) at any ADC pin (2-7) with the ground of the source connected to AGND, the test program reading still floats near zero. Is there something you think I could be doing wrong? Btw, I am using an Overo Earth with the Tobi board. The Tobi has the same 40pin header as the Summit. Thanks. -Arvind -- View this message in context: http://www.nabble.com/Re%3A-Help-with-Overo-ADC-tp24174607p24522426.html Sent from the Gumstix mailing list archive at Nabble.com. |
From: Søren S. C. <li...@ss...> - 2009-07-16 19:38:36
|
> I tried your test program and see voltages at ADC2 and ADC7; 1.6V at ADC2 > and 1.4V at ADC7. All the other ADC float close to zero. I measured the > voltage at ADC2 and ADC7 with a voltmeter; ADC7 read 1.4V and ADC2 drops > to nearly zero (both on the voltmeter and the mad-test program). However, > when I provide a voltage (1.5V) at any ADC pin (2-7) with the ground of the > source connected to AGND, the test program reading still floats near zero. > Is there something you think I could be doing wrong? Just a wild guess - Is pin multiplexing of the ADCINx channels set properly on the TPS65950 device? Søren |
From: Hugo V. <hug...@gm...> - 2009-07-17 00:20:21
|
Hi Arvind, Try this patch. From: Hugo Vincent <hug...@gm...> Subject: [PATCH] madc: enable the general-purpose monitoring ADC (madc) on Overo diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/ board-overo.c index dec8f75..d2b5650 100644 --- a/arch/arm/mach-omap2/board-overo.c +++ b/arch/arm/mach-omap2/board-overo.c @@ -321,6 +321,10 @@ static struct twl4030_gpio_platform_data overo_gpio_data = { .setup = overo_twl_gpio_setup, }; +static struct twl4030_madc_platform_data overo_madc_data = { + .irq_line = 1, +}; + static struct twl4030_usb_data overo_usb_data = { .usb_mode = T2_USB_MODE_ULPI, }; @@ -348,6 +352,7 @@ static struct twl4030_platform_data overo_twldata = { .usb = &overo_usb_data, .power = GENERIC3430_T2SCRIPTS_DATA, .vmmc1 = &overo_vmmc1, + .madc = &overo_madc_data, }; static struct i2c_board_info __initdata overo_i2c_boardinfo[] = { diff --git a/drivers/i2c/chips/twl4030-madc.c b/drivers/i2c/chips/ twl4030-madc.c index d3e0a7f..75835d0 100644 --- a/drivers/i2c/chips/twl4030-madc.c +++ b/drivers/i2c/chips/twl4030-madc.c @@ -454,6 +454,16 @@ static int __init twl4030_madc_probe(struct platform_device *pdev) twl4030_madc_set_power(madc, 1); twl4030_madc_set_current_generator(madc, 0, 1); + /* Enable ADCIN3 through 6 */ + ret = twl4030_i2c_read_u8(TWL4030_MODULE_USB, + ®val, TWL4030_USB_CARKIT_ANA_CTRL); + + regval |= TWL4030_USB_SEL_MADC_MCPC; + + ret = twl4030_i2c_write_u8(TWL4030_MODULE_USB, + regval, TWL4030_USB_CARKIT_ANA_CTRL); + + ret = twl4030_i2c_read_u8(TWL4030_MODULE_MAIN_CHARGE, ®val, TWL4030_BCI_BCICTL1); diff --git a/include/linux/i2c/twl4030-madc.h b/include/linux/i2c/ twl4030-madc.h index 24523b5..341a665 100644 --- a/include/linux/i2c/twl4030-madc.h +++ b/include/linux/i2c/twl4030-madc.h @@ -111,6 +111,10 @@ enum sample_type { #define TWL4030_BCI_TYPEN (1<<4) #define TWL4030_BCI_ITHEN (1<<3) +/* USB related - XXX To be moved elsewhere */ +#define TWL4030_USB_CARKIT_ANA_CTRL 0xBB +#define TWL4030_USB_SEL_MADC_MCPC (1<<3) + #define TWL4030_MADC_IOC_MAGIC '`' #define TWL4030_MADC_IOCX_ADC_RAW_READ _IO(TWL4030_MADC_IOC_MAGIC, 0) And make sure this one is applied too: Subject: [PATCH/RFC] ARM: OMAP: Initialize MADC clock divider and clock From: Steve Sakoman <sa...@gm...> Though the comment in clocks_init claims to initialize the MADC clocks, it wasn't actually being done. This patch implements minimal MADC clock initialization. Compile/run tested on Overo (prior to patch MADC access would always timeout) diff --git a/drivers/mfd/twl4030-core.c b/drivers/mfd/twl4030-core.c index 769b34b..c5ca36d 100644 --- a/drivers/mfd/twl4030-core.c +++ b/drivers/mfd/twl4030-core.c @@ -159,6 +159,7 @@ /* Few power values */ #define R_CFG_BOOT 0x05 +#define R_GPBR1 0x0C #define R_PROTECT_KEY 0x0E /* access control values for R_PROTECT_KEY */ @@ -166,6 +167,10 @@ #define KEY_UNLOCK2 0xec #define KEY_LOCK 0x00 +/* MADC clock values for R_GPBR1 */ +#define MADC_HFCLK_EN 0x80 +#define DEFAULT_MADC_CLK_EN 0x10 + /* some fields in R_CFG_BOOT */ #define HFCLK_FREQ_19p2_MHZ (1 << 0) #define HFCLK_FREQ_26_MHZ (2 << 0) @@ -717,6 +722,11 @@ static void __init clocks_init(struct device *dev) ctrl |= HIGH_PERF_SQ; e |= unprotect_pm_master(); /* effect->MADC+USB ck en */ + + if (twl_has_madc()) + e |= twl4030_i2c_write_u8(TWL4030_MODULE_INTBR, + MADC_HFCLK_EN | DEFAULT_MADC_CLK_EN, R_GPBR1); + e |= twl4030_i2c_write_u8(TWL4030_MODULE_PM_MASTER, ctrl, R_CFG_BOOT); e |= protect_pm_master(); On 17/07/2009, at 6:58 AM, amenon wrote: > > Hi Hugo, > > Thank you for your code sample. I built the kernel from a recent git > pull > and this seems to include your patches for the tw4030-madc driver. > > I tried your test program and see voltages at ADC2 and ADC7; 1.6V at > ADC2 > and 1.4V at ADC7. All the other ADC float close to zero. I measured > the > voltage at ADC2 and ADC7 with a voltmeter; ADC7 read 1.4V and ADC2 > drops to > nearly zero (both on the voltmeter and the mad-test program). > However, when > I provide a voltage (1.5V) at any ADC pin (2-7) with the ground of the > source connected to AGND, the test program reading still floats near > zero. > Is there something you think I could be doing wrong? > > Btw, I am using an Overo Earth with the Tobi board. The Tobi has the > same > 40pin header as the Summit. > > Thanks. > > -Arvind > > -- > View this message in context: http://www.nabble.com/Re%3A-Help-with-Overo-ADC-tp24174607p24522426.html > Sent from the Gumstix mailing list archive at Nabble.com. > > > ------------------------------------------------------------------------------ > Enter the BlackBerry Developer Challenge > This is your chance to win up to $100,000 in prizes! For a limited > time, > vendors submitting new applications to BlackBerry App World(TM) will > have > the opportunity to enter the BlackBerry Developer Challenge. See > full prize > details at: http://p.sf.net/sfu/Challenge > _______________________________________________ > gumstix-users mailing list > gum...@li... > https://lists.sourceforge.net/lists/listinfo/gumstix-users |
From: amenon <ame...@gm...> - 2009-07-17 15:11:11
|
Thanks Hugo, The patches to twl4030-madc.c and twl4030-madc.h are not in the source tree and applying those activates ADCIN3 through 6. Thanks. -Arvind -- View this message in context: http://www.nabble.com/Re%3A-Help-with-Overo-ADC-tp24174607p24536366.html Sent from the Gumstix mailing list archive at Nabble.com. |
From: js22 <JSteele@ColoradoCollege.edu> - 2009-08-03 20:02:06
|
Hi Hugo (or anyone ....) I'm trying to get the ADCs working. I used "bitbake linux-omap3" to build a kernel, copied it to microSD, and booted. I verified that the changes in your patch had been applied in the bitbake build, and from the /proc/config.gz I confirmed that the running kernel (2.6.30-ompa1) was indeed compiled with CONFIG_TWL4030_MADC = y . So far, so good. As a first check, I looked for /dev/twl4030-madc but it's not there . Q : Is this a sign I've screwed up, or is there something that needs to be done to enable/configure the ADCs ? I've located entries under /sys/devices/virtual/misc/twl4030-madc/[dev power subsystem uevent] In particular, the "cat uevent" gives : > MAJOR=10 > MINOR=63 Going out on a limb, does this mean I should use mknod to create a char device file ? Any help on this is very much appreciated; If I can get adcs to work, I will be able to use my Overo for a new project. Hugo Vincent wrote: > > > Attached is my test program to read from the ADC. > > You also need to enable ADC support in the kernel. I'm not able to > provide step-by-step instructions for this as I'm using a fairly > customized kernel at this point. Basically you need to enable MADC > support in your kernel config (using make menuconfig, copy .config to > defconfig in OpenEmbedded) with the CONFIG_TWL4030_MADC=y option, and > make a few small changes in board-overo.c (patch attached also). Note > that I haven't been able to get MADC to work as a kernel module (for > unknown reasons), so it has to be compiled into the kernel. > > I've CC'd the gumstix mailing list as well; hopefully others might > find this useful as well. > > Regards, > Hugo Vincent > > > -- View this message in context: http://www.nabble.com/Re%3A-Help-with-Overo-ADC-tp24174607p24797265.html Sent from the Gumstix mailing list archive at Nabble.com. |
From: Hugo V. <hug...@gm...> - 2009-08-04 03:17:49
|
Hi js22, I'm not working on Overo kernel stuff any more, and haven't updated my kernel since 2.6.29.4. At the time, AFAICR, when everything was working, the /dev entry was created automatically by udev. So if it's not being created, something is wrong with your kernel or possibly with your udev (although you can rule that out of e.g. a usb mass storage device correctly gets created in /dev and /media). Other option might be to check in /proc/other, /proc/char or whatever (I forget, and don't have it in front of me sorry) for the major and minor numbers and mknod manually, as you suggested. ADCs definitely work correctly on 2.6.29-omap1, with my patches. Is there anything specifically you need in 2.6.30-omap1 or could you consider switching to the older kernel? Hugo On 4/08/2009, at 8:01 AM, js22 wrote: > > Hi Hugo (or anyone ....) > > I'm trying to get the ADCs working. > > I used "bitbake linux-omap3" to build a kernel, copied it to > microSD, and > booted. > > I verified that the changes in your patch had been applied in the > bitbake > build, and from the /proc/config.gz I confirmed that the running > kernel > (2.6.30-ompa1) was indeed compiled with CONFIG_TWL4030_MADC = y . > > So far, so good. > > As a first check, I looked for /dev/twl4030-madc but it's not there . > > Q : Is this a sign I've screwed up, or is there something that needs > to be > done to enable/configure the ADCs ? > > > I've located entries under /sys/devices/virtual/misc/twl4030-madc/ > [dev power > subsystem uevent] > > In particular, the "cat uevent" gives : >> MAJOR=10 >> MINOR=63 > > Going out on a limb, does this mean I should use mknod to create a > char > device file ? > > > Any help on this is very much appreciated; If I can get adcs to > work, I will > be able to use my Overo for a new project. > > > > > > Hugo Vincent wrote: >> >> >> Attached is my test program to read from the ADC. >> >> You also need to enable ADC support in the kernel. I'm not able to >> provide step-by-step instructions for this as I'm using a fairly >> customized kernel at this point. Basically you need to enable MADC >> support in your kernel config (using make menuconfig, copy .config to >> defconfig in OpenEmbedded) with the CONFIG_TWL4030_MADC=y option, and >> make a few small changes in board-overo.c (patch attached also). Note >> that I haven't been able to get MADC to work as a kernel module (for >> unknown reasons), so it has to be compiled into the kernel. >> >> I've CC'd the gumstix mailing list as well; hopefully others might >> find this useful as well. >> >> Regards, >> Hugo Vincent >> >> >> > > -- > View this message in context: http://www.nabble.com/Re%3A-Help-with-Overo-ADC-tp24174607p24797265.html > Sent from the Gumstix mailing list archive at Nabble.com. > > > ------------------------------------------------------------------------------ > Let Crystal Reports handle the reporting - Free Crystal Reports 2008 > 30-Day > trial. Simplify your report design, integration and deployment - and > focus on > what you do best, core application coding. Discover what's new with > Crystal Reports now. http://p.sf.net/sfu/bobj-july > _______________________________________________ > gumstix-users mailing list > gum...@li... > https://lists.sourceforge.net/lists/listinfo/gumstix-users |
From: js22 <JSteele@ColoradoCollege.edu> - 2009-08-04 20:28:27
|
Wow, it works ! So ADC's are only a step or two away from being available to the masses. The only hitch is in getting the /dev file created. I don't know much about the inner workings of udev, but I looked at the info in /sys/devices/virtual/misc/twl4030-madc/dev and saw : 10:63 So I ran "mknod /dev/twl4030-madc u 10 63". After that your demo program worked without a hitch; I applied a voltage to an input and indeed its value changed (a good sign, I'd say !). Anyway, running mknod after every reboot is a messy kludge, but it at least works. I don't know if the problem is a general udev issue or something in the madc code that got broken. I'm waiting until I get a USB cable before I can do much productive work on the system... Anyway, thanks Hugo for your prompt and helpful reply ! Cheers, Jeff Hugo Vincent wrote: > > Hi js22, > > I'm not working on Overo kernel stuff any more, and haven't updated my > kernel since 2.6.29.4. At the time, AFAICR, when everything was > working, the /dev entry was created automatically by udev. So if it's > not being created, something is wrong with your kernel or possibly > with your udev (although you can rule that out of e.g. a usb mass > storage device correctly gets created in /dev and /media). > > Other option might be to check in /proc/other, /proc/char or whatever > (I forget, and don't have it in front of me sorry) for the major and > minor numbers and mknod manually, as you suggested. > > ADCs definitely work correctly on 2.6.29-omap1, with my patches. Is > there anything specifically you need in 2.6.30-omap1 or could you > consider switching to the older kernel? > > Hugo > > -- View this message in context: http://www.nabble.com/Re%3A-Help-with-Overo-ADC-tp24174607p24815655.html Sent from the Gumstix mailing list archive at Nabble.com. |
From: shanecox <tcs...@ya...> - 2010-11-02 16:00:44
|
Hi everyone. I try the test program shown by Hugo ,following all the patches in kernel 2.6.29-omap, later I tried with kernel 2.6.34 and apparently already the patches were applied. And in the two occasions I throw the following result : root@overo:~# ./madc-test ADCIN2 (channel 2): 2.497559 ADCIN3 (channel 3): 2.497559 ADCIN4 (channel 4): 2.497559 ADCIN5 (channel 5): 2.221680 ADCIN6 (channel 6): 2.297363 ADCIN7 (channel 7): 1.520996 VBUS_USB_OTG (channel 8): 0.751953 VBATT/3.3V_RAIL (channel 12): 3.392578 this is correct? or there is something badly? I have one Overo Gumstix with Tobi Board and my intention is connect the sensor to the board directly by ADCIN. Thanks for any help. -- View this message in context: http://old.nabble.com/Re%3A-Help-with-Overo-ADC-tp24174607p30115080.html Sent from the Gumstix mailing list archive at Nabble.com. |
From: asoe <aun...@gm...> - 2011-01-12 07:15:21
|
shanecox <tcsaldivia <at> yahoo.com> writes: > > > Hi everyone. > > I try the test program shown by Hugo ,following all the patches in kernel > 2.6.29-omap, later I tried with kernel 2.6.34 and apparently already the > patches were applied. > And in the two occasions I throw the following result : > > root <at> overo:~# ./madc-test > ADCIN2 (channel 2): 2.497559 > ADCIN3 (channel 3): 2.497559 > ADCIN4 (channel 4): 2.497559 > ADCIN5 (channel 5): 2.221680 > ADCIN6 (channel 6): 2.297363 > ADCIN7 (channel 7): 1.520996 > VBUS_USB_OTG (channel 8): 0.751953 > VBATT/3.3V_RAIL (channel 12): 3.392578 > > this is correct? or there is something badly? > > I have one Overo Gumstix with Tobi Board and my intention is connect the > sensor to the board directly by ADCIN. > > Thanks for any help. > Hi I am a newbie to Gumstix Tobe and Overo Tide. I wonder where can I find the specification such as A/D sampling rate for Tobi hardware. I understand that Tobi comes with 6 A/D chs of 10 bits each as per Gumstix.com, but not finding anywhere about sample rate, etc.. I am evaluating SBC hardware for a real time multichannel data acquisition systems and I will appreciate if anyone can give me a hint. Thanks! Rgds Asoe |
From: jkoenig1987 <jon...@gm...> - 2011-01-12 16:51:13
|
asoe wrote: > > > Hi > > I am a newbie to Gumstix Tobe and Overo Tide. > I wonder where can I find the specification > such as A/D sampling rate for Tobi hardware. > I understand that Tobi comes with 6 A/D chs > of 10 bits each as per Gumstix.com, but not > finding anywhere about sample rate, etc.. > > We were using the Verdex Pro and GPSstix as a datalogger on a previous project. After some kernel configuration and python/c code, we were able to get the ADC working. As far as sampling rate, with nothing else running on the processor, we were able to sample 1 channel in C at ~3.5kHz. Here's a summary of the sampling rates that we obtained with other channels. 2 channels: Python – 400 Hz, C – 1500 Hz 3 channels: Python – 320 Hz, C – 1040 Hz 4 channels: Python – 250 Hz, C – 750 Hz 8 channels: Python – 120 Hz, C – 400 Hz Note that these values are from the Verdex Pro, whose ADC was on an expansion board with the UCB1400. Since the Overo has the ADC built in (with a faster processor), I'd expect it to be faster. Won't have actual speed test results until we get there on our project though, probably a few weeks from now... Hope that helps, -Jonathon -- View this message in context: http://old.nabble.com/Re%3A-Help-with-Overo-ADC-tp24174607p30654342.html Sent from the Gumstix mailing list archive at Nabble.com. |
From: jkoenig1987 <jon...@gm...> - 2011-01-12 16:54:08
|
asoe wrote: > > > Hi > > I am a newbie to Gumstix Tobe and Overo Tide. > I wonder where can I find the specification > such as A/D sampling rate for Tobi hardware. > I understand that Tobi comes with 6 A/D chs > of 10 bits each as per Gumstix.com, but not > finding anywhere about sample rate, etc.. > > We were using the Verdex Pro and GPSstix as a datalogger on a previous project. After some kernel configuration and python/c code, we were able to get the ADC working. As far as sampling rate, with nothing else running on the processor, we were able to sample 1 channel in C at ~3.5kHz. Here's a summary of the sampling rates that we obtained with other channels. 2 channels: Python – 400 Hz, C – 1500 Hz 3 channels: Python – 320 Hz, C – 1040 Hz 4 channels: Python – 250 Hz, C – 750 Hz 8 channels: Python – 120 Hz, C – 400 Hz Note that these values are from the Verdex Pro, whose ADC was on an expansion board with the UCB1400. Since the Overo has the ADC built in (with a faster processor), I'd expect it to be faster. Won't have actual speed test results until we get there on our project though, probably a few weeks from now... Hope that helps, -Jonathon -- View this message in context: http://old.nabble.com/Re%3A-Help-with-Overo-ADC-tp24174607p30654343.html Sent from the Gumstix mailing list archive at Nabble.com. |