Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unsigned long currentMillis = 0;
- unsigned long previousMillis = 0;
- void setup(){
- Serial.begin(115200);
- initADC();
- startADC();
- }
- void loop(){
- currentMillis = millis();
- if (currentMillis - previousMillis >= 500){
- uint8_t adcValueLow = ADCL; //ADCL musi być odczytane przed ADCH przy dokładności 10bit
- uint16_t adcValue = (ADCH<<8)|adcValueLow;
- Serial.print("ADMUX: ");
- Serial.println(ADMUX, BIN);
- Serial.print("ADCSRA: ");
- Serial.println(ADCSRA, BIN);
- Serial.print("ADCSRB: ");
- Serial.println(ADCSRB, BIN);
- Serial.print("adcValue: ");
- Serial.println(adcValue);
- previousMillis = currentMillis;
- }
- }
- }
- void startADC(){
- ADCSRA |= (1<<ADEN);//ADC enable
- ADCSRA |= (1<<ADSC); //strt conversion
- }
- void stopADC(){
- ADCSRA &= ~(1<ADEN);
- }
- void initADC(){
- ADCSRA =
- (1<<ADATE)| //ADC Auto trigger enable
- (0<<ADIE)| //ADC interrupt enable
- (1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0); //ADC prescaler 111 -> 125 kHz przy 16MHz
- ADCSRB =
- (1<<ADHSM)| //ADC high speed mode
- (0<<MUX5)| //wybrór pinu ADC - 5.bit
- (0<<ADTS3)|(0<<ADTS2)|(0<<ADTS1); //ADC Auto Trigger mode 000 -> free runing mode
- ADMUX =
- (1<<REFS1)|(1<<REFS0)| //INTERNAL 2,56V
- (0<<ADLAR)| //Right adjusted result
- (0<<MUX4)|(0<<MUX3)|(0<<MUX2)|(0<<MUX1)|(1<<MUX0); //wybór pinu ADC 00001 -> ADC1
- //Wyłączanie input buffers dla pinów ADC
- DIDR0 =
- (1<<ADC7D)|
- (1<<ADC6D)|
- (1<<ADC5D)|
- (1<<ADC4D)|
- (1<<ADC1D)|
- (1<<ADC0D);
- DIDR2 =
- (1<<ADC13D)|
- (1<<ADC12D)|
- (1<<ADC11D)|
- (1<<ADC10D)|
- (1<<ADC9D)|
- (1<<ADC8D);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement