Go Down

Topic: Problemas para leer dos sensores ADC con interrupciones (Read 495 times) previous topic - next topic

Stop_Me

Jan 27, 2018, 08:14 pm Last Edit: Jan 29, 2018, 01:25 am by surbyte Reason: Errores y códigos van con etiquetas </>
hola buen día

Es para comentarles si podrían ayudarme con un problema que tengo en leer dos sensores. Los cuales lee tensión y corriente, pero el codigo que tengo solo me lee una entrada analógica no se como podria hacer para cambiar el canal ya que solo se lee ADC. Este es el codigo.

Code: [Select]
const byte adcPin = 0;  // A0

const int MAX_RESULTS = 100;

volatile int resultsV [MAX_RESULTS];
volatile int resultsI [MAX_RESULTS];

volatile int resultNumber;

void setup ()
 {
 Serial.begin (115200);
 Serial.println ();

 // reset Timer 1
 TCCR1A = 0;
 TCCR1B = 0;
 TCNT1 = 0;
 TCCR1B = bit (CS11) | bit (WGM12);  // CTC, prescaler of 8
 TIMSK1 = bit (OCIE1B);
 OCR1A = 338;    
 OCR1B = 338;   // 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
//  ADCSRA |= (1 << ADPS1) | (1 << ADPS0);    // 8 prescaler for 153.8 KHz
 ADMUX = bit (REFS0) | (adcPin & 7);
 ADCSRB = bit (ADTS0) | bit (ADTS2);  // Timer/Counter1 Compare Match B
 ADCSRA |= bit (ADATE);   // turn on automatic triggering

}

// ADC complete ISR
ISR (ADC_vect)
{
   resultsV[resultNumber++] = ADC;

  //resultsI[resultNumber++] = ADC;

   if(resultNumber == MAX_RESULTS)
   {
     ADCSRA = 0;  // turn off ADC
   }
}

EMPTY_INTERRUPT (TIMER1_COMPB_vect);

void loop () {

 while (resultNumber < MAX_RESULTS)
   { }

 for (int i = 0; i < MAX_RESULTS; i++)
 {
Serial.print( resultsV);
   Serial.print("   ");
Serial.print( resultsI);
 Serial.println();
 }
 resultNumber = 0;
 ADCSRA =  bit (ADEN) | bit (ADIE) | bit (ADIF)| bit (ADPS2) | bit (ADATE);  
  // turn ADC back on
}

surbyte

Te pedi cuando me enviaste el privado que postearas usando las normas del foro y lo haces de este modo?
Ahora editalo por favor!

Lee las Normas del foro
Luego ve a More (abajo a la derecha), click, luego Modify y estas en modo EDICION.
Si tienes que editar un código -> Selecciona todo el código y click en </> arriba del emoticon.
Si tienes que editar un enlace -> Selecciona el enlace. Copialo al portapapeles. Click en el eslabón (ver abajo) y sigue los pasos que habras visto al leer las normas.  
Las imagenes deben verse, si usas un adjunto con botón derecho del mouse capturas el enlace de la imagen y luego cuando editas lo pegas con la etiqueta de imagen

Go Up