Files
2022-11-13 22:53:56 +01:00

27 lines
572 B
C++
Executable File

#include <avr/io.h>
#include "adc.h"
adcSim::adcSim()
{
ADCSRA.setCallback(DELEGATE(registerDelegate, adcSim, *this, ADC_ADCSRA_callback));
for(unsigned int n=0;n<16;n++)
adcValue[n] = 0;
}
adcSim::~adcSim()
{
}
void adcSim::ADC_ADCSRA_callback(uint8_t oldValue, uint8_t& newValue)
{
if ((newValue & _BV(ADEN)) && (newValue & _BV(ADSC)))
{ //Start ADC conversion
int idx = ADMUX & (_BV(MUX4)|_BV(MUX3)|_BV(MUX2)|_BV(MUX1)|_BV(MUX0));
if (ADCSRB & _BV(MUX5))
idx += 8;
ADC = adcValue[idx];
}
}