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
103C8'de Timer 7 ne arasın.
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 ?
Sadece Timer 1,2,3,4 var. Bir de SysTick.
http://www.st.com/content/ccc/resource/technical/document/datasheet/33/d4/6f/1d/df/0b/4c/6d/CD00161566.pdf/files/CD00161566.pdf/jcr:content/translations/en.CD00161566.pdf
Hocam sağolun, örneğin Tim1'le aynı işi yapabilir miyim? Bir de diğer sorularıma cevabınız var mı ?
Hocam proje dosyanızı buraya yüklerseniz bakalım.
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.