C ile MSP430 Programlama Dersleri

Başlatan fatihinanc, 20 Eylül 2010, 13:32:46

fatihinanc

Selamlar,

Bu structre tanımlamaları IAR sürümüne göre değişiyor.  Benim o dökümantasyonları yaptığım zamanlar IAR 5.20 sürümü vardı. Onda "P1OUT_bits.P1OUT_0" şeklindeydi.

IAR 5.30.1 den sonra "P1OUT_bits.P0" olarak değiştirildi. Ve hala da bu şekilde kullanılıyor.
Kainat dediğimiz kitap, yazıldığı dil ve harfler öğrenilmedikçe anlaşılamaz.  (Galileo Galilei)

Erhan YILMAZ

Alıntı yapılan: fatihinanc - 10 Temmuz 2012, 12:31:06
Selamlar,

Bu structre tanımlamaları IAR sürümüne göre değişiyor.  Benim o dökümantasyonları yaptığım zamanlar IAR 5.20 sürümü vardı. Onda "P1OUT_bits.P1OUT_0" şeklindeydi.

IAR 5.30.1 den sonra "P1OUT_bits.P0" olarak değiştirildi. Ve hala da bu şekilde kullanılıyor.

Sağol Fatih, bende eski kodlarım niye çalışmıyor diyorum. Böyle bişeyi IAR niye değiştirir ki kafayı yedirtcekti bana. :)

fatihinanc

Alıntı yapılan: Erhan YILMAZ - 10 Temmuz 2012, 12:35:57
Sağol Fatih, bende eski kodlarım niye çalışmıyor diyorum. Böyle bişeyi IAR niye değiştirir ki kafayı yedirtcekti bana. :)

:) Tanımlamaları değiştirdikten sonra "Rebuild All" yapmak gerekbiliyor bazen. Yoksa yine hatalı derleme olarak görünüyor. "Rebuild All" yapıldığında eski derlenmiş dosyalar silinip sıfırdan yeni derleme yapıldığı için eski derlemeden kalma hatalar gidiyor. Bunu da unutmamak lazım ;)
Kainat dediğimiz kitap, yazıldığı dil ve harfler öğrenilmedikçe anlaşılamaz.  (Galileo Galilei)

Erhan YILMAZ

Alıntı yapılan: fatihinanc - 10 Temmuz 2012, 12:44:00
:) Tanımlamaları değiştirdikten sonra "Rebuild All" yapmak gerekbiliyor bazen. Yoksa yine hatalı derleme olarak görünüyor. "Rebuild All" yapıldığında eski derlenmiş dosyalar silinip sıfırdan yeni derleme yapıldığı için eski derlemeden kalma hatalar gidiyor. Bunu da unutmamak lazım ;)

Bu sefer denedim oldu. :) Bu şekilde kod yazınca arka planda asmdeki bit set/reset komutlarını kullanmıyor mu? P1OUT |= bitx; şeklinde yapınca arka planda asm taşıma/kopyalama komutlarıyla yapmıyor mu?

fatihinanc

Aslında 3 durum var;

P1OUT  =  BIT0 -> doğrudan P1OUT kayedicisinin içine yazıyor (mov).
P1OUT |= BIT0 -> bis(bit set) komutunu kullanıyor.
P1OUT_bit.P1 = P0 -> bis komutunu kullanıyor.

En alttaki structure tarzı yazım bazı yerlerde karışıklığı önlemek ve kodun daha anlaşılır olmasını sağlamak için aslında. Yoksa ikisi de temelde aynı işi yapıyor.
Mesela CCSv5'te bu structre lar yok. Bitleri 0 ve 1 yaparken mecbur maskeleme yapmak gerekiyor...
Kainat dediğimiz kitap, yazıldığı dil ve harfler öğrenilmedikçe anlaşılamaz.  (Galileo Galilei)

Erhan YILMAZ

Alıntı yapılan: fatihinanc - 10 Temmuz 2012, 13:08:37
Aslında 3 durum var;

P1OUT  =  BIT0 -> doğrudan P1OUT kayedicisinin içine yazıyor (mov).
P1OUT |= BIT0 -> bis(bit set) komutunu kullanıyor.
P1OUT_bit.P1 = P0 -> bis komutunu kullanıyor.

En alttaki structure tarzı yazım bazı yerlerde karışıklığı önlemek ve kodun daha anlaşılır olmasını sağlamak için aslında. Yoksa ikisi de temelde aynı işi yapıyor.
Mesela CCSv5'te bu structre lar yok. Bitleri 0 ve 1 yaparken mecbur maskeleme yapmak gerekiyor...

Sağol Fatihim. Maskeleme de aynı komutla yapılıyorsa sorun yok o zaman. Ürettiği koda bakmadım ama ben maskeleme ile and/or+mov komutu kullanıyor sanıyordum. Şimdiki derleyiciler çok akıllı o zaman. :)

fatihinanc

Eyvallah Erhan'ım ;)

Optimizasyon kapalı iken bile bu yukarıda verdiğim şekilde kod üretiyor ;)
Kainat dediğimiz kitap, yazıldığı dil ve harfler öğrenilmedikçe anlaşılamaz.  (Galileo Galilei)

muhittin_kaplan

şist ne oluyor yahu Erhanım Fatihim.
Forum Ortamında kavga etmemiz gerek uygun değil bu hareketler.

Erhan YILMAZ

Alıntı yapılan: muhittin_kaplan - 10 Temmuz 2012, 13:54:13
şist ne oluyor yahu Erhanım Fatihim.
Forum Ortamında kavga etmemiz gerek uygun değil bu hareketler.
Madem öyle peki hocam. Koru kendini Fatihim. :)

fatihinanc

Kainat dediğimiz kitap, yazıldığı dil ve harfler öğrenilmedikçe anlaşılamaz.  (Galileo Galilei)