#include "usbpulse.h" int main(int argc, char *argv[]) { int opt, dev = 0, mute = 0, help = 0; int x = 1000, y = 0, z = 100, bypass = 0, invert = 0, random = 0, one = 0; int m = 1, n = 1, u = 1; double amp = 2.0; int fd; while((opt = getopt(argc, argv, "d:a:p:x:y:z:bri1mh?")) != -1) switch(opt) { case 'd': dev = atoi(optarg); break; case 'm': mute = 1; break; case 'a': amp = atof(optarg); break; case 'p': sscanf(optarg, "%i,%i,%i", &m, &n, &u); break; case 'x': x = atoi(optarg); break; case 'y': y = atoi(optarg); break; case 'z': z = atoi(optarg); break; case 'b': bypass = 1; break; case 'r': random = 1; break; case 'i': invert = 1; break; case '1': one = 1; break; default: help = 1; break; } if(help || optind != argc) { printf("Pouziti: %s [-d dev] [-a amp] [-p m,n,u] [-x div] [-y from] [-z to]\n" " [-b] [-r] [-1] [-i] [-m]\n" " dev je cislo zarizeni %sn, na ktere se pripojit.\n" " amp je amplituda ve voltech rozsahu 1.5 az 5. Muze byt desetinne cislo.\n" " m,n,u jsou argumenty pro hlavni PLL casovac. Oddelujte prosim carkou\n" " a nepouzivejte mezery. Frekvence PLL = 12.5MHz*m/(n*u), m<=16, n<=8, u<=4.\n" " div je koeficient delice frekvence PLL. V modu -1 nema primy vyznam.\n" " from a to urcuji zpozdeni a dobu trvani pulsu v jednotkach PLL.\n" " -b zapina primy pruchod z PLL bez delice (pro dosazeni nejvyssich f.)\n" " -r zapina pseudonahodny vystup 0 a 1 na frekvenci PLL.\n" " -1 urcuje jednopulzovy rezim. Delka pulzu je urcena -x, -y a -z.\n" " -i zapina inverzi logicke hodnoty na vystupu.\n" " -m je utlumeni (vypnuti) vystupu a prepnuti do modu Hi-Z.\n", argv[0], DEVNAME); return 0; } if(!opendev(dev, &fd)) { fprintf(stderr, "Nepodarilo se otevrit zarizeni %s%i!\n" "Zkontrolujte pritomnost specialniho souboru a pristupova prava.\n", DEVNAME, dev); return 1; } if(!pulse100_init_pulse(fd)) return 1; pulse100_set_clock_master(fd, 1); pulse100_set_trig_master(fd, 1); pulse100_set_enable(fd, 1); if(x < z+2) { x = z+2; if(x >= (1<<28)) { x = (1<<28) - 1; z = x-2; } } if(mute) { pulse100_set_enable(fd, 0); } else { pulse100_set_pll(fd, m, n, u, 0); pulse100_set_amplitude(fd, amp); pulse100_set_xyz(fd, x, y, z); pulse100_set_bypass(fd, bypass); pulse100_set_prng(fd, random); pulse100_set_invert(fd, invert); if(one) { pulse100_set_run(fd, 0); pulse100_set_arm(fd, 0); } pulse100_set_oneshot(fd, one); pulse100_set_enable(fd, 1); pulse100_set_run(fd, 1); pulse100_set_arm(fd, 1); pulse100_set_trigger(fd, 1); } closedev(fd); return 0; } /* Zaloha fungujiciho One Shot modu: * pulse100_set_trigger(fd, 0); * pulse100_set_arm(fd, 0); * pulse100_set_run(fd, 0); * pulse100_set_oneshot(fd, 1); * pulse100_set_run(fd, 1); * pulse100_set_arm(fd, 1); * pulse100_set_trigger(fd, 1); */