Prusa3d Marlin fork
adc.h
1
#pragma once
2
3
#include <inttypes.h>
4
#include "config.h"
5
6
/*
7
http://resnet.uoregon.edu/~gurney_j/jmpc/bitwise.html
8
*/
9
#define BITCOUNT(x) (((BX_(x)+(BX_(x)>>4)) & 0x0F0F0F0F) % 255)
10
#define BX_(x) ((x) - (((x)>>1)&0x77777777) - (((x)>>2)&0x33333333) - (((x)>>3)&0x11111111))
11
12
#define ADC_PIN_IDX(pin) BITCOUNT(ADC_CHAN_MSK & ((1 << (pin)) - 1))
13
14
#if BITCOUNT(ADC_CHAN_MSK) != ADC_CHAN_CNT
15
# error "ADC_CHAN_MSK oes not match ADC_CHAN_CNT"
16
#endif
17
18
#define VOLT_DIV_REF 5
//[V]
19
20
extern
volatile
uint8_t adc_channel;
21
extern
volatile
uint16_t adc_values[ADC_CHAN_CNT];
22
23
extern
void
adc_init();
24
extern
void
adc_start_cycle();
//should be called from an atomic context only
25
static
inline
bool
adc_cycle_done() {
return
adc_channel >= ADC_CHAN_CNT; }
Generated by
1.9.1