[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
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:<ADC test> 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=0x6800001c) at /home/jayant/ecos/adc/ecos_install/include/cyg/kernel/sched.inl:99 99 if( __lock == 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=<value optimized out>) at adc2.c:181 181 cyg_uint32 len = sizeof(sample); (gdb) info frame Stack level 0, frame at 0x68004668: pc = 0x800027e in adc_thread (adc2.c:181); saved pc 0x8002b4e called by frame at 0x68004670 source language c. Arglist at 0x68004628, args: data=<value optimized out> 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 = <value optimized out> (gdb) print sample $2 = 26624 (gdb) s cortex_m3 interrupt mask on 176 for (i = 0; i < num; i++) { cortex_m3 interrupt mask off (gdb) print len $3 = 2 (gdb) print sample $4 = 26624 (gdb) s cortex_m3 interrupt mask on 177 chan = &test_channels[i]; cortex_m3 interrupt mask off (gdb) s cortex_m3 interrupt mask on 182 res = cyg_io_read(chan->handle, &sample, &len); cortex_m3 interrupt mask off (gdb) s cortex_m3 interrupt mask on 181 cyg_uint32 len = sizeof(sample); cortex_m3 interrupt mask off (gdb) print len $5 = 0 (gdb) print sample $6 = 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 <ccoutand@xxxxxxxx> 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 CYGHWR_HAL_STM32_GPIO( C, 4, IN, ANALOG ) > #define CYGHWR_HAL_STM32_ADC1_IN14 CYGHWR_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 your 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 \0x09= 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 samples: > > // Read & count samples > do { > cyg_uint32 len = sizeof(sample); > res = cyg_io_read(chan->handle, &sample, &len); > if (res == ENOERR) > chan->count++; > } while (res == ENOERR); > > You can also try the adc1 test which shall read and display the sampled data. I don't own a STM3210e boards therefore can't give it a try. > > Regards, > Christophe > > -----Original Message----- > From: jayant biswas [mailto:biswasj@xxxxxxxxx] > Sent: 18. april 2011 16:49 > To: Christophe Coutand > Cc: ecos-discuss@xxxxxxxxxxxxxxxxxxx > 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 '=' 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_LITERATURE/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:<ADC performance test> > INFO:<Opening available ADC channel > s> > Opened 32 ADC channels > INFO:<Preparing ADC channels for test> > INFO:<Starting measurement> > > > /dev/adc00 \0x09= 0 > /dev/adc01 \0x09= 0 > /dev/adc02 > \0x09= 0 > /dev/adc03 \0x09= 0 > . > . > . > /dev/adc113 \0x09= 0 > /dev/adc114 \0x09= 0 > /dev/adc115 \0x09= 0 > INFO:<Finished measurement> > > > ---------------------------------------- > Samples expected after 10210 milliseconds: 10210 > Samples read (per channel): > /dev/adc00 \0x09= 0 > . > . > . > > On Mon, Apr 18, 2011 at 11:47, Christophe Coutand <ccoutand@xxxxxxxx> wrote: >> Hi Jayant, >> >> You are using ecos-3.0 with the additional STM32 ADC package from CVS? It is usually not recommended to mix source code as it make it more difficult to get support from the mailing list. >> >> It is not enough to copy the directory packages\devs\adc\cortexm\stm32 in your repository, you must also include the package entry in the database (i.e. ecos.db): >> >> package CYGPKG_DEVS_ADC_CORTEXM_STM32 { >> alias { "STM32 ADC driver" adc_stm32 } >> hardware >> directory devs/adc/cortexm/stm32 >> script adc_stm32.cdl >> description " >> This package provides a driver for the ADC interfaces found on the >> ST 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@xxxxxxxxx] >> Sent: 18. april 2011 10:47 >> To: John Dallaway; Christophe Coutand >> Cc: ecos-discuss@xxxxxxxxxxxxxxxxxxx >> 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 the 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 <john@xxxxxxxxxxxxxxx> wrote: >>> 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: >>> >>> http://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