MikroC ile STM32F103C8 Timer_7 denemesi

Başlatan mg1980, 08 Aralık 2016, 17:26:03

mg1980

Sayın Arkadaşlar;
Mikroc ile STM32F103C8'in programlanması ile ilgili iki sorum olacak. Sayın Lukeskywalker ve Selim Koç hocalarımın kitabından uyarlamayla bir şeyler yapmaya çalışıyorum. Güzel şeyler yapabildim ama Timer_7 kesmesi uygulamasında sonuç alamıyorum. 1 saniyede kesme oluşturup sonucu görmek istiyorum ama program kesmeden çıkamıyor. Kesme ayarlarını hocalarımın kitabı ve TimerCalculatör ile oluşturdum.Program çalışıyor ama kesmeden çıkmıyor.while döngüsü Led'i yakıp söndürürken kesme oluştuğunu kitin üzerindeki ledin yanmasıyla görüyorum ama döngüye uygun olarak sönmesi gerekirken sönmüyor.Neden olabilir ?
Diğer sorularım:
1-Clock ayarlarını kendim uğraşarak  8 Mhz_Harici_PLL seçimiyle "PLL multiplication factor" ayarında..clockx5 olarak (en fazla) çalıştırdım.Bu durumda 5000 ms.gecikme yaklaşık 1 saniye sürecine tekabül ediyor.Bunu anlamadım. Aşağıdaki linkte Lukeskywalker hocamın ayarlarını görünce onu yükledim. Bu ayarlarda clockx9 yapılmış.Bu durumda kod hiç çalışmıyor.
2- Ben bu clock ayarlarıyla bir kaç gün uğraştım.Bu arada  "Set and cleared by software...." ayarı bölümünde denemeler yaparken  'SYSCLK divided by 256' seçeneğini seçince  Discovery kit üzerinden yüklemede "Target command error!" uyarısıyla kalakaldık. Discovery  STM32F103C8'i artık görmüyor. Başka bir çipi yukardaki ayarı vermeden programlayabiliyorum. Bu çip artık çöp müdür?
İlgilenecek arkadaşlara şimdiden teşekkürler.
//STM32F103C8

void kurulum()                      //******************************************
{

  RCC_APB1ENR.TIM7EN=1;      //Timer7'ye clock veriliyor.?????????
  TIM7_CR1.CEN=0;           //Tim7 ARR değeri otomatik yüklensin.
  TIM7_PSC=124;             //Prescaler değerimiz
  TIM7_ARR=63999;        // Ulaşınca başa dönsün= 1 sn.
  NVIC_IntEnable(IVT_INT_TIM7); //NVIC'de Tim7 interrupta izin verelim.
  TIM7_DIER.UIE=1;     // ARR her yüklendiğinde kesme oluşsun.
  TIM7_CR1.CEN=1;                //Timer7 saymaya başlasın.


}

void  Timer7_interrupt() iv IVT_INT_TIM7 //Timer_7_kesmesi()iv IVT_INT_TIM7 ics ICS_AUTO  //**************************
{
   TIM7_SR.UIF=0;    // Timer7  kesme bayrağı temizlendi.

   //GPIOC_ODR.B13=~GPIOC_ODR.B13;   //  ÇALIŞMIYOR ???????
   GPIOC_ODR.B13=1;  // ÇALIŞIYOR....KESMEDEN ÇIKMIYOR????????????????????
}

void main()
{
 GPIO_Digital_Output(&GPIOC_ODR,_GPIO_PINMASK_13);
 GPIO_Digital_Output(&GPIOB_ODR,_GPIO_PINMASK_0);
 kurulum();



while(1)
{

   GPIOC_ODR.B13=0;
   GPIOB_ODR.B0=1;

   Delay_ms(5000);
   GPIOB_ODR.B0=0;
   Delay_ms(5000);
}
} 


https://www.picproje.org/index.php/topic,63831.0.html

Zoroaster

Seytan deliginden kacti.

mg1980

Hocam vallahi TimerCalculatör hiç itiraz etmedi.Ayrıca derleyici de .Datasheet pin bağlantılarına bakarken ADC IN 7 ile karıştırıp baltayı taşa vurduk galiba. Peki Tim_7 karşılığı nedir ?

Zoroaster

Seytan deliginden kacti.

mg1980

Hocam sağolun, örneğin Tim1'le aynı işi yapabilir miyim? Bir de diğer sorularıma cevabınız var mı ?

LukeSkywalker

Hocam proje dosyanızı buraya yüklerseniz bakalım.

mg1980

Hocam,
z hocamın ikazı ile Tim_2 yapınca olay çözüldü. Size projeyi göndermek istiyorum ancak nasıl olacağını bilmiyorum desem kusura bakar mısınız bilmem.Tarif edebilirseniz göndereyim. Biraz uğraştım beceremedim. Şayet yapamazsam TimerCalculator'da Tim_1 yok.Buna bir açıklamanız var mıdır ?
Diğer konu da ilk mesajımda belirttiğim çipin çöp olma durumu !.Saygılar.