On 09/11/15 16:38, Hartley Sweeten wrote:
On Friday, November 06, 2015 10:30 AM, Ian Abbott wrote:
On 05/11/15 19:03, Hartley Sweeten wrote:
On Thursday, November 05, 2015 5:43 AM, Ian Abbott wrote:
On 04/11/15 16:55, H Hartley Sweeten wrote:
The analog outputs can use an external reference to create the D/A output
range. Add an entry to the comedi_lrange table for it and modify the
(*insn_write) to support it.

Signed-off-by: H Hartley Sweeten <hswee...@visionengravers.com>
Cc: Ian Abbott <abbo...@mev.co.uk>
Cc: Greg Kroah-Hartman <gre...@linuxfoundation.org>
---
    drivers/staging/comedi/drivers/adv_pci1710.c | 13 ++++++++-----
    1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/drivers/staging/comedi/drivers/adv_pci1710.c 
b/drivers/staging/comedi/drivers/adv_pci1710.c
index 86ed288..339130b 100644
--- a/drivers/staging/comedi/drivers/adv_pci1710.c
+++ b/drivers/staging/comedi/drivers/adv_pci1710.c
@@ -65,6 +65,8 @@
    #define PCI171X_CLRFIFO_REG 0x09    /* W:   clear FIFO */
    #define PCI171X_DA_REG(x)   (0x0a + ((x) * 2)) /* W:   D/A register */
    #define PCI171X_DAREF_REG   0x0e    /* W:   D/A reference control */
+#define PCI171X_DAREF(c, r)    (((r) & 0x3) << ((c) * 2))
+#define PCI171X_DAREF_MASK(c)  PCI171X_DAREF((c), 0x3)
    #define PCI171X_DI_REG              0x10    /* R:   digital inputs */
    #define PCI171X_DO_REG              0x10    /* W:   digital outputs */
    #define PCI171X_TIMER_BASE  0x18    /* R/W: 8254 timer */
@@ -111,9 +113,10 @@ static const struct comedi_lrange pci1711_ai_range = {
    };

    static const struct comedi_lrange pci171x_ao_range = {
-       2, {
-               UNI_RANGE(5),
-               UNI_RANGE(10)
+       3, {
+               UNI_RANGE(5),           /* internal -5V ref */
+               UNI_RANGE(10),          /* internal -10V ref */
+               RANGE_ext(0, 1)         /* external Vref (+/-10V max) */

Minor niggle:

The comment for the external Vref is slightly confusing.  The manual I
have says:

By inputting an external reference voltage: -xV , where |x| <= 10,
you will get a output voltage range: 0 to xV.

So the external reference voltage is never positive.  How about this?:
   >
        /* external -xV ref, |x| <= 10 */

Again it appears we have different manuals.

Indeed!

Ian,

The link you referenced for the manual in another email also has this manual:
http://downloadt.advantech.com/ProductFile/Downloadfile1/1-11P65IR/PCI-1710U.pdf
It does not include the register map but has this information about the analog
outputs:

Page 26:
The maximum reference input voltage is +/-10V and maximum output scaling
Is +/-10V.

Just to add to the possible confusion, figure 3.3 on page 27 shows all the reference voltages (including the internal ones) as positive, even though the preceding paragraph says the internal references are negative.


Page 32:
Output Range    Using External Reference        0 ~ +xV @ -xV (-10 <= x <= 10)

Based on that, are you ok with the RANGE_ext(0,1) option?

I'm past caring. We won't be any more confusing than the manuals! Maybe we shouldn't bother mentioning the signs of the reference voltages at all.

--
-=( Ian Abbott @ MEV Ltd.    E-mail: <abbo...@mev.co.uk> )=-
-=(                          Web: http://www.mev.co.uk/  )=-
_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to