Autor Tema: Alternar el ADC (STM8)  (Leído 1623 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado ituarte

  • PIC12
  • **
  • Mensajes: 69
Alternar el ADC (STM8)
« en: 26 de Abril de 2012, 14:36:05 »
Hola tengo 3 sensores conectados a 3 pines consecutivos (PIN_0 ; PIN_1; PIN_2) ,  el primer sensor de temperatura me funciona correctamente, pero me gustaria que despues de un Delay de 3 segundos el adc leyera el PIN_1 y mostrara esos resultados y 3 segundos despues del PIN_2 y asi sucesivamente.

El codigo es el siguiente:
Código: [Seleccionar]
// Port B[0,1,2]=floating input no interr
// Analogic inputs
GPIO_Init(GPIOB, GPIO_PIN_0, GPIO_MODE_IN_FL_NO_IT);
GPIO_Init(GPIOB, GPIO_PIN_1, GPIO_MODE_IN_FL_NO_IT);
GPIO_Init(GPIOB, GPIO_PIN_2, GPIO_MODE_IN_FL_NO_IT);
//Init ADC
ADC1_Init(ADC1_CONVERSIONMODE_CONTINUOUS ,
ADC1_CHANNEL_0 , ADC1_PRESSEL_FCPU_D2, ADC1_EXTTRIG_TIM,
DISABLE, ADC1_ALIGN_RIGHT,ADC1_SCHMITTTRIG_CHANNEL1,
DISABLE);

// Show in LCD
while(1)
{
ADC1_StartConversion();
while(!(ADC1->CSR & 0x80 ));
temper=ADC1_GetConversionValue();
tempValue=((temper*300)/614)-59.97;
tempValueF=((tempValue*1.8)+32);

GPIO_WriteHigh(GPIOA,GPIO_PIN_3);   // LED ON
LCD_CLEAR_DISPLAY();
LCD_printstring("Temperature\n");
LCD_2ndROW(); // Second line of LCD
LCD_printf("%u\n",tempValue);
LCD_printchar(0xdf); // Character º
LCD_printf("C \n");
LCD_printchar(0x2F); // Character /
LCD_printchar(0x2F);
LCD_printf(" %u\n",tempValueF);
LCD_printchar(0xdf);
LCD_printf("F  \n");
GPIO_WriteLow(GPIOA,GPIO_PIN_3); // LED OFF
Delay (1400);

}

Solo he inicializado el channel0 porque no se si inicializando los canales 1 y 2 al hacer el ADC1_GetConversionValue() que valor me tomara,

Alguna idea??
« Última modificación: 26 de Abril de 2012, 22:58:55 por Suky »

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Alternar elADC
« Respuesta #1 en: 26 de Abril de 2012, 16:31:07 »
Que microcontrolador? Que compilador?  :?

En PICs debes iniciar los 3 pines como analógicos, luego seleccionar el canal, convertir, leer. Estos últimos pasos para cada pin.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado ituarte

  • PIC12
  • **
  • Mensajes: 69
Re: Alternar elADC
« Respuesta #2 en: 26 de Abril de 2012, 20:44:30 »
Micro= STM8S207R8
Compilador = Stvdebug

Los 3 pines ya estan como analogicos
Código: [Seleccionar]
// Analogic inputs
GPIO_Init(GPIOB, GPIO_PIN_0, GPIO_MODE_IN_FL_NO_IT);
GPIO_Init(GPIOB, GPIO_PIN_1, GPIO_MODE_IN_FL_NO_IT);
GPIO_Init(GPIOB, GPIO_PIN_2, GPIO_MODE_IN_FL_NO_IT);

El canal lo selecciono con este
Código: [Seleccionar]
//Init ADC
ADC1_Init(ADC1_CONVERSIONMODE_CONTINUOUS ,
ADC1_CHANNEL_0 , ADC1_PRESSEL_FCPU_D2, ADC1_EXTTRIG_TIM,
DISABLE, ADC1_ALIGN_RIGHT,ADC1_SCHMITTTRIG_CHANNEL1,
DISABLE);

Inicio el conversor

Código: [Seleccionar]
ADC1_StartConversion();
pero para leer...no se como seleccionar que canal leer


Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Alternar elADC
« Respuesta #3 en: 26 de Abril de 2012, 22:58:37 »
Como dije eso era para PICs, para STM8 ni idea
No contesto mensajes privados, las consultas en el foro


 

anything