Advertisement
Guest User

Untitled

a guest
Feb 24th, 2015
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.61 KB | None | 0 0
  1. unsigned long currentMillis = 0;
  2. unsigned long previousMillis = 0;
  3.  
  4. void setup(){
  5.     Serial.begin(115200);
  6.     initADC();
  7.     startADC();
  8. }
  9.  
  10. void loop(){
  11.     currentMillis = millis();
  12.         if (currentMillis - previousMillis >= 500){
  13.             uint8_t adcValueLow = ADCL; //ADCL musi być odczytane przed ADCH przy dokładności 10bit
  14.             uint16_t adcValue = (ADCH<<8)|adcValueLow;
  15.  
  16.            
  17.            
  18.             Serial.print("ADMUX: ");
  19.             Serial.println(ADMUX, BIN);
  20.             Serial.print("ADCSRA: ");
  21.             Serial.println(ADCSRA, BIN);
  22.             Serial.print("ADCSRB: ");
  23.             Serial.println(ADCSRB, BIN);
  24.            
  25.  
  26.             Serial.print("adcValue: ");
  27.             Serial.println(adcValue);
  28.             previousMillis = currentMillis;
  29.         }
  30. }
  31.  
  32.  
  33. }
  34.  
  35. void startADC(){
  36.     ADCSRA |= (1<<ADEN);//ADC enable
  37.     ADCSRA |= (1<<ADSC); //strt conversion
  38. }
  39.  
  40. void stopADC(){
  41.     ADCSRA &= ~(1<ADEN);
  42. }
  43.  
  44. void initADC(){
  45.     ADCSRA =
  46.         (1<<ADATE)| //ADC Auto trigger enable
  47.         (0<<ADIE)| //ADC interrupt enable
  48.         (1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0); //ADC prescaler 111 -> 125 kHz przy 16MHz
  49.  
  50.     ADCSRB =
  51.         (1<<ADHSM)| //ADC high speed mode
  52.         (0<<MUX5)| //wybrór pinu ADC - 5.bit
  53.         (0<<ADTS3)|(0<<ADTS2)|(0<<ADTS1); //ADC Auto Trigger mode 000 -> free runing mode
  54.  
  55.     ADMUX =
  56.         (1<<REFS1)|(1<<REFS0)| //INTERNAL 2,56V
  57.         (0<<ADLAR)| //Right adjusted result
  58.         (0<<MUX4)|(0<<MUX3)|(0<<MUX2)|(0<<MUX1)|(1<<MUX0); //wybór pinu ADC 00001 -> ADC1
  59.  
  60.     //Wyłączanie input buffers dla pinów ADC
  61.    
  62.     DIDR0 =
  63.         (1<<ADC7D)|
  64.         (1<<ADC6D)|
  65.         (1<<ADC5D)|
  66.         (1<<ADC4D)|
  67.         (1<<ADC1D)|
  68.         (1<<ADC0D);
  69.  
  70.     DIDR2 =
  71.         (1<<ADC13D)|
  72.         (1<<ADC12D)|
  73.         (1<<ADC11D)|
  74.         (1<<ADC10D)|
  75.         (1<<ADC9D)|
  76.         (1<<ADC8D);
  77.        
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement