Exemplo n.º 1
0
static void
adc_queue_start(void)
{
        if (adc_busy)
                return;

        crit_enter();
        if (head) {
                adc_busy = true;
                adc_sample_prepare(head->mode);
                adc_sample_start(head->channel, adc_queue_sample_done, NULL);
        }
        crit_exit();
}
Exemplo n.º 2
0
Arquivo: dma.c Projeto: koson/mchck-os
void
main(void)
{
        adc_init();
        dma_init();
        enter_thread_mode();

        sema_wait(&adc_start_sema);

        struct dma_ctx *ctx;
        ctx = dma_setup(DMAMUX_ADC0, &ADC_R_REG(ADC0, 0), dstbuf, 2, sizeof(dstbuf)/2, DMA_SRC_STICKY | DMA_DOUBLEBUF | DMA_LOOP, dma_done, NULL);

        adc_sample_prepare(ADC_MODE_CONTINUOUS);
        bf_set_reg(ADC_SC2_REG(ADC0), ADC_SC2_DMAEN, 1);
        ADC_SC1_REG(ADC0, 0) = ADC_SC1_ADCH(0) | ADC_SC1_DIFF_MASK;

        wait(main);
}