Exemple #1
0
void internal_trigger() {
  ///assert(cmd!=NULL);

  //printf("triggering...");fflush(stdout);
  static comedi_insn ins[2];
  static comedi_insnlist il;
  lsampl_t d1, d2;
  int ret;
  il.n_insns=1;
  il.insns=ins;
  memset(ins, 0, 2*sizeof(comedi_insn));
  d1 = 0;
  d2 = 0;

  if(cmd && cmd->chanlist_len) {
    ins[0].insn=INSN_INTTRIG;
    ins[0].subdev=0;
    ins[0].data = &d1;
    ins[0].n = 1;
  }

  ret=comedi_do_insnlist(it,&il);
  if(ret<0){
    comedi_perror("error triggering ");
  }
  //printf("done\n");fflush(stdout);

}
Exemple #2
0
void do_toggle(void)
{
#if 1
	comedi_insnlist il;
	comedi_insn insn[3];
	lsampl_t data[6];
	int mask = 0xff;

	count++;

	il.n_insns = 3;
	il.insns = insn;

	memset(insn,0,3*sizeof(comedi_insn));

	insn[0].insn = INSN_BITS;
	insn[0].n = 2;
	insn[0].data = data+0;
	insn[0].subdev = out_subd;

	data[0] = mask;
	//data[1] = count;
	data[1] = 0xfc;

	insn[1].insn = INSN_WAIT;
	insn[1].n = 1;
	insn[1].data = data+2;

	data[2] = 100000-1;

	insn[2].insn = INSN_BITS;
	insn[2].n = 2;
	insn[2].data = data+4;
	insn[2].subdev = out_subd;

	data[4] = mask;
	//data[5] = count;
	data[5] = 0xff;

	comedi_do_insnlist(device,&il);
#else
	unsigned int data;
	unsigned int mask = 0xff;

	count++;
	data = count;

	comedi_dio_bitfield(device,out_subd,mask,&data);
#endif
}
Exemple #3
0
void write_bits(int subdevice, int bits)
{
	comedi_insnlist il;
	comedi_insn insn[5];
	lsampl_t data[10];
	int mask = (1<<chan_dat)|(1<<chan_clk);
	int i;
	int bit;
	int ret;

	il.n_insns = 5;
	il.insns = insn;

	memset(insn,0,sizeof(insn));

	/* clock low, set data */
	insn[0].insn = INSN_BITS;
	insn[0].n = 2;
	insn[0].data = data + 0;
	insn[0].subdev = subdevice;

	/* wait 1 */
	insn[1].insn = INSN_WAIT;
	insn[1].n = 1;
	insn[1].data = data + 2;

	/* clock high, same data */
	insn[2].insn = INSN_BITS;
	insn[2].n = 2;
	insn[2].data = data + 4;
	insn[2].subdev = subdevice;

	/* wait 1 */
	insn[3].insn = INSN_WAIT;
	insn[3].n = 1;
	insn[3].data = data + 6;

	/* clock low, same data */
	insn[4].insn = INSN_BITS;
	insn[4].n = 2;
	insn[4].data = data + 8;
	insn[4].subdev = subdevice;


	for(i=0;i<8;i++){
		bit=1<<(7-i);
//printf("writing %d\n",bit&bits);

		data[0] = mask;
		data[1] = (bits&bit)?(1<<chan_dat):0;

		data[2] = wait1;
		data[3] = 0;

		data[4] = mask;
		data[5] = ((bits&bit)?(1<<chan_dat):0)|(1<<chan_clk);

		data[6] = wait2;
		data[7] = 0;

		data[8] = mask;
		data[9] = (bits&bit)?(1<<chan_dat):0;

		ret = comedi_do_insnlist(device,&il);

//		printf("comedi_do_insnlist returned %d\n",ret);
	}

}