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.
(https://xeerob.com/wp-content/uploads/2019/11/stm8-s103f3p6-mini-development-board-400x400.jpg)
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ı?
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.
Kart dizaynı aynı olmayabilir mi?
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.
işlemci revizyonu farklı olabilir, aşağıdaki resimde gösterlen Rev koduna bakabilirsin, kullandığınız ürüne ait Datasheet te vardır.
(https://i.ibb.co/S7cT02j/Ekran-g-r-nt-s-2021-03-26-072420.png) (https://ibb.co/S7cT02j)
Kartlar nereden temin edildi?
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ış.