skeleton of analog read subsystem

This commit is contained in:
Michael Moon 2010-08-16 14:06:37 +10:00
parent bb1d964712
commit 488e42605b
2 changed files with 33 additions and 0 deletions

15
analog.c Normal file
View File

@ -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;
}

18
analog.h Normal file
View File

@ -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 */