Picproje Elektronik Sitesi

PICPROJE PROGRAMLAMA DERSLERİ => Arm Öğreniyoruz => Konuyu başlatan: z - 24 Aralık 2011, 00:52:36

Başlık: Ornek sorular problemler
Gönderen: z - 24 Aralık 2011, 00:52:36
Önümüzdeki hafta büyük çoğunluk kartlarına ulaşmış olacak.

ARM öğreniyoruz ana başlığında değişik alt başlıklar açtım.  Bunlardan https://www.picproje.org/index.php/topic,35721.0.html (https://www.picproje.org/index.php/topic,35721.0.html) başlığı üzerine çok fazla eğilemeyeceğim. Çünkü başlık altındaki konular tercüme gerektiriyor ve Rehber dokümanımız çok kalın.

Özellikle üzerinde durduğum başlık https://www.picproje.org/index.php/topic,35896.0.html (https://www.picproje.org/index.php/topic,35896.0.html) başlığı.

Kursumuzu takip edenlerden isteğim bu programları incelemeleri. Tekbir eksik nokta kalmayacak şekilde anlamadıkları yerleri tartışmaya açmaları.

Bu başlık altında kendinizi sınamanız için sorularım olacak. Sorulara muhakkak kafa yormanız gerekiyor.

Elinizden düşürmemeniz gereken iki dokuman var. Birisi REHBER diğeri HARD.

Örnek programları tek tek inceleyip kendi kendinize daima şu soruyu sormalısınız. 

Bu registere b
u adam niçin bu sayıyı yükledi?

Sınavlarımızda REHBER ve HARD açıktır. Bu dokümanlardan kopya çekmeyi öğrenmelisiniz.
Başlık: Ynt: Ornek sorular problemler
Gönderen: z - 24 Aralık 2011, 01:45:54
Soru 1

Aşağıdaki program CPU'nun hangi frekansda koşmasına neden olur? AHB ve APB frekansları nedir?

Yol gösterme: Rehber ve Hard dokumandan clock uretimle ilgili sayfaları bulun.
Reset ardından registerlerin almış olduğu default değerleri öğrenin daha sonra bu verileri yorumlayarak CPU clk frekansını tespit edin.


#include "STM32F4xx.h"   

void SystemInit()
{     
    RCC->AHB1ENR|=0x00000008;    // GPIOD donanımının clock sinyalini uygulayalım     
    GPIOD->MODER=0x55000000;     // GPIOD nin 15, 14, 13, 12 pinleri cikis tanimlandi (Ledler bu pinlerde)     
    GPIOD->OSPEEDR= 0xFFFFFFFF;  // GPIOD nin tum cikislari en yuksek hizda kullanacagiz 


int main()
{     
    while(1)   
      {     
         GPIOD->ODR= 0x0000F000;     // Ledler yansin     
         GPIOD->ODR= 0x00000000;     // Ledler sonsun   
       }
}

Başlık: Ynt: Ornek sorular problemler
Gönderen: z - 24 Aralık 2011, 17:24:13
Soru 2

STM32F4 Discovery kitimizde bildiginiz gibi 8Mhz Xtal bulunmaktadir.

CPU yu 23.500 Mhz (23500 Khz) de calistiracak SystemInit fonksiyonunu yazin.
Başlık: Ynt: Ornek sorular problemler
Gönderen: z - 24 Aralık 2011, 17:54:50
Soru 3

Programin tepesinde

#define Fcpu xxxx
#define Fahb yyyy
#define Fapb1 zzzz
#define Fapb2 www

seklinde tanim yapilmistir. Burada xxxx, yyyy, zzzz,wwww Hertz cinsinden frekans degerleridir.

CPU xtal ile beslenecektir.

Systeminit fonksiyonu CPU nun kosacagi frekans degerini Fcpu dan, AHB,  APB1 ve APB2 frekanslarini ise Fahb, Fapb1 ve Fapb2 den ogrenecek ve
gerekli register atamalarini yaparak clocklari uretecektir.

Eger define ile tanimlanan frekans degerleri gerceklenemiyorsa, CPU 16 Mhz de internal RC osilator ile calisarak sonsuz donguye girecek ve Ramin 0x20000000 adresine neden basarisiz olduguna ait 1 bytelik hata kodu yerlestirecektir.

Hata kodlari.

0.bit = 1 => Fcpu frekansini elde edemem
1.bit = 1 => Fahb frekansini elde edemem
2.bit = 1 => Fapb1 frekansini elde edemem
3.bit = 1 => Fapb2 frekansini elde edemem

Başlık: Ynt: Ornek sorular problemler
Gönderen: z - 24 Aralık 2011, 18:05:38
Soru 4

https://www.picproje.org/index.php/topic,35896.0.html (https://www.picproje.org/index.php/topic,35896.0.html)  adresinde  Timer 7 kullanarak Ledleri flash eden program (Interrupt kullanılmıyor)

basligini bulup sozkonusu programa goz atin ve ayni programi diger timerlarla yapin. (Mesela Timer 7 ile değil de Timer 1 ile vs...)

Kodunuzu derleyip calistirin ledlerin yanip sondugunu gorun.
Başlık: Ynt: Ornek sorular problemler
Gönderen: z - 25 Aralık 2011, 15:58:38
Soru 5

Mavi butona basildiginda interrupt ureten ve interrupt rutininde yesil ledi toggle eden program parcacigini yazin. Diger 3 led sonuk kalsin.




Başlık: Parmak yalamak
Gönderen: z - 25 Aralık 2011, 21:48:25
Soru 6

Parmaklarinizi yaladiginizda elektriksel iletkenligi yukselir. Parmaklarinizdan birisisyle 3v a diger parmaginizi da bir ADC girisine dokunursaniz ADC girisine voltaj uygulamis olursunuz.
Dokunma esnasinda parmaklarinizla pine yapacaginiz baskiyi ayarlayarak ADC giris pinindeki voltaji da ayarlamis olursunuz.

ADC donanimini harekete gecirip, ADC amacli kullanima uygun bir pin secip, bu pindeki voltaji okuyan, eger voltaj 0...1v araliginda ise yesil ledi yakan, voltaj 1..2v araliginda ise kirmizi ledi yakan eger voltaj 2 v dan yuksekse mavi leden yakan programi yazin.
Başlık: Ynt: Ornek sorular problemler
Gönderen: z - 27 Aralık 2011, 12:52:51
Soru 7

https://ccrma.stanford.edu/courses/422/projects/WaveFormat/

Yukaridaki linkte wav dosya formati verilmistir. Herhangi bir wav dosyasinin byte cinsinden sayisal degerlerini STM32F Discovery kitimize ait programimizin char wav[] tanimli arrayi icine elle kopyaladigimizi varsayin.

Yazacaginiz program, wav dosyanin header bilgilerinden yararlanarak donanim icin gerekli ayarlamalari yapsin ve DAC'in PA5 cikis pininden ses olarak ciksin.
Başlık: Ynt: Ornek sorular problemler
Gönderen: z - 30 Aralık 2011, 01:24:22
Soru 8


Kart üzerindeki mikrofondan algılayacagınız sesi işleyerek echo yapıp DAC2 den çıkın.

Ses ses ses es es s s s
Başlık: Ynt: Ornek sorular problemler
Gönderen: z - 30 Aralık 2011, 01:49:09
Soru 9


Dilimizdeki b, r,  k, ç, d,  t, ş, l, y, s, z, i, ü, ö, o, e, a, ı seslerini digitalleştirip C programınıza gömün.

Daha sonrada 1, 2, 3, 4, 5, 6, 7, 8, 9 rakamlarını DAC2 den sesli olarak çıkartın.
Başlık: Ynt: Ornek sorular problemler
Gönderen: z - 30 Aralık 2011, 01:58:00
Soru 10

Dokuzuncu soruyu çözdükten sonra bu programa yama yaparak PCde hiper terminalden

Baud Rate 1200
8 Data bit
1 Stop bit
No parity

parametreleri ile göndereceğiniz rakamları sesli olarak söyletin.
Başlık: Ynt: Ornek sorular problemler
Gönderen: z - 30 Aralık 2011, 02:01:26
Soru 11

Kartınızdaki mikrofondan aldığınız kısa bir konuşmayı kart üzerinde koşturacağınız yazılımla wav formatına çevirip PC ye

Baud Rate 4800
8 Data bit
1 Stop bit
No parity

parametreleri ile aktarıp bir dosyaya yazdırın ve PC deki wav player programınız ile bu dosyayı konuşturun.

Başlık: Ynt: Ornek sorular problemler
Gönderen: z - 30 Aralık 2011, 02:11:08
Soru 12

27.xxx Mhz de çalışan ucuz oyuncak arabalardan temin edin.

Kartınızın bir pininden 27 Mhz kare dalga çıkartarak bu sinyalle 27 Mhz'e akortlu rezonans devresini  RF transistör üzerinden sürün.

Yazacağınız bir programla arabaya ileri geri sağ sol hareketler yaptırın. (Kesinlikle arabanın vericisi kullanılmayacak)

Yol gösterme: Arabanın kendi vericisine baglantı yapıp öncelikle gönderilen verilerin formatını çözün ve kartaki programınızda buna ilişkin algoritmayı kurun.

Gerekiyorsa alıcının rezonans devresini 27Mhz e ayarlayın.
Başlık: Ynt: Ornek sorular problemler
Gönderen: z - 30 Aralık 2011, 02:19:50
Soru 13

Hem PC hem de kart için 16 Kanallı lojik analizör programı yazın.

Sample alma frekansı PC den bildirilsin. Kart, porttan okuyacağı verileri DMA ile rama taşısın. DMA de Timer ile senkronlansın.

Haberleşme bu aşamada seri port üzerinden yapılacaktır.