Ejemplo n.º 1
0
void countReset(client *c, int argc, sds *argv)
{
  uint32_t reset;
  safe_strtoul(argv[1],&reset);
  counterReset(reset);
  addReplyStatus(c, "+OK");
}
Ejemplo n.º 2
0
static Counter* counterCreate(I8254Out out, void* ref, UInt32 frequency) 
{
    Counter* counter = calloc(1, sizeof(Counter));

    counter->frequency = frequency;
    counter->out = out;
    counter->ref = ref;

    counter->timer = boardTimerCreate(counterOnTimer, counter);

    counterReset(counter);

    return counter;
}
Ejemplo n.º 3
0
int Caen785Module::configure()
{
    AbstractInterface *iface = getInterface ();
    int ret = 0;

    uint32_t addr;
    uint16_t data;

    // Crate select
    addr = conf.base_addr + CAEN785_CRATE_SEL;
    data = 0x0 | conf.cratenumber;
    ret = iface->writeA32D16(addr,data);
    if(ret != 0) printf("Error %d at CAEN785_CRATE_SEL\n",ret);

    // set channel thresholds and kill bits
    for (int i = 0; i < 32; ++i) {
        ret = iface->writeA32D16 (conf.base_addr + CAEN785_THRESHOLDS + 2*i,
                                  conf.thresholds [i]
                                  | (conf.killChannel [i] ? (1 << 8) : 0));
        if (ret) printf ("Error %d at CAEN785_THRESHOLDS[%d]\n", ret, i);
    }

    ret = counterReset();

    // Sliding scale
    addr = conf.base_addr + CAEN785_SLIDE_CONST;
    data = 0x0 | conf.slide_constant;
    ret = iface->writeA32D16(addr,data);
    if(ret != 0) printf("Error %d at CAEN785_SLIDE_CONST\n",ret);

    // Board setup
    addr = conf.base_addr + CAEN785_CONTROL1;
    data = 0x0;
    if(conf.block_end){
        data |= (1 << 2); // default OFF
    }
    if(conf.program_reset){
        data |= (1 << 4); // default OFF
    }
    if(conf.berr_enable){
        data |= (1 << 5); // default OFF
    }
    if(conf.align64){
        data |= (1 << 6); // default OFF
    }
    ret = iface->writeA32D16(addr,data);
    if(ret != 0) printf("Error %d at CAEN785_CONTROL1",ret);

    addr = conf.base_addr + CAEN785_BIT_SET2;
    data = 0x0;
    if(conf.memTestModeEnabled) {
        data |= (1 << 0); // default OFF
    }
    if(conf.offline) {
        data |= (1 << 1); // default OFF
    }
    if(conf.overRangeSuppressionEnabled) {
        data |= (1 << 3); // default ON
    }
    if(conf.autoIncrementEnabled) {
        data |= (1 << 11); // default ON
    }
    if(conf.emptyEventWriteEnabled) {
        data |= (1 << 12); // default ON -> empty events are written
    }
    if(conf.alwaysIncrementEventCounter) {
        data |= (1 << 14); // default ON
    }
    // TODO: transfer more flags
    ret = iface->writeA32D16(addr,data);
    if(ret != 0) printf("Error %d at CAEN785_BIT_SET2\n",ret);

    ret = readStatus();

    return ret;
}
Ejemplo n.º 4
0
void i8254Reset(I8254* i8254)
{
    counterReset(i8254->counter1);
    counterReset(i8254->counter2);
    counterReset(i8254->counter3);
}