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