Пример
программы
работы с
КАМАК
#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);
}
---------------------------------------------------------------------------------------------
(С)
В.Дугинов