skeleton of analog read subsystem
This commit is contained in:
parent
bb1d964712
commit
488e42605b
|
|
@ -0,0 +1,15 @@
|
||||||
|
#include "analog.h"
|
||||||
|
|
||||||
|
void analog_init() {
|
||||||
|
PRR &= ~MASK(PRADC);
|
||||||
|
ADMUX = REFERENCE;
|
||||||
|
ADCSRA = MASK(ADEN) | MASK(ADPS2) | MASK(ADPS1) | MASK(ADPS0);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t analog_read(uint8_t channel) {
|
||||||
|
ADMUX = (ADMUX & 0xF0) | channel;
|
||||||
|
ADCSRA |= MASK(ADSC);
|
||||||
|
// waits. I hate waiting
|
||||||
|
for (;ADCSRA | MASK(ADSC););
|
||||||
|
return ADC;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
#ifndef _ANALOG_H
|
||||||
|
#define _ANALOG_H
|
||||||
|
|
||||||
|
#define REFERENCE_AREF 0
|
||||||
|
#define REFERENCE_AVCC 64
|
||||||
|
#define REFERENCE_1V1 192
|
||||||
|
|
||||||
|
#ifndef REFERENCE
|
||||||
|
#warning define REFERENCE as one of
|
||||||
|
#warning REFERENCE_AREF, REFERENCE_AVCC or REFERENCE_1V1
|
||||||
|
#warning in your machine.h
|
||||||
|
#error REFERENCE undefined
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void analog_init();
|
||||||
|
uint16_t analog_read(uint8_t channel);
|
||||||
|
|
||||||
|
#endif /* _ANALOG_H */
|
||||||
Loading…
Reference in New Issue