Re: NI-6111 and Comedi

On Thu, Jul 18, 2002 at 09:55:36AM -0700, David Schleef wrote:

> Find out what is different, and find the minimal change that
> will fix it.  It will probably be one or two register writes,
> nothing more.

Thank you for your advice. Below is a working sequence of register
accesses as well as what comedi does. Maybe somebody happens to see
the minimal change needed to fix it?

This sequence works: ------------

Joint_Reset          0x48 (wind) 0x0011 AI_Reset, AI_Configuration_Start=1
Interrupt_A_Ack      0x04 (drct) 0x3f80 (AI_SC_TC_Error_Confirm,AI_SC_TC_Interrupt_Ack,AI_START1_Interrupt_Ack,AI_START2_Interrupt_Ack,AI_START_Interrupt_Ack,AI_STOP_Int
errupt_Ack,AI_Error_Interrupt_Ack)=1
AI_Mode_1            0x0c (wind) 0x000c Reserved_One=1,AI_Start_Stop=1
Joint_Reset          0x48 (wind) 0x0100 AI_Configuration_Start=0,AI_Configuration_End=1

Write_Strobe_0       0x52 (wind) 0x0001 Clear configuration memory
Write_Strobe_1       0x53 (wind) 0x0001 Clear ADC FIFO

ConfigFifoHigh       0x12 (drct) 0x1000 Channel=0,ChannelType(Differential)
ConfigFifoLow        0x10 (drct) 0x8001 LastChannel=1,Gain(Gain001_0)

Clock_and_FOUT       0x38 (wind) 0x1b00 Slow_Internal_Timebase=1,Slow_Internal_Time_Divide_By_2=1,Clock_To_Board=1,Clock_To_Board_Divide_By_2=1

Write_Strobe_1       0x53 (wind) 0x0001 Clear ADC FIFO

Joint_Reset          0x48 (wind) 0x0010 AI_Configuration_Start=1
AI_Personal          0x4d (wind) 0xa020 AI_LOCALMUX_CLK_Pulse_Width(About_1_Clock_Period), AI_SHIFTIN_Pulse_Width(About_2_Clock_Periods),AI_SOC_Polarity(Falling_Edge)
AI_Output_Control    0x3c (wind) 0x032f AI_CONVERT_Output_Select(Active_High),AI_SC_TC_Output_Select(Active_High),AI_SCAN_IN_PROG_Output_Select(Active_High),AI_LOCALMUX_
CLK_Output_Select(Active_Low)
Joint_Reset          0x48 (wind) 0x0100 AI_Configuration_Start=0, AI_Configuration_End=1

AI_Command_1         0x08 (wind) 0x0001 AI_CONVERT_Pulse=1
AI_Mode_1            0x0c (wind) 0x000d AI_Trigger_Once=1
AI_Trigger_Select    0x3f (wind) 0x0060 AI_START1_Select(Pulse), AI_START1_Polarity(Active_High_Or_Rising_Edge),AI_START1_Edge=1,AI_START1_Sync=1

Joint_Reset          0x48 (wind) 0x0100 AI_Configuration_Start=0, AI_Configuration_End=1

Joint_Reset          0x48 (wind) 0x0010 AI_Configuration_Start=1
AI_START_STOP_Select 0x3e (wind) 0x0060 AI_START_Select(SI_TC),AI_START_Edge=1,AI_START_Sync=1,AI_START_Polarity(Active_High_Or_Rising_Edge)
AI_SI_Load_A         0x0e (wind) 0x0000
                     0x0f (wind) 0x0001
AI_Command_1         0x08 (wind) 0x0200 AI_SI_Load
AI_SI_Load_A         0x0e (wind) 0x0000
                     0x0f (wind) 0x0001
Joint_Reset          0x48 (wind) 0x0100 AI_Configuration_Start=0, AI_Configuration_End=1

Joint_Reset          0x48 (wind) 0x0010 AI_Configuration_Start=1
AI_START_STOP_Select 0x3e (wind) 0x09e0 AI_STOP_Select(IN), AI_STOP_Polarity(Active_High_Or_Rising_Edge)
Joint_Reset          0x48 (wind) 0x0100 AI_Configuration_Start=0, AI_Configuration_End=1

Joint_Reset          0x48 (wind) 0x0010 AI_Configuration_Start=1
AI_SI2_Load_A        0x17 (wind) 0x0001 
AI_SI2_Load_B        0x19 (wind) 0x0001
AI_Mode_2            0x0d (wind) 0x0100 AI_SI2_Reload_Mode(Alternate_First_Period_Every_STOP)
AI_Command_1         0x08 (wind) 0x0800 AI_SI2_Load=1
AI_Mode_2            0x0d (wind) 0x0300 AI_SI2_Initial_Load_Source(Load_B)
Joint_Reset          0x48 (wind) 0x0100 AI_Configuration_Start=0, AI_Configuration_End=1

Write_Strobe_1       0x53 (wind) 0x0001 Clear ADC FIFO
AI_Command_1         0x08 (wind) 0x1540 AI_SC_Arm=1,AI_SI_Arm=1,AI_SI2_Arm=1,AI_DIV_Arm=1
AI_Command_2         0x08 (drct) 0x0001 AI_START1_Pulse=1

read:
AI_Status_1          0x04 (drct) 0x00a2

And this is what comedi does instead: ----------

DIO_Control          0x0b (wind) 0x0000 
Joint_Reset          0x48 (wind) 0x0004 
Interrupt_A_Enable   0x49 (wind) 0x0000 
Interrupt_A_Enable   0x49 (wind) 0x0000 
Interrupt_A_Ack      0x02 (wind) 0xc060 
Analog_Trigger_Etc   0x3d (wind) 0x4000 
G0_Mode              0x1a (wind) 0x0000 
G0_Input_Select      0x24 (wind) 0x0000 
GO_Autoincrement     0x44 (wind) 0x0000 
Joint_Reset          0x48 (wind) 0x0008 
Interrupt_B_Enable   0x4b (wind) 0x0000 
Interrupt_B_Enable   0x4b (wind) 0x0000 
Interrupt_B_Ack      0x03 (wind) 0xc006 
Analog_Trigger_Etc   0x3d (wind) 0xc000 
G1_Mode              0x1b (wind) 0x0000 
G1_Input_Select      0x25 (wind) 0x0000 
G1_Autoincrement     0x45 (wind) 0x0000 
IO_Bidirection_Pin   0x39 (wind) 0x0000 
Interrupt_A_Enable   0x49 (wind) 0x0000 
Joint_Reset          0x48 (wind) 0x0001 
Write_Strobe_1       0x53 (wind) 0x0001 
Joint_Reset          0x48 (wind) 0x0010 
AI_Command_1         0x08 (wind) 0x0000 
AI_Mode_1            0x0c (wind) 0x000d 
AI_Mode_2            0x0d (wind) 0x0000 
AI_Mode_3            0x57 (wind) 0x0000 
AI_Personal          0x4d (wind) 0xa420 
AI_Mode_1            0x0c (wind) 0x032e 
AI_START_STOP_Select 0x3e (wind) 0x29e0 
Interrupt_A_Ack      0x02 (wind) 0x3f80 
Joint_Reset          0x48 (wind) 0x0100 
Clock_and_FOUT       0x38 (wind) 0x1ba0 
Joint_Reset          0x48 (wind) 0x0020 
AO_Command_1         0x09 (wind) 0x2000 
Interrupt_B_Enable   0x4b (wind) 0x0000 
AO_Personal          0x4e (wind) 0x0010 
Interrupt_B_Ack      0x03 (wind) 0x3f98 
AO_Personal          0x4e (wind) 0x1430 
AO_Output_Control    0x56 (wind) 0x0000 
AO_START_Select      0x42 (wind) 0x0000 
AO_Command_1         0x09 (wind) 0x0000 
AI_SI_Load_B         0x11 (wind) 0x00ff 
                     0x09 (drct) 0x0021 
 
Write_Strobe_1       0x53 (wind) 0x0001 
Write_Strobe_0       0x52 (wind) 0x0001 
ConfigFifoHigh       0x12 (drct) 0x1000 
ConfigFifoLow        0x10 (drct) 0x800a 
AI_Command_1         0x08 (wind) 0x0001 
ni_E: timeout 1 
AI_Command_1         0x08 (wind) 0x0001 
ni_E: timeout 2 

Received on 2002-07-23Z13:04:55