Re: [Xenomai-core] analogy - experimental branch

2010-08-24 Thread Stefan Schaal
Hi Alexis,

  amazing progress!! And it works! I just ran my test program on our NI6259 
board and got perfect performance. I quickly tested 5MHz  DIO rate, and it 
appeared to work fine according to the square waves on the oscilloscope. 

  I will go back to developing our DAQ interface, and report back to the 
Xenomai list about performance.

Thanks so much

Best wishes,

-Stefan


On Aug 23, 2010, at 16:09, Alexis Berlemont wrote:

 Hi,
 
 Stefan Schaal wrote:
 Hi Alexis,
 
  as usually, we are more than grateful that you are willing to spend time on 
 this issue. Here are answers to your questions:
 
 1) I tried CR_INVERT -- no success
 2) I tried very slow frequencies like 10Hz in the counter clock (which is 
 nicely visualized on my oscilloscope) -- no success
 3) I tried to send a 0 with cmd_bits -- and interestingly, this ALSO takes 
 my DIO line high (sorry, I thought I had tested this before). This would 
 indicate that we do not access the FIFO at all?
 4) I have my own test program to send alternating 0x and 0x0 values 
 to the devices to generate a square wave on the oscilloscope. I cannot see 
 anything of the square wave executed.
 
 
 At last, it comes!!!
 
 Thanks to your test program and your help, I think I have fixed this
 bug. Could you clone my git repository (branch analogy), and give it a
 try with your own test program.
 
 There was a bug in the mite configuration which explained why the
 wrong data were sent to the DIO subdevice. That was also the reason
 why no interrupt came from the mite.
 
 Best wishes,
 
 -Stefan
 
 
 On Jul 19, 2010, at 15:01, Alexis Berlemont wrote:
 
 Hi,
 
 Sorry for answering late. 
 
 Stefan Schaal wrote:
 Hi Alexis,
 
 I managed to port some of the Comedi examples to Analogy. In particular, I 
 could configure one of my counter subdevices to become a high frequency 
 clock, following the gpct_pulse_generator.c example. I routed the output 
 of the clock to my PFI0 pin, and could visualize the signal on an 
 oscilloscope. Thus, I know have the clock I need to trigger CMD-based DIO, 
 as you suggested. (I will post some sample code of this in the near future 
 after all is cleaned up).
 
  Next, I went back to cmd_bits.c and try to make it work on my NI6259 
 board. For scan_begin_src=TRIG_EXT   I need to choose scan_begin_arg = 28 
 (which is kCDO_Update_Source_SelectG0_Out in the NI documentation, and 
 NI_CDIO_SCAN_BEGIN_SRC_G0_OUT in the comedi.h file).
 
  When running cmd_bits.c in this way and monitoring the DO channels on an 
 oscilloscope, the DO switches to HIGH when the acquisition is triggered 
 (i.e., the value of the first element in the FIFO), but the FIFO is not 
 processed any further, i.e., not emptied. If I DO NOT run the 
 counter-clock above, the DO does not even switch to HIGH. I also checked 
 whether 28 is the right value for scan_begin_arg by trying a wide range of 
 values, but only for scan_begin_arg = 28 I get the DO bit switched to HIGH 
 at the beginning of the acquisition.
 
 In Comedi, the cmd.flags is set to CMDF_WRITE for such externally 
 triggered acquisitions, which I tried, but it did not help.
 
 Thus, it appears that I still have a problem in processing the FIFO, 
 despite it appears that all other things are now correctly connected 
 (Comedi has an example do_waveform.c, which is pretty much what I try to 
 use for testing in my own code).
 
 Would you have any thoughts on what might go wrong? It looks like we are 
 just a tiny bit away from succeeding with cmd_bits.c on my board.
 
 
 I had time to have a look at your problem. Unfortunately, I do not
 have any solution. I just have some questions you may find stupid:
 
 - Did you try to invert the sample clock polarity by setting the flag
 CR_INVERT in the command field scan_begin_arg?
 - Which frequencies did you generate with the counter subdevice? Even
 the lowest one did nothing (Something like 10Hz)?
 - Did you try to send 0 with cmd_bits ? Just to check that the DO stay
 to LOW, which would mean that the values (or at least the first one)
 are properly loaded into the device.
 - So far, cmd_bits always sends the same value (the one you passed as
 argument); we should modify it so that the complement value is
 written every two samples. That would allow us to physically check
 how many samples are played by the DO. 
 
 Best wishes,
 
 -Stefan
 
 
 
 
 
 On Jul 14, 2010, at 17:46, Stefan Schaal wrote:
 
 Hi Alexis,
 
 in the Comedi examples 
 (http://www.comedi.org/download/comedilib-0.8.1.tar.gz, the do_waveform.c 
 example), they suggest to use a general purpose counter as clocking input 
 to a cmd-based DIO acquisition. This seems to be the signal 
 kCDO_Update_Source_SelectG0_Out= 28 from the enum you found 
 in the NI documentation.
 
 For this purpose, the counter needs to be configured and triggered. Does 
 Analogy already have the functionality to do such operations? The Comedi 
 libraries have an example for this, too, in 

Re: [Xenomai-core] [git pull v2] small RTDM fixes and assorted patches

2010-08-24 Thread Jan Kiszka
Jan Kiszka wrote:
 The following changes since commit 7e2735614ebe515d57abeaa3ff6df375a7c4149f:
 
   sched: avoid infinite reschedule loops (2010-08-03 00:11:21 +0200)
 
 are available in the git repository at:
   git://git.xenomai.org/xenomai-jki.git for-upstream
 
 Jan Kiszka (8):
   rt_print: Properly return printed length
   RTDM: Protect xnshadow_ppd_get via nklock
   RTDM: Plug race between proc_read_dev_info and device deregistration
   RTDM: Properly clean up on xnvfile setup errors
   RTDM: Extend device name space in open_fildes proc output
   Fix symbolic status ouput of root threads
   Create watchdog as non-blockable timer
   native: Improve documentation of rt_task_join and rt_task_delete
 
 Stefan Kisdaroczi (1):
   RTDM device profiles: Document open_rt, socket_rt and close_rt 
 deprecation
 
  include/rtdm/rtcan.h |4 ++--
  include/rtdm/rtserial.h  |4 ++--
  include/rtdm/rttesting.h |4 ++--
  ksrc/nucleus/sched.c |3 ++-
  ksrc/nucleus/thread.c|4 
  ksrc/skins/native/task.c |   15 +--
  ksrc/skins/rtdm/core.c   |2 ++
  ksrc/skins/rtdm/proc.c   |   45 +++--
  src/rtdk/rt_print.c  |1 +
  9 files changed, 63 insertions(+), 19 deletions(-)
 
 Updated to include Stefan's long-pending RTDM profile updates.

That queue just gained another patch that should be included:

  nucleus: Fix lock imbalance in registry_proc_callback

Fortunately head-only, a xnvfile regression.

Jan

-- 
Siemens AG, Corporate Technology, CT T DE IT 1
Corporate Competence Center Embedded Linux

___
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core