23 Eylül 2019, 10:45:09

Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d


STM8 ADC Çoklu kanal Rank Ayarı nasıl?

Başlatan Mucit23, 07 Eylül 2019, 22:12:41

Mucit23

Selamlar

STM8S103F3 çipiyle 2 kanal ADC okumam lazım. D2 ve D3 yani Channel3 ve Channel4 pin olarak müsait. Bu iki girişten   Continious modda örnek almak istiyorum. Hazır birkaç örnek buldum.

Bulduğum örnekleri denedim.
void ADC1_Extinit(void){

  
GPIO_Init(GPIODGPIO_PIN_2GPIO_MODE_IN_FL_NO_IT);
  
GPIO_Init(GPIODGPIO_PIN_3GPIO_MODE_IN_FL_NO_IT); 


ADC1_DeInit();

// Single conversion mode, up to channel 7 (see scan mode below)

 
ADC1_Init(ADC1_CONVERSIONMODE_SINGLE

ADC1_CHANNEL_7ADC1_PRESSEL_FCPU_D2

ADC1_EXTTRIG_TIMDISABLE

ADC1_ALIGN_RIGHT

ADC1_SCHMITTTRIG_ALLDISABLE);

// Scan mode from channel 0 to 7 (as defined in ADC1_Init)

ADC1_ScanModeCmd(ENABLE);

// Enable the ADC: 1 -> ADON for the first time it just wakes the ADC up

ADC1_Cmd(ENABLE);
}

ADC ayarlarını biraz anladım gibi Fakat rank ve kanal ayarlarını nasıl yapacağımı çözemedim. Bu örnekte Single modda 8 kanal taranıyor. GPIO lardan ben sadece D2 ve D3'ü kullanacağım için bu iki girişi analog moda aldım.

Okurken aşağıdaki gibi okuyorum

      ADC1_StartConversion();
      while ( ADC1_GetFlagStatus(ADC1_FLAG_EOC) == RESET );

      for (i=0; i<8; i++)
         adcval = (unsigned int)ADC1_GetBufferValue(i); // 10 bit
      ADC1_ClearFlag(ADC1_FLAG_EOC);

Kodu çalıştırdığımda adcval[3] ve adcval[4] değerleri benim girişlerime ait ADC değerlerinden oluşuyor. Debugda bunu görebiliyorum. Fakat diğer değerler float yani rastgele değişiyor. Bana lazım değil zaten ama Kanal 3 ve Kanal 4'ü nasıl Buffer 0 ve Buffer 1'e ayarlayacağım çözemedim. Manual'de çoklu kanal anlatılmış ama şu rank olayını anlayamadım.

Daha önce deneyen oldumu bunu?

iboibo

İlgili kanalın ilgili hafızası var oraya yazıyor, değişmiyor yani. Bir de  çoklu adc okumasında eğer adc reg 5 ayarlarsan mecburren 0 dan 5 e kadar tarıyor sadece 3..5 kanal olsun diyemiyorsun.
Tabi manuel olarak mümkün kendin tek tek istediğin kanalı okuyabilirsin.