STM8 Aynı kod farklı çiplerde çalışmıyor.

Başlatan Mucit23, 25 Mart 2021, 22:43:35

Mucit23

Yahu Bu STM8S103F'lerde ilginç bir sorun yaşıyorum. PWM puls genişliği ölçmeye çalıştığım ufak minnak bir devrem var. ST'nin İnput Capture örneğini denedim. Ayarlar çok basit.

     
     TIM1_TimeBaseInit(16, TIM1_COUNTERMODE_UP, 55535, 0);
     TIM1_ICInit(TIM1_CHANNEL_1, TIM1_ICPOLARITY_RISING, TIM1_ICSELECTION_DIRECTTI, TIM1_ICPSC_DIV1, 1);
     TIM1_ITConfig(TIM1_IT_CC1, ENABLE);
     TIM1_Cmd(ENABLE);
     
     enableInterrupts();
Kesme Fonksiyonu bu şekilde. Yükselen Kenarda kesme oluşması lazım.

INTERRUPT_HANDLER(TIM1_CAP_COM_IRQHandler, 12)
{
  if(TIM1_GetITStatus(TIM1_IT_CC1))
  {
    GPIOB->ODR ^= (uint8_t)GPIO_PIN_5;
    TIM1_ClearITPendingBit(TIM1_IT_CC1);
  }
        
}

Elimde Eski bir STM8 Mini Boardu var.

Bu yazılım o kartta çalışıyor fakat Yeni satın aldığım STM8'mini kartlarında çalışmıyor.

Testi de şu şekilde yapıyorum. PD2 pinini main loop içinde toggle yapıyorum. PD2 aynı zamanda TIM1_CH1 yani PC6'ya bağlı. Buradan input capture yapması lazım.  Her yükselen kenarda kesmeye gitmesi lazım. Kartların birinde bu yazılım çalışıyor başka birinde çalışmıyor.

Bilmediğim bir şey mi var. Aynı yazılım hiçbir değişiklik yapmıyorum. Doğrudan yüklüyorum. Bilgisi olan varmı?

RaMu

Kesmeye her 10 veya 100 defa girildiğinde PD2 yi toggle yapıp gözlemlemeyi deneyebilirsin.
Pini çok hızlı konum değiştiriyorsan yetişemiyor olabilir.
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

M.Salim GÜLLÜCE


sarikayamusa

Başka kodlar başka portlarla iki kartta da aynı şekilde çalışıyor fakat sadece bu kodmu çalışmıyor? Eğer öyleyse çalışmayan kartta C6 portu uçmuş olabilir mi? Başıma geldi de.

saintcook1987

işlemci revizyonu farklı olabilir, aşağıdaki resimde gösterlen Rev koduna bakabilirsin, kullandığınız ürüne ait Datasheet te vardır.




serkan_48

Saygılarımla ben Serkan www.iklimlendirmesogutma.com

Mucit23

Sanırım Option Byte kısmı ile ilgili. Bazı MCU larda default olarak TIM çıkışları GPIO'lara bağlı. Yani Timeri'init edince otomatik çalışmaya başlıyor. Diğerlerinde Option Byte'larda AFR değerini değiştirince çalışmaya başlıyor. Sanırım Revizyon ile ilgili. Her halukarda Option Byte kısmında AFR değerinin ayarlanması lazım. İlk işlemciler beni yanıltmış.