📄 cb_pcidas64.c
字号:
// analog input ranges for 4020 boardstatic comedi_lrange ai_ranges_4020 ={ 2, { BIP_RANGE(5), BIP_RANGE(1), }};// analog output rangesstatic comedi_lrange ao_ranges_64xx ={ 4, { BIP_RANGE(5), BIP_RANGE(10), UNI_RANGE(5), UNI_RANGE(10), }};static int ao_range_code_64xx[] ={ 0x0, 0x1, 0x2, 0x3,};static comedi_lrange ao_ranges_60xx ={ 1, { BIP_RANGE(10), }};static int ao_range_code_60xx[] ={ 0x0,};static comedi_lrange ao_ranges_6030 ={ 2, { BIP_RANGE(10), UNI_RANGE(10), }};static int ao_range_code_6030[] ={ 0x0, 0x2,};static comedi_lrange ao_ranges_4020 ={ 2, { BIP_RANGE(5), BIP_RANGE(10), }};static int ao_range_code_4020[] ={ 0x1, 0x0,};enum register_layout{ LAYOUT_60XX, LAYOUT_64XX, LAYOUT_4020,};typedef struct hw_fifo_info_struct{ unsigned int num_segments; unsigned int max_segment_length; unsigned int sample_packing_ratio; uint16_t fifo_size_reg_mask;} hw_fifo_info_t;typedef struct pcidas64_board_struct{ char *name; int device_id; // pci device id int ai_se_chans; // number of ai inputs in single-ended mode int ai_bits; // analog input resolution int ai_speed; // fastest conversion period in ns comedi_lrange *ai_range_table; int ao_nchan; // number of analog out channels int ao_scan_speed; // analog output speed (for a scan, not conversion) comedi_lrange *ao_range_table; int *ao_range_code; const hw_fifo_info_t *const ai_fifo; enum register_layout layout; // different board families have slightly different registers unsigned has_8255 : 1;} pcidas64_board;static const hw_fifo_info_t ai_fifo_4020 ={ num_segments: 2, max_segment_length: 0x8000, sample_packing_ratio: 2, fifo_size_reg_mask: 0x7f,};static const hw_fifo_info_t ai_fifo_64xx ={ num_segments: 4, max_segment_length: 0x800, sample_packing_ratio: 1, fifo_size_reg_mask: 0x3f,};static const hw_fifo_info_t ai_fifo_60xx ={ num_segments: 4, max_segment_length: 0x800, sample_packing_ratio: 1, fifo_size_reg_mask: 0x7f,};static const pcidas64_board pcidas64_boards[] ={ { name: "pci-das6402/16", device_id: 0x1d, ai_se_chans: 64, ai_bits: 16, ai_speed: 5000, ao_nchan: 2, ao_scan_speed: 10000, layout: LAYOUT_64XX, ai_range_table: &ai_ranges_64xx, ao_range_table: &ao_ranges_64xx, ao_range_code: ao_range_code_64xx, ai_fifo: &ai_fifo_64xx, has_8255 : 1, }, { name: "pci-das6402/12", // XXX check device_id: 0x1e, ai_se_chans: 64, ai_bits: 12, ai_speed: 5000, ao_nchan: 2, ao_scan_speed: 10000, layout: LAYOUT_64XX, ai_range_table: &ai_ranges_64xx, ao_range_table: &ao_ranges_64xx, ao_range_code: ao_range_code_64xx, ai_fifo: &ai_fifo_64xx, has_8255 : 1, }, { name: "pci-das64/m1/16", device_id: 0x35, ai_se_chans: 64, ai_bits: 16, ai_speed: 1000, ao_nchan: 2, ao_scan_speed: 10000, layout: LAYOUT_64XX, ai_range_table: &ai_ranges_64xx, ao_range_table: &ao_ranges_64xx, ao_range_code: ao_range_code_64xx, ai_fifo: &ai_fifo_64xx, has_8255 : 1, }, { name: "pci-das64/m2/16", device_id: 0x36, ai_se_chans: 64, ai_bits: 16, ai_speed: 500, ao_nchan: 2, ao_scan_speed: 10000, layout: LAYOUT_64XX, ai_range_table: &ai_ranges_64xx, ao_range_table: &ao_ranges_64xx, ao_range_code: ao_range_code_64xx, ai_fifo: &ai_fifo_64xx, has_8255 : 1, }, { name: "pci-das64/m3/16", device_id: 0x37, ai_se_chans: 64, ai_bits: 16, ai_speed: 333, ao_nchan: 2, ao_scan_speed: 10000, layout: LAYOUT_64XX, ai_range_table: &ai_ranges_64xx, ao_range_table: &ao_ranges_64xx, ao_range_code: ao_range_code_64xx, ai_fifo: &ai_fifo_64xx, has_8255 : 1, }, { name: "pci-das6023", device_id: 0x5d, ai_se_chans: 16, ai_bits: 12, ai_speed: 5000, ao_nchan: 0, ao_scan_speed: 100000, layout: LAYOUT_60XX, ai_range_table: &ai_ranges_60xx, ao_range_table: &ao_ranges_60xx, ao_range_code: ao_range_code_60xx, ai_fifo: &ai_fifo_60xx, has_8255 : 1, }, { name: "pci-das6025", device_id: 0x5e, ai_se_chans: 16, ai_bits: 12, ai_speed: 5000, ao_nchan: 2, ao_scan_speed: 100000, layout: LAYOUT_60XX, ai_range_table: &ai_ranges_60xx, ao_range_table: &ao_ranges_60xx, ao_range_code: ao_range_code_60xx, ai_fifo: &ai_fifo_60xx, has_8255 : 1, }, { name: "pci-das6030", device_id: 0x5f, ai_se_chans: 16, ai_bits: 16, ai_speed: 10000, ao_nchan: 2, ao_scan_speed: 10000, layout: LAYOUT_60XX, ai_range_table: &ai_ranges_6030, ao_range_table: &ao_ranges_6030, ao_range_code: ao_range_code_6030, ai_fifo: &ai_fifo_60xx, has_8255 : 0, }, { name: "pci-das6031", device_id: 0x60, ai_se_chans: 64, ai_bits: 16, ai_speed: 10000, ao_nchan: 2, ao_scan_speed: 10000, layout: LAYOUT_60XX, ai_range_table: &ai_ranges_6030, ao_range_table: &ao_ranges_6030, ao_range_code: ao_range_code_6030, ai_fifo: &ai_fifo_60xx, has_8255 : 0, }, { name: "pci-das6032", device_id: 0x61, ai_se_chans: 16, ai_bits: 16, ai_speed: 10000, ao_nchan: 0, layout: LAYOUT_60XX, ai_range_table: &ai_ranges_6030, ai_fifo: &ai_fifo_60xx, has_8255 : 0, }, { name: "pci-das6033", device_id: 0x62, ai_se_chans: 64, ai_bits: 16, ai_speed: 10000, ao_nchan: 0, layout: LAYOUT_60XX, ai_range_table: &ai_ranges_6030, ai_fifo: &ai_fifo_60xx, has_8255 : 0, }, { name: "pci-das6034", device_id: 0x63, ai_se_chans: 16, ai_bits: 16, ai_speed: 5000, ao_nchan: 0, ao_scan_speed: 0, layout: LAYOUT_60XX, ai_range_table: &ai_ranges_60xx, ai_fifo: &ai_fifo_60xx, has_8255 : 1, }, { name: "pci-das6035", device_id: 0x64, ai_se_chans: 16, ai_bits: 16, ai_speed: 5000, ao_nchan: 2, ao_scan_speed: 100000, layout: LAYOUT_60XX, ai_range_table: &ai_ranges_60xx, ao_range_table: &ao_ranges_60xx, ao_range_code: ao_range_code_60xx, ai_fifo: &ai_fifo_60xx, has_8255 : 1, }, { name: "pci-das6036", device_id: 0x6f, ai_se_chans: 16, ai_bits: 16, ai_speed: 5000, ao_nchan: 2, ao_scan_speed: 100000, layout: LAYOUT_60XX, ai_range_table: &ai_ranges_60xx, ao_range_table: &ao_ranges_60xx, ao_range_code: ao_range_code_60xx, ai_fifo: &ai_fifo_60xx, has_8255 : 0, }, { name: "pci-das6040", device_id: 0x65, ai_se_chans: 16, ai_bits: 12, ai_speed: 2000, ao_nchan: 2, ao_scan_speed: 1000, layout: LAYOUT_60XX, ai_range_table: &ai_ranges_6052, ao_range_table: &ao_ranges_6030, ao_range_code: ao_range_code_6030, ai_fifo: &ai_fifo_60xx, has_8255 : 0, }, { name: "pci-das6052", device_id: 0x66, ai_se_chans: 16, ai_bits: 16, ai_speed: 3333, ao_nchan: 2, ao_scan_speed: 3333, layout: LAYOUT_60XX, ai_range_table: &ai_ranges_6052, ao_range_table: &ao_ranges_6030, ao_range_code: ao_range_code_6030, ai_fifo: &ai_fifo_60xx, has_8255 : 0, }, { name: "pci-das6070", device_id: 0x67, ai_se_chans: 16, ai_bits: 12, ai_speed: 800, ao_nchan: 2, ao_scan_speed: 1000, layout: LAYOUT_60XX, ai_range_table: &ai_ranges_6052, ao_range_table: &ao_ranges_6030, ao_range_code: ao_range_code_6030, ai_fifo: &ai_fifo_60xx, has_8255 : 0, }, { name: "pci-das6071", device_id: 0x68, ai_se_chans: 64, ai_bits: 12, ai_speed: 800, ao_nchan: 2, ao_scan_speed: 1000, layout: LAYOUT_60XX, ai_range_table: &ai_ranges_6052, ao_range_table: &ao_ranges_6030, ao_range_code: ao_range_code_6030, ai_fifo: &ai_fifo_60xx, has_8255 : 0, }, { name: "pci-das4020/12", device_id: 0x52, ai_se_chans: 4, ai_bits: 12, ai_speed: 50, ao_nchan: 2, ao_scan_speed: 0, // no hardware pacing on ao layout: LAYOUT_4020, ai_range_table: &ai_ranges_4020, ao_range_table: &ao_ranges_4020, ao_range_code: ao_range_code_4020, ai_fifo: &ai_fifo_4020, has_8255 : 1, },#if 0 { name: "pci-das6402/16/jr", device_id: 0 // XXX, ai_se_chans: 64, ai_bits: 16, ai_speed: 5000, ao_nchan: 0, ao_scan_speed: 10000, layout: LAYOUT_64XX, ai_range_table: &ai_ranges_64xx, ai_fifo: ai_fifo_64xx, has_8255 : 1, }, { name: "pci-das64/m1/16/jr", device_id: 0 // XXX, ai_se_chans: 64, ai_bits: 16, ai_speed: 1000, ao_nchan: 0, ao_scan_speed: 10000, layout: LAYOUT_64XX, ai_range_table: &ai_ranges_64xx, ai_fifo: ai_fifo_64xx, has_8255 : 1, }, { name: "pci-das64/m2/16/jr", device_id: 0 // XXX, ai_se_chans: 64, ai_bits: 16, ai_speed: 500, ao_nchan: 0, ao_scan_speed: 10000, layout: LAYOUT_64XX, ai_range_table: &ai_ranges_64xx, ai_fifo: ai_fifo_64xx, has_8255 : 1, }, { name: "pci-das64/m3/16/jr", device_id: 0 // XXX, ai_se_chans: 64, ai_bits: 16, ai_speed: 333, ao_nchan: 0, ao_scan_speed: 10000, layout: LAYOUT_64XX, ai_range_table: &ai_ranges_64xx, ai_fifo: ai_fifo_64xx, has_8255 : 1, }, { name: "pci-das64/m1/14", device_id: 0, // XXX
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -