added adc example
This commit is contained in:
parent
8ce9c0f3d5
commit
4e1a92b1ff
|
@ -14,7 +14,7 @@ void uart_init(uint16_t baud);
|
|||
|
||||
uint8_t uart_read();
|
||||
|
||||
void uart_read(uint8_t* buffer, size_t size);
|
||||
void uart_read_bytes(uint8_t* buffer, size_t size);
|
||||
|
||||
void uart_write(uint8_t frame);
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@ board = nanoatmega328
|
|||
framework = arduino
|
||||
build_src_filter =
|
||||
+<*>
|
||||
+*.c
|
||||
-<.git/>
|
||||
-<.svn/>
|
||||
-<blink/>
|
||||
|
@ -22,4 +23,5 @@ build_src_filter =
|
|||
-<trafficlight/>
|
||||
-<summer/>
|
||||
-<summer_controlled/>
|
||||
+<uart/>
|
||||
-<uart/>
|
||||
+<adc/>
|
|
@ -0,0 +1,50 @@
|
|||
//
|
||||
// Created by servostar on 09.12.23.
|
||||
//
|
||||
|
||||
#include "adc.h"
|
||||
#include <stdlib.h>
|
||||
|
||||
void adc_init() {
|
||||
DDRC = 0x0;
|
||||
SET_BIT(ADCSRA, ADEN); // enable ADC
|
||||
|
||||
// set prescaler / precision for conversion
|
||||
SET_BIT(ADCSRA, ADPS0);
|
||||
SET_BIT(ADCSRA, ADPS1);
|
||||
SET_BIT(ADCSRA, ADPS2);
|
||||
|
||||
// set reference voltage
|
||||
SET_BIT(ADMUX, REFS0);
|
||||
}
|
||||
|
||||
uint16_t adc_read(uint8_t channel) {
|
||||
ADMUX &= 0xF0;
|
||||
ADMUX |= (channel & 0xF0);
|
||||
// trigger adc conversion
|
||||
ADCSRA |= (1 << ADSC);
|
||||
// wait until converted
|
||||
while((ADCSRA & (1 << ADIF)) == 0);
|
||||
return ADCL + (ADCH << 8);
|
||||
}
|
||||
|
||||
static uint16_t recent_adc = 0;
|
||||
|
||||
void init() {
|
||||
uart_init(9600);
|
||||
adc_init();
|
||||
}
|
||||
|
||||
void loop() {
|
||||
uint16_t adc_val = adc_read(0);
|
||||
char buf[10] = { 0 };
|
||||
itoa(adc_val, buf, 10);
|
||||
|
||||
if (recent_adc != adc_val) {
|
||||
recent_adc = adc_val;
|
||||
|
||||
uart_write_string("Channel 0: ");
|
||||
uart_write_string(buf);
|
||||
uart_write_string("\n");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
//
|
||||
// Created by servostar on 09.12.23.
|
||||
//
|
||||
|
||||
#ifndef ARDUINO_ADC_H
|
||||
#define ARDUINO_ADC_H
|
||||
|
||||
#include "prelude.h"
|
||||
|
||||
void init();
|
||||
void loop();
|
||||
|
||||
#endif //ARDUINO_ADC_H
|
|
@ -8,7 +8,8 @@ extern void loop();
|
|||
//#include "trafficlight/trafficlight.h"
|
||||
//#include "summer/summer.h"
|
||||
//#include "summer_controlled/summer.h"
|
||||
#include "uart/uart_read_write.h"
|
||||
//#include "uart/uart_read_write.h"
|
||||
#include "adc/adc.h"
|
||||
|
||||
int main() {
|
||||
init();
|
||||
|
|
Loading…
Reference in New Issue