Created
November 3, 2017 08:01
-
-
Save wildan3105/e6b2b720342478cd6a1ee522c38d9c28 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const byte adcPin = 0; // A0 | |
const int MAX_RESULTS = 256; | |
volatile int results [MAX_RESULTS]; | |
volatile int resultNumber; | |
// ADC complete ISR | |
ISR (ADC_vect) | |
{ | |
if (resultNumber >= MAX_RESULTS) | |
ADCSRA = 0; // turn off ADC | |
else | |
results [resultNumber++] = ADC; | |
} // end of ADC_vect | |
EMPTY_INTERRUPT (TIMER1_COMPB_vect); | |
void setup () | |
{ | |
Serial.begin(115200); // set baudrate | |
Serial.println(); | |
// reset Timer 1 | |
TCCR1A = 0; | |
TCCR1B = 0; | |
TCNT1 = 0; | |
TCCR1B = bit (CS11) | bit (WGM12); // CTC, prescaler of 8 | |
TIMSK1 = bit (OCIE1B); | |
OCR1A = 39; | |
OCR1B = 39; // 20 uS - sampling frequency 50 kHz | |
ADCSRA = bit (ADEN) | bit (ADIE) | bit (ADIF); // turn ADC on, want interrupt on completion | |
ADCSRA |= bit (ADPS2); // Prescaler of 16 | |
ADMUX = bit (REFS0) | (adcPin & 7); | |
ADCSRB = bit (ADTS0) | bit (ADTS2); // Timer/Counter1 Compare Match B | |
ADCSRA |= bit (ADATE); // turn on automatic triggering | |
} | |
void loop () { | |
while (resultNumber < MAX_RESULTS) { } | |
for (int i = 0; i < MAX_RESULTS; i++) | |
{ | |
Serial.println (results [i]); | |
} | |
resultNumber = 0; // reset counter | |
ADCSRA = bit (ADEN) | bit (ADIE) | bit (ADIF)| bit (ADPS2) | bit (ADATE); // turn ADC ON | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment