Re: stm3210e eval board adc question

[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




[Index of Archives]     [Linux Embedded]     [U-Boot V2]     [Linux Kernel]     [Linux MIPS]     [Linux ARM]     [Linux for the Blind]     [Yosemite]     [ISDN Cause Codes]     [eCos Home]

  Powered by Linux