Beispiel #1
0
void iterate_select_state_machine(SWITCH_STATE *ss) {
    int next_state;

    next_state = ss->state;
    switch(ss->state) {
        case SS_IDLE:
            if (switch_select()) {
                downTicker = FIFTY_MS;
                next_state = SS_DEBOUNCE_DOWN;
            }
            break;
        case SS_DEBOUNCE_DOWN:
            if (downTicker == 0) {
                ss->mode++;
                if (ss->mode >= MAX_MODES)
                    ss->mode = 0;
                next_state = SS_WAIT_BUTTON_UP;
            }
            break;
        case SS_WAIT_BUTTON_UP:
            if (switch_select() == 0) {
                downTicker = FIFTY_MS;
                next_state = SS_DEBOUNCE_UP;
            }
            break;
        case SS_DEBOUNCE_UP:
            if (downTicker == 0) {
                next_state = SS_IDLE;
            }
            break;
   }
    ss->state = next_state;
}
Beispiel #2
0
int main(void) {
    short buf[SINE_SAMPLES];
    int   i;

    dac_open(4*DAC_BUF_SZ);
    adc_open(ADC_FS_16KHZ, 4*ADC_BUF_SZ);
    sm1000_leds_switches_init();

    while (1) {

        /* keep DAC FIFOs topped up */

        while(adc2_read(buf, SINE_SAMPLES) == -1);

        if (!switch_select()) {
            for(i=0; i<SINE_SAMPLES; i++)
                buf[i] = aSine[i];
        }

        dac2_write(buf, SINE_SAMPLES);
    }

}