Пример

программы работы с КАМАК

 

 

 

 

 

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <ctype.h>

#include <unistd.h>

#include <muspin.h>

 

#define DELAY 1

#define ENV "RUNSETUP"

#define INITNAME "bl.ini"

#define LAST       4095

/* Written by V.Duginov for test of Discriminator KL353 with DACVD

  ---------      ----------     --------       ---------

  | D A C |      |        |     |ECL  /|       |       |

  |       |----->| KL353-A|-----|   /  |------>| KS021 |

  |  V D  |      |        |     | /NIM |       |       |

   --------      |---^----      --------        --------

                     |

                 ----|---     --------      --------       --------

                 |      |     |      |      |NIM  /|      |        |

                 | 1 : 4|<----| G5-78|<-----|   /  |<-----| KL355  |

                 |      |     | 10ns |      | / ECL|      | NAF(25)|

                 --------     --------       -------       --------

  */

void

usage() {

 fprintf(stderr, "usage: shaper [b:]c nd ad nc ac ng ag Kn\n");

 fprintf(stderr, "nd ad - DAC[11,0]; nc ac - counter[4,0]; \n");

 fprintf(stderr, "ng ag- generator(KL355)[16,0]; Kn - numb. of pulses[100]\n");

         exit(1);

}

 

main(int argc, char **argv)  {

int datar[2][100], kg, kl, k1, FirCh, LastCh, Kn, Level;

u_int b, c, nd, nc, ad, ac, ng, ag, f, l, ncs;

/* ncs - number of counts */

         u_int i;

if (argc < 1) usage();

 

         if (c_strtobc(argv[1], &b, &c)) usage();

 

         if (argc >= 2) {

                   if (c_strton(argv[2], &nd)) usage();

         }

         else nd = 11;        

         if (argc >= 3) {

                   if (c_strtoa(argv[3], &ad)) usage();

         }

         else ad = 0;

 

         if (argc >= 4) {

                   if (c_strton(argv[4], &nc)) usage();

         }

         else nc = 4; 

         if (argc >= 5) {

                   if (c_strtoa(argv[5], &ac)) usage();

         }

         else ac = 0;

 

         if (argc >= 6) {

                   if (c_strton(argv[6], &ng)) usage();

         }

         else ng = 16;        

         if (argc >= 7) {

                   if (c_strtoa(argv[7], &ag)) usage();

         }

         else ag = 0;

 

 

         if (argc >= 8) {

                   if (c_strtou(argv[8], &Kn) || Kn > 65000) usage();

         }

         else Kn = 100;

 

 

 printf("%d  %d   %d  %d  %d %d %d\n \n", nd, ad,  nc, ac, ng, ag, Kn);

LastCh=63;

Level = 0;

c_set_crate(c);

c_zero_crate;

c_clear_crate;

  c_oper(nc,ac,9); /* reset of counter */

printf("\n");

 

   for(kl=0;kl<LastCh;kl++){

     Level=kl;

      c_write(nd,ad,16,Level);

      usleep(1000);

      c_oper(nc,ac,9);       

          for(kg=0;kg<Kn;kg++){

          c_oper(ng,ag,25);

          }  

          ncs = c_read(nc,ac,0);    

          printf(" %d %d \n", Level, ncs);

          datar[1][kl] = Level;

           datar[2][kl] = ncs;

               c_oper(nc,ac,9);

                                       

   } /* end for(kl) */

    

   printf("\n");

  freopen("sh.dat","w",stdout);

  for(k1=0; k1<kl; k1++)

  printf("%d %d \n", datar[1][k1], datar[2][k1]);

  fclose(stdout);  

}

 

---------------------------------------------------------------------------------------------

(С) В.Дугинов

 

Hosted by uCoz