02-14-2017 08:24 AM
Hello All,
I'm working on a WDM Driver for 6612 and I set the Counter armed but I cannot get Interrupts from the device.
We have written a driver for 6602 that works very well and I took from it the values for Load_A and Load_B registers for a 2 Hz Interrupt
I have tried also with other values but still it does not work.
Here is the sequence log from the DbgView
00000000 0.00000000 KSync6612__WDM: sl - Hello from DriverEntry
00000001 0.02739051 sl - We are in KSync6602__WDMDev::OnStartDevice
00000002 0.02739307 sl - WE are in KSync6602__WDMDev::GetBusAndSlot()
00000003 0.02740975 KSync6612__WDM: sl - BusNumber = 2
00000004 0.02741103 KSync6612__WDM: sl - SlotNumber = 0
00000005 0.02741200 KSync6612__WDM: sl - FuncNumber = 0
00000006 0.02744279 KSync6612__WDM: sl - InitializeOneBarMemoryRanges() OK.
00000007 0.02746332 KSync6612__WDM: sl - m_Irq.BusVector() = -1
00000008 0.02746556 KSync6612__WDM: sl - m_Irq.Affinity() = 15
00000009 0.02746684 KSync6612__WDM: sl - m_Irq.BusLevel() = -1
00000010 0.02746812 KSync6612__WDM: sl - m_Irq.BusType() = -1
00000011 0.02746941 KSync6612__WDM: sl - m_Irq.Irql() = 5
00000012 0.02747037 KSync6612__WDM: sl - m_Irq.IsValid() = 1
00000013 0.02747165 KSync6612__WDM: sl - m_Irq.Mode() = 0
00000014 0.02747294 KSync6612__WDM: sl - m_Irq.Vector() = 81
00000030 0.02750886 KSync6612__WDM: sl - THE CHIP SIGNATURE = 0xc0107ad0
00000031 0.02751239 KSync6612__WDM: sl - THE REVISION DATA = 0x8050501
00000032 0.02751431 KSync6612__WDM: sl - SELF-TEST ScratchPadRegister write value = 0x202
00000033 0.02751784 KSync6612__WDM: sl - SELF-TEST ScratchPadRegister read value = 0x202
00000034 0.02751976 KSync6612__WDM: sl - SELF-TEST ScratchPadRegister write value = 4096
00000035 0.02752329 KSync6612__WDM: sl - SELF-TEST ScratchPadRegister read value = 4096
00000037 0.02752874 KSync6612__WDM: sl - Reset and disarm the counter => G0_CommandRegister written with 0x4010
00000039 0.02753388 KSync6612__WDM: sl - KCard_6612::SetInterruptMaskRegister with 0x80000a00
00000040 0.02753740 KSync6612__WDM: sl - THE INTERRUPT_MASK_REG = 0x80000a00
00000041 0.02753901 KSync6612__WDM: sl - KCard_6612::SetGlobalInterruptEnableRegister with value = 0x4
00000042 0.02754093 KSync6612__WDM: sl - KCard_6612::SetG0_Interrupt1Register with value = 0x4800
00000043 0.02754414 KSync6612__WDM: sl - THE INTERRUPT_STATUS_REG = 0x0
00000044 0.02754735 KSync6612__WDM: sl - THE G0_STATUS_REG = 0x0
00000045 0.02754895 KSync6612__WDM: sl - START TEST FOR ActivateCounterInterrupt
00000046 0.02755023 KSync6612__WDM: --------------------------------------------
00000047 0.02755280 KSync6612__WDM: sl - setGi_Reload_Source_Switching => G0_ModeRegister set value = 0x8000 // use alternate registers
00000048 0.02755633 KSync6612__WDM: sl - setGi_Loading_On_Gate => G0_ModeRegister set value = 0x8000 // no counter reload on gate
00000049 0.02755825 KSync6612__WDM: sl - setGi_ForceSourceEqualToTimebase => G0_ModeRegister set value = 0x8000 // use TB3 (100MHz)
00000050 0.02756018 KSync6612__WDM: sl - setGi_Loading_On_TC => G0_ModeRegister set value = 0x9000 // reload on TC
00000051 0.02756210 KSync6612__WDM: sl - setGi_Output_Mode => G0_ModeRegister set value = 0x9100 // counter TC on Out
00000052 0.02756370 KSync6612__WDM: sl - setGi_Load_Source_Select => G0_ModeRegister set value = 0x9180 // Load from B
00000053 0.02756563 KSync6612__WDM: sl - setGi_Counting_Once => G0_ModeRegister set value = 0x9180 // No hardware disarm
00000054 0.02756755 KSync6612__WDM: sl - setGi_Stop_Mode => G0_ModeRegister set value = 0x91a0 // stop on Gate or first TC
00000055 0.02756916 KSync6612__WDM: sl - setGi_Gating_Mode => G0_ModeRegister set value = 0x91a0 // Gating mode disabled
00000056 0.02757108 KSync6612__WDM: sl - setGi_Up_Down => G0_Mode2Register set value = 0x0 // count down
00000057 0.02757269 KSync6612__WDM: sl - setGi_Bank_Switch_Enable => G0_Mode2Register set value = 0x1000 // set switch
00000058 0.02757461 KSync6612__WDM: sl - setGi_Bank_Switch_Mode => G0_Mode2Register set value = 0x1400 // implicit
00000059 0.02757653 KSync6612__WDM: sl - setGi_Prescale => G0_CountingModeRegister set value = 0x0 // no prescale
00000060 0.02757846 KSync6612__WDM: sl - setGi_HW_Arm_Enable => G0_CountingModeRegister set value = 0x0 // no HW_Arm_Enable
00000061 0.02758006 KSync6612__WDM: sl - setGi_Index_Mode => G0_CountingModeRegister set value = 0x10 // OK for other mode than quadrature
00000062 0.02758199 KSync6612__WDM: sl - setGi_Counting_Mode => G0_CountingModeRegister set value = 0x10 // Default
00000063 0.02758391 KSync6612__WDM: sl - setGi_SampleClockMode => G0_SampleClockRegister set value = 0x0 // Disabled
00000064 0.02758551 KSync6612__WDM: sl - setGi_SampleClockMode => G0_AuxCtrRegister set value = 0x0 // no AuxCntr
00000065 0.02758712 KSync6612__WDM: sl - G0_InputSelectRegister set value = 0x3c
00000066 0.02758840 KSync6612__WDM: sl - G0_Load_A_Register value = 29999999
00000067 0.02759000 KSync6612__WDM: sl - G0_Load_B_Register value = 9999999
00000068 0.02759161 KSync6612__WDM: sl - setGi_Load => G0_CommandRegister set value = 4
00000069 0.02759321 KSync6612__WDM: sl - m_x_InterruptControl written with 0xff
00000070 0.02759706 KSync6612__WDM: sl - THE G0_STATUS_REG = 0x0
00000071 0.02760027 KSync6612__WDM: sl - m_x_InterruptStatus read value = 0x0
00000072 0.02760187 KSync6612__WDM: sl - Arm the counter => G0_CommandRegister set value = 0x1
00000073 0.02760380 KSync6612__WDM: sl - CHECKING COUNTER ARMED BIT. BEFORE TIMESTAMP = 1585387274
00000074 0.02760797 KSync6612__WDM: sl - CHECKING COUNTER ARMED BIT. AFTER TIMESTAMP = 1585387278
00000075 0.02761149 KSync6612__WDM: sl - THE G0_STATUS_REG = 0x100
00000076 0.02761342 KSync6612__WDM: sl - THE COUNTER IS ARMED
00000077 0.02768911 KSync6612__WDM: sl - m_pDev->Init succeeded
Thanks in advance