From bb6c929ba9bcce76e6aa988c7d3c2f6a35bd5681 Mon Sep 17 00:00:00 2001 From: Toberfra Date: Mon, 7 Feb 2022 19:45:25 +0100 Subject: [PATCH] ADC Prescaler wird automatisch eingestellt. --- Arduino/motor/src/analogDigital.cpp | 9 +++++ Arduino/motor/src/analogDigital.h | 55 +++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) diff --git a/Arduino/motor/src/analogDigital.cpp b/Arduino/motor/src/analogDigital.cpp index e69de29..799e5c5 100644 --- a/Arduino/motor/src/analogDigital.cpp +++ b/Arduino/motor/src/analogDigital.cpp @@ -0,0 +1,9 @@ + +#include "analogDigital.h" + + +void AnalogDigital::setup(){ + Motor::setup(); + ADCSRA &= ~7 ; + ADCSRA |= ADC_PRESCALER ; +} \ No newline at end of file diff --git a/Arduino/motor/src/analogDigital.h b/Arduino/motor/src/analogDigital.h index b378e36..ea37a1c 100644 --- a/Arduino/motor/src/analogDigital.h +++ b/Arduino/motor/src/analogDigital.h @@ -1,10 +1,65 @@ #ifndef ANALOG_GIGITAL_H #define ANALOG_GIGITAL_H +#define ADC_PRESCALER 1 //ADC_Prescaler / 2 +#define ADC_PRESCALER_FAKTOR 2 + +#if F_CPU > 400000L // 400kHz / 4 = 100kHz + #undef ADC_PRESCALER + #undef ADC_PRESCALER_FAKTOR + #define ADC_PRESCALER 2 //ADC_Prescaler / 4 + #define ADC_PRESCALER_FAKTOR 4 +#endif + +#if F_CPU > 800000L // 800kHz / 8 = 100kHz + #undef ADC_PRESCALER + #undef ADC_PRESCALER_FAKTOR + #define ADC_PRESCALER 3 //ADC_Prescaler / 4 + #define ADC_PRESCALER_FAKTOR 8 +#endif + +#if F_CPU > 1600000L // 1.6MHz / 16 = 100kHz + #undef ADC_PRESCALER + #undef ADC_PRESCALER_FAKTOR + #define ADC_PRESCALER 4 //ADC_Prescaler / 16 + #define ADC_PRESCALER_FAKTOR 16 +#endif + +#if F_CPU > 3200000L // 3.2MHz / 32 = 100kHz + #undef ADC_PRESCALER + #undef ADC_PRESCALER_FAKTOR + #define ADC_PRESCALER 5 //ADC_Prescaler / 32 + #define ADC_PRESCALER_FAKTOR 32 +#endif + +#if F_CPU > 6400000L // 6.4MHz / 64 = 100kHz + #undef ADC_PRESCALER + #undef ADC_PRESCALER_FAKTOR + #define ADC_PRESCALER 6 //ADC_Prescaler / 64 + #define ADC_PRESCALER_FAKTOR 64 +#endif + +#if F_CPU > 12800000L // 12.8MHz / 128 = 100kHz + #undef ADC_PRESCALER + #undef ADC_PRESCALER_FAKTOR + #define ADC_PRESCALER 7//ADC_Prescaler / 128 + #define ADC_PRESCALER_FAKTOR 128 +#endif + +#define F_ADC (F_CPU / ADC_PRESCALER_FAKTOR) + + + + + #include "motor.h" class AnalogDigital : public Motor{ + public: + + static void setup(); + };