This is the mail archive of the ecos-discuss@sourceware.org mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: stm3210e eval board adc question


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@stmi.com> 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@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 '=' 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@stmi.com> 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@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 ?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@dallaway.org.uk> 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]