void generate_binary_clock(HDWF *hdwf, int last_input, int hz_divider) { if (DEBUG) { double pvMin; double pvMax; FDwfAnalogOutNodeAmplitudeInfo(hdwf[0], 0, AnalogOutNodeCarrier, &pvMin, &pvMax); printf("Analog Voltage Min: %.1lfV Max: %.1lfV\n", pvMin, pvMax); } WORD hz_multiplier; double analog_hz = get_analog_hz(hdwf); //Turning on 5.0V on W1 FDwfAnalogOutNodeEnableSet(hdwf[0], 0, AnalogOutNodeCarrier, true); FDwfAnalogOutNodeFunctionSet(hdwf[0], 0, AnalogOutNodeCarrier, funcDC); FDwfAnalogOutNodeOffsetSet(hdwf[0], 0, AnalogOutNodeCarrier, 5.0); FDwfAnalogOutConfigure(hdwf[0], 0, true); Wait(1); //Wait 1 so the system have time to stabilize //Configuring Binary Clock for (int i = 0; i < (last_input+1); i++) { hz_multiplier = (1 << i); FDwfDigitalOutEnableSet(hdwf[0], i, 1); FDwfDigitalOutDividerSet(hdwf[0], i, hz_divider * hz_multiplier); FDwfDigitalOutCounterSet(hdwf[0], i, 1, 1); if (DEBUG) { printf("Starting input: %d at ", i); print_hz(analog_hz, hz_divider * hz_multiplier); printf("\n"); } } //Starting Binary Clock FDwfDigitalOutConfigure(hdwf[0], 1); }
static void freq_knob (cairo_t* cr, FilterFreq const * const f) { float xlp, ylp; char tfq[8]; PangoFontDescription* font = pango_font_description_from_string("Mono 9px"); print_hz(tfq, dial_to_freq(f, 0)); RESPLABLEL(0.00); write_text_full(cr, tfq, font, xlp, ylp, 0, 1, c_dlf); print_hz(tfq, dial_to_freq(f, .25)); RESPLABLEL(0.25); write_text_full(cr, tfq, font, xlp, ylp, 0, 1, c_dlf); print_hz(tfq, dial_to_freq(f, .50)); RESPLABLEL(0.50); write_text_full(cr, tfq, font, xlp, ylp, 0, 2, c_dlf); print_hz(tfq, dial_to_freq(f, .75)); RESPLABLEL(0.75); write_text_full(cr, tfq, font, xlp-2, ylp, 0, 3, c_dlf); print_hz(tfq, dial_to_freq(f, 1.0)); RESPLABLEL(1.00); write_text_full(cr, tfq, font, xlp-2, ylp, 0, 3, c_dlf); pango_font_description_free (font); }