Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => ARM => Konuyu başlatan: GaGuLi - 26 Kasım 2016, 14:58:26

Başlık: Nasihat isteyen acemi bir ARM programcısına tavsiyesi olan ?
Gönderen: GaGuLi - 26 Kasım 2016, 14:58:26
Hayırlı günler değerli forum sakinleri. Sizden biraz nasihat almak istiyorum bana biraz nasihatte bulunun inşallah.

Hedeflediğim şey şuan ARM M serisi işlemciler (şuan kullandığım stm32f103) üzerinde elimden geldiği kadarıyla uzmanlaşmak. Bülent hocanın dersleriyle başladım C deki eksiklerimi gidermeye çalıştım,RCC,GPIO,ADC, USART, TIMER, PWM vs gibi uygulamaları anladım ve ilgili deneylerimi yaptım ama SPI, I2C, USB gibi konulara gelince tıkandım.

Datasheet vs. yabancı kaynakları okumakta zorlanıyordum biraz programlamaya ara verdim ve 9, 10 ay yoğun bir şekilde ingilizce çalıştım halende çalışıyorum.

Benim hedeflediğim şey hazır olan kodlara bakarak birşeyler devşirip kendi projeme eklemek değil, kullanacağım bir donanım veya başka bir çipin dökümanını alıp sadece ondan faydalanarak yapmak istediğim işlemleri gerçekleştirmek. Mesela siz bu dediğim şekilde bir çipi alıp dökümanına bakıp dışarıdan bir kütüphane yardımı olmadan kodlarınızı yazabiliyor musunuz ? Bunu yapabiliyorsanız benimde o seviyeye gelmem için izlemem gereken yol haritası nedir ? Bu konuda bir çıkmaz yaşıyorum şuan tavsiyelerinizi bekliyorum.
Başlık: Ynt: Nasihat isteyen acemi bir ARM programcısına tavsiyesi olan ?
Gönderen: bit01 - 26 Kasım 2016, 15:10:10
Takip.

Özellikle şu soruyu merak ediyorum.

"Mesela siz bu dediğim şekilde bir çipi alıp dökümanına bakıp dışarıdan bir kütüphane yardımı olmadan kodlarınızı yazabiliyor musunuz ?"
Başlık: Ynt: Nasihat isteyen acemi bir ARM programcısına tavsiyesi olan ?
Gönderen: GaGuLi - 26 Kasım 2016, 15:15:44
Mesela bir donanım aldınız atıyorum nrf24l01, baktınız bu çip için kimse uğraşıp kütülhane yazmamış. Bunu kullanmanız da gerek projeniz için. Ne yapardınız ?
Başlık: Ynt: Nasihat isteyen acemi bir ARM programcısına tavsiyesi olan ?
Gönderen: muhittin_kaplan - 26 Kasım 2016, 15:49:05
@GaGuLi
yeni başıma gelen bir olaydan yola çıkarak anlatayım, kendi payına çıkanı al.

BMP085 (barometre) ile alakalı bir iş yapmam gerekiyor. Bu sensör i2c ile iletişim sağlıyor. Kütüphanelere baktım, var ama yığınla extra koymuşlar zaten çalıştıramadım. Ozaman kendim yapayım dedim ve soyundum. (yanlış anlaşılmasın ;) )

Önce I2C yi hallettim. Lojik analizörle istediim veriyi gönderebiliyordum.
Sonra sensörü bağladım, vve datasını açtım. Hangi registerden ne okumam gerektiği yazıyordu. (Çok ing bilmeyede gerek yok aslında) Sıcaklık okumayı hallettim ilk etapta.
Basıçta devamlı yanlış hesap yapıyordum. Baktım olacak gibi değil, bir excel tablosu yaptım. datasındaki örneği yaptım ve sonucu sağladım. Sonra kendi verilerimi denedim, yanlışlığı buldum.

el cevap, Problemi çözmenin en kolay yolu onu bölmektir.
Başlık: Ynt: Nasihat isteyen acemi bir ARM programcısına tavsiyesi olan ?
Gönderen: GaGuLi - 26 Kasım 2016, 16:02:59
Anladım Hocam bende soyunuk vaziyette bekliyorum şuan (yanlış anlaşılmasın :))

SPI çalışma mantığını anladım işlemci tarafında pek sıkıntım yok. Ama bağladığım donanımın datasheet'ini inceliyorum(nrf24l01 için) register ve command açıklama kısımlarından olayı anlayamıyorum pek.

Mesela STM datasheet'lerinde bir birimi çalıştırmak için "Follow the procedure below to configure the SPI in master mode:" .. Procedure ... gibi bilgiler arıyorum sanırım :)

Başlık: Ynt: Nasihat isteyen acemi bir ARM programcısına tavsiyesi olan ?
Gönderen: muhittin_kaplan - 26 Kasım 2016, 16:10:57
Sample ve Uygulama Notları önemlidir, her nekadar "başka kodlara bakmadan" desende MCU kısmında bakman gerekir.

örnek, BMP085 için yazılan kütüphanede şu vardı, yapılması gereken 2^15 e bölmek. Kitap böyle demiş.
Kütüphanede
Sayı<<14 yaparak 14 kez sola döndürmüş
Bende sayı/32768 e böldüm (denedim hatamı bulmak için)

Sonra aklıma Acaba Hangisi işlemci için daha kolay sorusu geldi.


Başlık: Ynt: Nasihat isteyen acemi bir ARM programcısına tavsiyesi olan ?
Gönderen: GaGuLi - 26 Kasım 2016, 16:33:59
Ben daha o seviyede değilim işlemci çiple bir alış veriş içinde olsa az da olsa o kısımlara gelinir de .. Derler ya başlamak bitirmenin yarısı diye :)
Başlık: Ynt: Nasihat isteyen acemi bir ARM programcısına tavsiyesi olan ?
Gönderen: baran123 - 26 Kasım 2016, 16:41:23
Alıntı yapılan: GaGuLi - 26 Kasım 2016, 16:33:59
Ben daha o seviyede değilim işlemci çiple bir alış veriş içinde olsa az da olsa o kısımlara gelinir de .. Derler ya başlamak bitirmenin yarısı diye :)
@GaGuLi  Logic Analyzer almanı öneririrm. Çok güzel bir alet. Tam uğraşacağın işlere göre.
Aliexpressde oldukça ucuz.

Unutmadan ST nin örnek kodları mevcut bunları bulup oradan nasıl çevre birimi çalıştırılıp iletişim sağlanır bunu öğrenebilirsin.
Başlık: Ynt: Nasihat isteyen acemi bir ARM programcısına tavsiyesi olan ?
Gönderen: GaGuLi - 26 Kasım 2016, 16:43:01
Aldım hocam var. USART uygulamalarında epey kullandım. SPI için yapılmış örnekleri incelerken Analizör çıktılarından anlamaya çalışıyorum genelde zaten. O örnekleride inceledim hocam MCU tarafında eksiklerim olmasına rağmen yapılan işleri anlıyorum. Ama MCU ya bağladığım bir çip için tam bir fransızım :)
Başlık: Ynt: Nasihat isteyen acemi bir ARM programcısına tavsiyesi olan ?
Gönderen: JOKERAS - 26 Kasım 2016, 17:01:48
Alıntı yapılan: muhittin_kaplan - 26 Kasım 2016, 16:10:57
Sample ve Uygulama Notları önemlidir, her nekadar "başka kodlara bakmadan" desende MCU kısmında bakman gerekir.

örnek, BMP085 için yazılan kütüphanede şu vardı, yapılması gereken 2^15 e bölmek. Kitap böyle demiş.
Kütüphanede
Sayı<<14 yaparak 14 kez sola döndürmüş
Bende sayı/32768 e böldüm (denedim hatamı bulmak için)

Sonra aklıma Acaba Hangisi işlemci için daha kolay sorusu geldi.

Muhittin usta,eğer bölme sonucunda elde etmek istediğiniz değer bölme sayısına denk geliyorsa Shift işlemi
hem daha az yer kaplar, hemde çok daha hızlı çalışır.

Aksi halde derleyici "Bölme Modulünü" koda dahil eder.
Bu shift işlemine göre hem yavaş kalır,hemde  Kodu büyütür.

Bunu anlamak içim her iki türlü derleme yapın,bölme yaparak derlediğiniz kod daha fazla alan kaplar.
Bölme modülü küsüratları da yuvarlarıyor sanırım,yapılan her iş zaman gecikmesi oluşturuyor.
Başlık: Ynt: Nasihat isteyen acemi bir ARM programcısına tavsiyesi olan ?
Gönderen: Zoroaster - 26 Kasım 2016, 18:47:27
Akıllı derleyiciler zaten shift ile yapılacak bölmeleri optimizasyon açıksa siz böl deseniz de shift ile yapar.
Başlık: Ynt: Nasihat isteyen acemi bir ARM programcısına tavsiyesi olan ?
Gönderen: muhittin_kaplan - 26 Kasım 2016, 18:58:23
konu dağılmasında (yarın deneyeceğim hepsini)
sayı/2^15 (bu datasındaki)
sayı>>14 (bu 3.parti kütüphanedeki)
sayı/32768 (hatayı bulmak için benim yaptığım)

Bunları yarın deneyerek kaç cycle tuttuğuna bakacağım.
(ben eğer ikinin katlarında bölme çarpma varsa sağa sola döndürmeyi tercih ediyorum.)
Başlık: Ynt: Nasihat isteyen acemi bir ARM programcısına tavsiyesi olan ?
Gönderen: JOKERAS - 26 Kasım 2016, 19:08:54
Evet ZorO usta,derleyiciler akıllı.
Acaba aynı durum sağa shift ( çarpma ) içinde geçerlimi?
Başlık: Ynt: Nasihat isteyen acemi bir ARM programcısına tavsiyesi olan ?
Gönderen: mufitsozen - 26 Kasım 2016, 19:15:19
Alıntı yapılan: JOKERAS - 26 Kasım 2016, 19:08:54
Evet ZorO usta,derleyiciler akıllı.
Acaba aynı durum sağa shift ( çarpma ) içinde geçerlimi?

evet
Başlık: Ynt: Nasihat isteyen acemi bir ARM programcısına tavsiyesi olan ?
Gönderen: muhittin_kaplan - 26 Kasım 2016, 19:20:34
sağa böler, sola çarpar.
Başlık: Ynt: Nasihat isteyen acemi bir ARM programcısına tavsiyesi olan ?
Gönderen: JOKERAS - 26 Kasım 2016, 19:25:43
Sağa shift işleminin çarpma yaptığını biliyorum.
Sormak istediğim,derleyici shift esnasında tam bölünmeyen sayılar için gerektiğinde
bölme modulünü koda dahil ederken aynı dahil etme durumunu çarpma içinde yapıyormu?


Başlık: Ynt: Nasihat isteyen acemi bir ARM programcısına tavsiyesi olan ?
Gönderen: Zoroaster - 26 Kasım 2016, 20:09:16
Keil acaip atraksiyonlar yapıyor.
Başlık: Ynt: Nasihat isteyen acemi bir ARM programcısına tavsiyesi olan ?
Gönderen: JOKERAS - 26 Kasım 2016, 20:28:24
Alıntı yapılan: Zoroaster - 26 Kasım 2016, 20:09:16
Keil acaip atraksiyonlar yapıyor.
Hah,tam adamına dedin yani ZorO usta.
Ben ne anlarım Keil'den,kurulu bile değil. Daha XC'yi çözemedimki Keil'i çözeyim:)
Yavaş yavaş,aceleye gerek yok.
Bir gün benim olacaksın Istanbuuul misali, bir gün senin ciğerini sökeceğim Kel Keil µVision:)
Derleyicilerin Sentaks ve Semantik analizlerinde farklılıklar varmı acaba?

ARM işlemciler ile PIC işlemciler arasında,mimari olarak çok fark varmı?
Bir de onları öğrenmek gerekecek,yok registeri,yok osilatörü,yok memorisi falan.
Bunlar beni öldürecek,yav ne zor işler bunlar.
Bindik bir alamete gedoyoz Gıyamete:)
Başlık: Ynt: Nasihat isteyen acemi bir ARM programcısına tavsiyesi olan ?
Gönderen: GaGuLi - 26 Kasım 2016, 20:31:01
@Zoroaster @JOKERAS ustalarım, başlığı farklı mecralara kaydırdığınız için bana bir nasihat borçlusunuz ona göre  ;)
Başlık: Ynt: Nasihat isteyen acemi bir ARM programcısına tavsiyesi olan ?
Gönderen: JOKERAS - 26 Kasım 2016, 20:40:19
Alıntı yapılan: GaGuLi - 26 Kasım 2016, 20:31:01
@Zoroaster @JOKERAS ustalarım, başlığı farklı mecralara kaydırdığınız için bana bir nasihat borçlusunuz ona göre  ;)
Pardon GaGuLi usta,
Bazen farkına varmadan konular farklı mecralara kayabiliyor.
Bu konuda size nasihat veremem,zira hiç bir fikrim yok.
Ama size ilaç olacak çok arkadaş var bu forumda.
Başlık: Ynt: Nasihat isteyen acemi bir ARM programcısına tavsiyesi olan ?
Gönderen: RaMu - 26 Kasım 2016, 22:48:38
Kaydırmayı illa 2nin katıyla çarpmada kullanılabilir diye düşünmemek lazım,
Misal RegX i 3 ile çarpacaksan
Temp = RegX bir sola kaydır
Sonuc = Temp + RegX

Ayrıca sağa kaydırarak 2nin katlarına bölme işleminde
kaydırıp attığınız bitleri
atmayın bir register a alıp bakın :)
ne göreceksiniz acaba.
Tabiki bunu tam bölünmeyen bir sayıyı bölmede deneyin.



@GaGuLi helal olsun bu kadar azimle uğraşmışsın,
istersen datasheet okuma yorumlama işini ben anlatırım sana,
ama yazmakla olacak iş değil.

Alıntı yapılan: GaGuLi - 26 Kasım 2016, 14:58:26
...
Mesela siz bu dediğim şekilde bir çipi alıp dökümanına bakıp dışarıdan bir kütüphane yardımı olmadan kodlarınızı yazabiliyor musunuz ?
...
Asm yazdığımda bunu yapmak zorunda olduğum için,
veya kütüphanesi olmayan bir şey kullandığımda gerektiğinden,
veya sevdiğim için,
doğal olarak evet.
Başlık: Ynt: Nasihat isteyen acemi bir ARM programcısına tavsiyesi olan ?
Gönderen: GaGuLi - 26 Kasım 2016, 23:16:34
Teşekkür ederim hocam yardımlarınız için. Bu hazırcılık işine bir son vermem gerektiğini hissettim bismillah deyip kolları sıvadım. Tüm yardım ve yönlendirmelerinizi bekliyorum hocam, elbette bir konu üzerinde anlatımlarınız olur ama ondan ziyade bu ilk aşamalarda sanki daha çok tavsiye ve yönlendirilmeye ihtiyaç duyuyor gibiyim. Siz bana kilit noktaları gösterin ben onları tırmalayayım sonra diyim ki hocam şunu anlamadım ozaman anlatın bana, hazır olmasın yani :)
Başlık: Ynt: Nasihat isteyen acemi bir ARM programcısına tavsiyesi olan ?
Gönderen: Faruk53 - 27 Kasım 2016, 02:09:11
@GaGuLi hocam Allah kolaylık versin diyim öncelikle :) ben bu forumdan çok şey öğrendim. ve buna istinaden elimden geldiğince neler yaptığımı nasıl yaptığımı bi anlatmak isterim. öncelikle kullanıcağın derleyiciye ve kullanıcağın dile hakim olduktan sonra gerisi gerçekten geliyor.
ben C ile yazıyorum ama tek başına C de bazı noktalarda yetmiyor asm ye de ufaktan hakim olmak gerekiyor. istediğin şey işlemciyle kullanıcağın bütün donanımların kütüphanesini en baştan herşeyiyle kendin yazabilmek ki insana ciddi oranda bi özgüven ve tat veriyor :) ama bu noktaya gelmek gerçekten biraz emek ve azim istiyor ki bu da sende var o kadar uğraşmışsın çabalamışsın devam da et aynen bu şekilde.
işlemcinde kullanıcağın dahili donanımlarla ilgili bütün kütüphanelerin hazırsa zaten bir çok şeyi halletmişsindir demektir. çünkü asıl önemli olan o kısımları eksizsiz oluşturabilmek. daha sonra belli bir malzemeyle uğraşırken kesinlikle ilk başta o malzemeyle ilgili neler yapılmış bi araştırman gerekiyor. Datasheetler ahhh o datasheetler :) sabahlara kadar kafayı yedirtir bazen insana :) sana şöyle bir örnek vermek istiyorum. Mesela bir RF modülü olan RFM96 için konuşalım. SPI haberleşme protoklünü kullanıyor. önce tabiki datasheetini indirip bi bakıyoruz neler var neler yok. SPI haberleşmesi belli adreslerdeki verilere ulaşarak orada işlemler yapmamıza olanak sağlıyor ve gerçekten hızlı bir haberleşme. Daha sonra Register Table Summary denen başlık... Modülün hangi adresinde neler var, hangi adrese erişip ne yapabiliyorsun. aslında bu işlemcilerimiz için yazdığımız donanımsal kütüphanelere benzer şeyler. aslına bakarsan benim önerim önce bugüne kadar yazılan yapılan uygulamaları incelemen. birde bu benim fikrim tabi yazılan kütüphaneler sabittir. yani 'RegOpMode'(0x01) adresine ulaştığında yapıcağın şey sabittir. Ama main programında yapıcağın şeyler çok değişkenlidir. yani biri mat1 problemiyken diğeri diferansiyel denklemdir. mat1 probleminde kimisi değişkeni x der y der ama çözüm yolu 1 tanedir. diğerinde ise çözüm yolu çoktur. yani demem o ki oluşturduğun kütüphaneyi 1 kere yazıcaksın ve o yazdığın muhakkak birilerinin yazdığıyla aynı olcaktır. ama main programın tamamen sana özgü olcaktır. asla ama asla hazıra kon demiyorum ki herkes gibi buna bende karşıyım. belli bir süre yapılanları incelemeden mantığı oturmaz sadece onu savunuyorum. işlemcini,derleyicini ve kullandığın dili iyi tanıdıktan sonra üstesinden gelemiceğin proje olmaz inşallah. Allah yardımcın olsun hocam :)