From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 18470 invoked by alias); 19 Apr 2011 12:43:03 -0000 Received: (qmail 18442 invoked by uid 22791); 19 Apr 2011 12:43:01 -0000 X-SWARE-Spam-Status: No, hits=-2.7 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,RFC_ABUSE_POST X-Spam-Check-By: sourceware.org Received: from mail-bw0-f49.google.com (HELO mail-bw0-f49.google.com) (209.85.214.49) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 19 Apr 2011 12:42:46 +0000 Received: by bwz1 with SMTP id 1so5791550bwz.36 for ; Tue, 19 Apr 2011 05:42:44 -0700 (PDT) MIME-Version: 1.0 Received: by 10.204.20.66 with SMTP id e2mr799409bkb.141.1303216964245; Tue, 19 Apr 2011 05:42:44 -0700 (PDT) Received: by 10.204.48.135 with HTTP; Tue, 19 Apr 2011 05:42:44 -0700 (PDT) In-Reply-To: References: <4DA5E763.7030104@dallaway.org.uk> Date: Tue, 19 Apr 2011 12:43:00 -0000 Message-ID: From: jayant biswas To: Christophe Coutand Cc: ecos-discuss@ecos.sourceware.org Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Mailing-List: contact ecos-discuss-help@ecos.sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: ecos-discuss-owner@ecos.sourceware.org Subject: [ECOS] Re: stm3210e eval board adc question X-SW-Source: 2011-04/txt/msg00078.txt.bz2 Hi Christophe. Thanks for the info about how to find out which channel corresponds to which input. This will be useful for me. As for the terminal I am using cutecom on ubuntu. 38400,8,1, parity none, no handshake, open for reading and writing. I tried running the adc1 test and that only runs this far: \0x00INFO: Testing ADC channel '/dev/adc00' when I force stop the program it says the following (gdb) continue Continuing. ^C Program received signal SIGINT, Interrupt. 0x08003832 in Cyg_Mutex::lock (this=3D0x6800001c) at /home/jayant/ecos/adc/ecos_install/include/cyg/kernel/sched.inl:99 99 if( __lock =3D=3D 0 ) unlock_inner(0); Current language: auto; currently c++ Stepping through adc2 in gdb with a breakpoint on line 181 as you mentioned i get this (gdb) break adc2.c:181 Breakpoint 1 at 0x800027e: file adc2.c, line 181. (gdb) continue Continuing. Note: automatically using hardware breakpoints for read-only addresses. Breakpoint 1, adc_thread (data=3D) at adc2.c:181 181 cyg_uint32 len =3D sizeof(sample); (gdb) info frame Stack level 0, frame at 0x68004668: pc =3D 0x800027e in adc_thread (adc2.c:181); saved pc 0x8002b4e called by frame at 0x68004670 source language c. Arglist at 0x68004628, args: data=3D Locals at 0x68004628, Previous frame's sp is 0x68004668 Saved registers: r4 at 0x68004644, r5 at 0x68004648, r6 at 0x6800464c, r7 at 0x68004650, r8 at 0x68004654, r9 at 0x68004658, r10 at 0x6800465c, r11 at 0x68004660, lr at 0x68004664 (gdb) print len $1 =3D (gdb) print sample $2 =3D 26624 (gdb) s cortex_m3 interrupt mask on 176 for (i =3D 0; i < num; i++) { cortex_m3 interrupt mask off (gdb) print len $3 =3D 2 (gdb) print sample $4 =3D 26624 (gdb) s cortex_m3 interrupt mask on 177 chan =3D &test_channels[i]; cortex_m3 interrupt mask off (gdb) s cortex_m3 interrupt mask on 182 res =3D cyg_io_read(chan->handle, &sample, &len); cortex_m3 interrupt mask off (gdb) s cortex_m3 interrupt mask on 181 cyg_uint32 len =3D sizeof(sample); cortex_m3 interrupt mask off (gdb) print len $5 =3D 0 (gdb) print sample $6 =3D 26624 (gdb) Not sure what I should be looking for here. Can you please suggest how I may proceed to find the problem? Thanks again Jayant On Tue, Apr 19, 2011 at 09:25, Christophe Coutand wrote: > Hi Jayant, > > From this documentation: http://www.st.com/stonline/books/pdf/docs/14220.= pdf, the potentiometer is connected to PC4. > > Looking at the IOs definition in: packages\hal\cortexm\stm32\var\current\= include\var_io.h, you can sample PC4 using ADC1/14. > > #define CYGHWR_HAL_STM32_ADC12_IN14 =A0 =A0 =A0 =A0 =A0 =A0 CYGHWR_HAL_ST= M32_GPIO( C, 4, =A0IN, ANALOG ) > #define CYGHWR_HAL_STM32_ADC1_IN14 =A0 =A0 =A0 =A0 =A0 =A0 =A0CYGHWR_HAL_= STM32_ADC12_IN14 > > The adc2 test does not log any sampling results. It is used to check that= the sampling rate is correct over a period of 10 seconds. The output of yo= ur test does not look good. The \0x09 is a tabulation that your terminal is= not interpreting (which terminal do you use)? But the result is 0 for all = channels, meaning that no samples are read. > > ---------------------------------------- > Samples expected after 10210 milliseconds: 10210 > Samples read (per channel): > /dev/adc00 =A0 =A0 =A0 =A0 =A0\0x09=3D 0 > > Do you have a way to step into the code? I don't clearly see how the test= can complete without reading samples. Line 181 is a loop waiting for sampl= es: > > =A0// Read & count samples > =A0do { > =A0 =A0cyg_uint32 len =3D sizeof(sample); > =A0 =A0res =3D cyg_io_read(chan->handle, &sample, &len); > =A0 =A0if (res =3D=3D ENOERR) > =A0 =A0 =A0 chan->count++; > =A0} while (res =3D=3D ENOERR); > > You can also try the adc1 test which shall read and display the sampled d= ata. I don't own a STM3210e boards therefore can't give it a try. > > Regards, > Christophe > > -----Original Message----- > From: jayant biswas [mailto:biswasj@gmail.com] > Sent: 18. april 2011 16:49 > To: Christophe Coutand > Cc: ecos-discuss@ecos.sourceware.org > Subject: Re: stm3210e eval board adc question > > Dear Christophe! > > Thanks for your support. I have a feeling I am getting closer, but not > quite there yet. So I appreciate your time in helping me out. Now I > have been able to add the adc io, as in the screenshot you sent using > only the cvs code. So I am not mixing anymore ecos-3.0 and the cvs. > But when I run the tests on my stm3210e eval board I do not get the > desired output. The output of adc2 test is shown below. It shows that > no samples have been read. I am also not sure what to make of the > \0x09 stuff before the '=3D' signs. > > My goal is to be able to read the value from the potentiometer on the > board (http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITER= ATURE/DATA_BRIEF/CD00278458.pdf > as shown on page 2/3) and eventually also from the 3 bnc connectors. > First of all, how can I know which input (BNC or Potentiometer) is > connected to which device on which channel? And secondly why when I > try to display values from all channels on both devices I receive > nothing. One of these channels must be connected to the potentiometer > no? The BNC connectors are currently left open. > > Hope I can make this work. > > Regards, > Jayant > > \0x00INFO: > INFO: s> > Opened 32 ADC channels > INFO: > INFO: > > > /dev/adc00 =A0 =A0 =A0 =A0 =A0\0x09=3D 0 > /dev/adc01 =A0 =A0 =A0 =A0 =A0\0x09=3D 0 > /dev/adc02 > =A0 =A0 =A0 =A0 =A0\0x09=3D 0 > /dev/adc03 =A0 =A0 =A0 =A0 =A0\0x09=3D 0 > . > . > . > /dev/adc113 =A0 =A0 =A0 =A0 \0x09=3D 0 > /dev/adc114 =A0 =A0 =A0 =A0 \0x09=3D 0 > /dev/adc115 =A0 =A0 =A0 =A0 \0x09=3D 0 > INFO: > > > ---------------------------------------- > Samples expected after 10210 milliseconds: 10210 > Samples read (per channel): > /dev/adc00 =A0 =A0 =A0 =A0 =A0\0x09=3D 0 > . > . > . > > On Mon, Apr 18, 2011 at 11:47, Christophe Coutand wro= te: >> Hi Jayant, >> >> You are using ecos-3.0 with the additional STM32 ADC package from CVS? I= t is usually not recommended to mix source code as it make it more difficul= t to get support from the mailing list. >> >> It is not enough to copy the directory packages\devs\adc\cortexm\stm32 i= n your repository, you must also include the package entry in the database = (i.e. ecos.db): >> >> package CYGPKG_DEVS_ADC_CORTEXM_STM32 { >> =A0 =A0alias =A0 =A0 =A0 =A0 { "STM32 ADC driver" adc_stm32 } >> =A0 =A0hardware >> =A0 =A0directory =A0 =A0 devs/adc/cortexm/stm32 >> =A0 =A0script =A0 =A0 =A0 =A0adc_stm32.cdl >> =A0 =A0description " >> =A0 =A0This package provides a driver for the ADC interfaces found on the >> =A0 =A0ST STM32 microcontroller family." >> } >> >> To build the STM32 HAL with ADC support from CVS repository, I do: >> $ ecosconfig.exe new stm3210e default >> $ ecosconfig.exe add io_adc >> >> You can configure the ADC from the GUI: >> $ configtool.exe ecos.ecc >> >> Example: >> >> http://dl.dropbox.com/u/21589565/misc/stm32_adc.JPG >> >> Regards, >> Christophe >> >> -----Original Message----- >> From: jayant biswas [mailto:biswasj@gmail.com] >> Sent: 18. april 2011 10:47 >> To: John Dallaway; Christophe Coutand >> Cc: ecos-discuss@ecos.sourceware.org >> Subject: Re: stm3210e eval board adc question >> >> Thank you Christophe and John for your replies. >> >> I did checkout the cvs repository and was able to get the right folder >> i.e. packages\devs\adc\cortexm\stm32 >> >> However, this hasn't solved my problem. I am still getting the same >> output as before when calling cyg_io_lookup and cyg_io_read. >> >> To integrate the new packages from the cvs. I copied =A0the entire >> repository over my ecos-3.0 folder. Then I regenerated the ecos.ecc >> file for stm3210e. I noticed here that the >> CYGPKG_DEVS_ADC_CORTEXM_STM32 checkboxes were grayed out. I then >> recompiled my application with the newly generated libraries. >> >> Please let me know if I am missing some steps. I am sure I am. Is >> there a guide that I can follow that shows how to integrate the ecos >> cvs packages? >> >> Best regards, >> Jayant >> >> On Wed, Apr 13, 2011 at 20:11, John Dallaway wrot= e: >>> Hi Jayant >>> >>> jayant biswas wrote: >>> >>>> I installed ecos as indicated here >>>> http://ecos.sourceware.org/getstart.html . >>> >>> ... so you have the eCos 3.0 release repository. >>> >>> The STM32 ADC driver is not present in eCos 3.0. You will have to >>> checkout the eCos CVS repository in order to gain access to >>> CYGPKG_DEVS_ADC_CORTEXM_STM32. Ref: >>> >>> =A0http://ecos.sourceware.org/anoncvs.html >>> >>> I hope this helps... >>> >>> John Dallaway >>> eCos maintainer >>> http://www.dallaway.org.uk/john >>> >> > -- Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss