STM32F407 Cortex M4 şamataları

Başlatan bunalmis, 16 Ekim 2011, 17:14:50

mozkan87

O bilgiler zaten forum üyelerine açık ki.

eistain_54

Alıntı yapılan: mozkan87 - 26 Ekim 2011, 16:07:45
O bilgiler zaten forum üyelerine açık ki.
muhakkak...ben şakasına söyledim ama ezberlemeem gereken kısmı anlamadım?
Her gün 24 altın verilirken bunun için kime şükredersin ey ademoğlu!?!

z

Alıntı yapılan: eistain_54 - 26 Ekim 2011, 16:11:36
muhakkak...ben şakasına söyledim ama ezberlemeem gereken kısmı anlamadım?

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

Bu linkte yazdıklarımı oku. Özellikle Bla Bla Bla Bla renkli karakteri olan yazıları.

Verdiğim linkte, kitaplardaki gibi bir cansıkıcı anlatım yok. Okuyucunun mantık yürüterek kafasında bir şeyler şekillendirmesini hedefledim.

(Zaten kitap yazacak kadar C'ye hakim değilim.)
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

gambit1244

arkadaşlar
c projelerinde timer ve interrupt kullanılmış programlar var
bununla ilgili anlatım biyerde yapıldıda  bennmi bulamıyorum yoksa ileridemi yapılıcak
[email]tufan_ozbek@hotmail.com[/email] Yesterday is history. Tomorrow is a mystery. Today is a gift aslında bütün mesele bu.

mozkan87

Arkadaşlar interrupt ile ilgili temel şeyleri anlatan bir döküman var mı? İnterrupt aktif edildikten sonra interrupt handler nasıl oluşturulur bunun gibi temel şeyleri anlatan herhangi bir döküman varsa paylaşırsanız sevinirim. İlla m4 ile ilgili olması şart değil. Teşekkürler.

z

@eistain_54

Nasıl hazırmısın yoksa bir gün daha bekleyelimmi?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

eistain_54

hocam takıldığım yerler var akşşama biter...
Her gün 24 altın verilirken bunun için kime şükredersin ey ademoğlu!?!

eistain_54

Hocam anlamadıım iki konu var...
structure ve union
pointer
Her gün 24 altın verilirken bunun için kime şükredersin ey ademoğlu!?!

omereliusuk

onları ben de çözemedim. basit bir anlatım olsa ne güzel olur...

z

Alıntı yapılan: mozkan87 - 27 Ekim 2011, 22:38:58
Arkadaşlar interrupt ile ilgili temel şeyleri anlatan bir döküman var mı? İnterrupt aktif edildikten sonra interrupt handler nasıl oluşturulur bunun gibi temel şeyleri anlatan herhangi bir döküman varsa paylaşırsanız sevinirim. İlla m4 ile ilgili olması şart değil. Teşekkürler.


Orneklerle anlatmiyor fakat register aciklamalari asagidaki dokumanlarda.

http://infocenter.arm.com/help/topic/com.arm.doc.ddi0439b/DDI0439B_cortex_m4_r0p0_trm.pdf

http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/PROGRAMMING_MANUAL/CD00228163.pdf

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0553a/CIHIGCIF.html

Ornek programlar kismindaki NVIC ayarlamalarini anlatacagiz. Simdilik frene bastik.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

taneryilmaz

Alıntı yapılan: bunalmis - 23 Ekim 2011, 23:22:46
Timer 7 ve interrupt kullanarak yanıp sönen led programı

int main()
{
    RCC->APB1ENR|=0x00000020;         // Timer7 CLK'u aktif edelim (84 Mhz)
  }

@bunalmış hacam biraz geriden geliyoruz galiba kusura bakmayın bir sorum olacaktı
yukarıdaki kodda RCC->APB1ENR|=0x00000020 i int main() de kullandığınız için mi timer7 yi aktif etti biz bunu
void SystemInit() de kullandığımızda ( RCC->APB1ENR|=0x00000020 ) GPIOF i aktif ediyor doğru mu anlamışım ?





z

#311
Alıntı Yapvoid SystemInit() de kullandığımızda ( RCC->APB1ENR|=0x00000020 ) GPIOF i aktif ediyor doğru mu anlamışım ?

Bu yanlış, çünkü GPIOF clock'u RCC_APB1ENR değil RCC_AHB1ENR açıp kapatıyor.

Olay kodu SysInit yada main içine yazmakla alakalı değil. İstediğin yere yaz farketmez.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

taneryilmaz

Alıntı Yap
Olay kodu SysInit yada main içine yazmakla alakalı değil. İstediğin yere yaz farketmez.
Hımm.. @bunalmış hocam düzeltmeniz için teşekkür ederim. şimdi aynı konu ile başka bir sorum olacaktı
adım adım koşturarak led yakmaya çalıştığımız program ben de sorunsuz olarak çalıştı.

Timer 7 kullanarak Ledleri flash eden program (Interrupt kullanılmıyor) bu programı derleyip adım adım koşturmak isteyince
1. si
Alıntı Yap
RCC->APB1ENR|=0x00000020; // Timer7 CLK'u aktif edelim (84 Mhz)
    TIM7->CR1=0x0080;                 // Otomatik Reload
    TIM7->PSC =42000;                 // Prescaler değerimiz 42000, Count frekansimiz = fCK_PSC / (Yuklenen Deger + 1) 84E6 / (42000) = 2000 Hz
    TIM7->ARR =2000;                   // Counter, Decimal 2000 olunca basa donsun 1 sn demek
    TIM7->CR1|=0x0001;                // Counter Enable
bu kısım ı keilde gözlemlediğimde;
ADIM ADIM YUKARIDAKİ SATIRLARI İŞLİYOR AMA TIM7 DE FARKLI (AŞAĞIDAKİ) DEĞERLERİ  GÖRÜYORUM
TIM7_CR1=0x00000080
TIM7_PSC=0x0000A410
TIM7_ARR=0x000003E8
TIM7_DIER=0x00000001
TIM7_CR1=0x00000081

  2. si
Alıntı Yapwhile(1)
      {
         if (TIM7->CNT > 1000) GPIOD->ODR= 0x0000F000;     // Ledler yansin
         else GPIOD->ODR= 0x00000000;                            // Ledler sonsun
      }
döngüye girdiğinde ledleri yakmıyor. d portunda hiçbir değişiklik olmuyor.

Aceba nerede yanlışlık yapıyorum ?

madpic

#313
Bende bu satırda takıldım
  TIM7->DIER=0x0001;                     // Update Int enable

burada timer7 için int aktif edilmiş
NVIC->ISER[1] = 0X00800000;        // NVIC de Timer 7 interrupta izin verelim

burada da nvic'de de izin verilmekte demekki farklı şeyler
şimdi rehber hard ve generic user gide'ye göz attım
NVIC->ISER[0] dan NVIC->ISER[7] ye kadar 8 registerler var ama bununla ilgili açıklayıcı bir bilgi göremedim yada gözden kaçırdım.
peki   NVIC->ISER[1] = 0X00800000; deki 0X00800000 değeri neye istinaden verildi ve
NVIC->ISER[1] in TIM7 ye ait olduğunu nereden anladık.

Ayrıca
TIM7 ile ilgili kodları debug ettiğimde TIM7_CNT de değer değişimi gözlemleyemiyorum.
keille alakalı bir durum mu yoksa benimlemi

NaMcHo

#314
Reference Manual sayfa 196'da kesmeler için position numaraları var.Diyelimki siz position numarası 23 olan EXTI9_5 kesmesini aktif edicekseniz
NVIC->ISER[0]=(1<<23) yazarak ISER registerındaki 23.biti set edersiniz, yani NVIC->ISER[0] da position numarası 0 olandan 31 olana kadar olan kesmeler kontrol edilir.
NVIC->ISER[1] ise 32'den 63'e kadar olanlar kontrol edilir.Örneğin position numarası 41(41-32=9) olan RTC_Alarm kesmesini aktif edicekseniz NVIC->ISER[1]=(1<<9) yazarak aktif edersiniz.