Arkadaşlar MSP430 ve IAR Kullanımı ile ilgili başlangıç düzeyinde bir yazı yazdım.
İlgilnenler olursa;
http://www.fatihinanc.com/msp430/iar-kullanimi-ve-ilk-msp430-uygulamamiz/ (http://www.fatihinanc.com/msp430/iar-kullanimi-ve-ilk-msp430-uygulamamiz/)
Ellerine sağlık hocam devamı gelir inşAllah...
Gelecek olan kitle ilgli yapacağımız çalışmaları sizin siteye ekleyebiliriz üstad çok güzel olur.
@QarizmaCocuq, @FxDev;
Teşekkürler sağolun.
Devamı gelecek gibi, vakit buldukça birşeyler hazırlayıp siteye koymayı düşünüyorum.
@FxDev
Aslında bu MCU nun RAM i hariç hemen hemen herşeyi çok iyi gibi.
İleride CPU sunu anlatan bir yazı yazacağım. biraz inceledim şöyle CPU su da gayet iyi.
Sevdim yani... ;)
Ama memlekette bulması biraz zor o ayrı mesele...
@computerboy;
Hocam ARM için hele bi şu kitap işi hallolsun... ;)
Fatih hocam eline sağlık güzel bi konuya değinmişsin msp serisi 8/16bit çok güzel çok düşük güçte çalışan denetleyicileri var.Sormak istediğim İstanbul Karaköy civarı piyasada mspnin bu tip ürünleri bulunabiliyormu. Çalışmasını mimarisini öğrenmek için bi kaç uygulama yapmak güzel olur bu denetleyicilerle.
Hocam istanbulda olmadığım için bilemiyorum ben ama ankarada büyük ihtimal yoktur.
Bazı yerlerde avr zor bulunuyor. msp430 dan şüpheliyim doğrusu. onlar popülariteye göre hareket ettikleri için
şimdilik pek ümidim yok açıkçası.
ama ebayde uygun coreboardlar var birkaç tane görmüştüm.
MSP430F147 = 32KB ROM , 1KB RAM ...
http://cgi.ebay.com/MSP430-MSP430F147-core-board-/220637363652?pt=LH_DefaultDomain_2&hash=item335f02fdc4 (http://cgi.ebay.com/MSP430-MSP430F147-core-board-/220637363652?pt=LH_DefaultDomain_2&hash=item335f02fdc4)
MSP430F149 = 60KB ROM , 2KB RAM...
http://cgi.ebay.com/MSP430-MSP430F149-core-board-/220637422511?pt=LH_DefaultDomain_2&hash=item335f03e3af (http://cgi.ebay.com/MSP430-MSP430F149-core-board-/220637422511?pt=LH_DefaultDomain_2&hash=item335f03e3af)
bu ikisinin RAM ve ROM haricinde geri kalan herşeyi aynı...
http://focus.ti.com/docs/prod/folders/print/msp430f147.html (http://focus.ti.com/docs/prod/folders/print/msp430f147.html)
arkadaşımın net sınırsız,
rica ettim, sonsivriden bulduğum iar workbenchin full crack verisyonunu indirmiş 170 mb imiş dosya boyutu.
deneyeceğim bi programı, isis te msp430u simule edebiliyormuş, kullanayım bi tavsiye edilebilecek bir crack se yazarım burayada.
bu arada microchip pic serisi heryerde kolayca bulunabiliyor, ama nette okudum msp430 ucuz olmasına ragmen bulunması sorun oluyormuş.
bunuda ser de özay abiye soracağım ankara konya sokaktan.
sizler nasıl temin edebiliyorsunuz zor oluyormu piyasadan tedarik etmesi ?
Arkadaşlar Port Giriş/Çıkış işlemlerini ve harici kesmeleri anlatan bir yazı daha ekledim siteme.
Umarım faydalı olur.
1-MSP430 Port Giriş/Çıkış İşlemleri ve Harici Kesmeler (http://www.fatihinanc.com/msp430/1-msp430-port-giriscikis-islemleri-ve-harici-kesmeler/)
sonsivriden indirdiğimiz setup dosyasında keyler uyuşmadı.
aramızda deneyen oldumu bunu yani sonsivrinin setupını?
interneti kesip öyle keyi girmeyi deneyin.
Ben 4kb sınırlı sürümünü kullanıyorum. zaten başlangıç için seçilen çiplerin çoğunda Flash 2kb.
Alıntı yapılan: fatihinanc - 21 Eylül 2010, 22:49:19
interneti kesip öyle keyi girmeyi deneyin.
Ben 4kb sınırlı sürümünü kullanıyorum. zaten başlangıç için seçilen çiplerin çoğunda Flash 2kb.
hocam elinize saglik fakat sormak istediigm bir sey var
if(P1IN = 0x01)
P1OUT=0x02; //P1.0 = 1 ise P1.1 i lojik 1 yap
bu kod //p1.1=1 ise p1.2 lojik 1 yap seklinde olmayacakmi acaba?
0x01 =00000001bu port1.0 a denk geliyor
0x02 =00000010 bu port1.1 e denk geliyor
yanlismiyim ?
Alıntı yapılan: teknikelektronikci - 21 Eylül 2010, 23:30:38
hocam elinize saglik fakat sormak istediigm bir sey var
if(P1IN = 0x01)
P1OUT=0x02; //P1.0 = 1 ise P1.1 i lojik 1 yap
bu kod //p1.1=1 ise p1.2 lojik 1 yap seklinde olmayacakmi acaba?
0x01 =00000001bu port1.0 a denk geliyor
0x02 =00000010 bu port1.1 e denk geliyor
yanlismiyim ?
portun ilk pini P1.0 ı 0x01 ile kontrol ediyoruz hocam.
P1.1 ise 0x02 olacak. aynı şekilde P1.2 ise 0x04 olacak.
Ek :
Ama bunu kontrol ederken bitleri maskelemeniz gerekiyor.
Mesela P1.5 i kontrol edeceksiniz diyelim. O zaman ;
P1.5 kaça denk geliyor %00100000 = 32 =0x20
kod ise ;
if((P1IN & 32)==1) //P1.5 = 1 mi?
P1OUT=0x01; //P1.0 ı 1 yap.
ya da bitsel kullanırsanız;
if(P1IN.bit_P1IN_5==1)
P1OUT.bit_P1OUT_0=1;
Alıntı yapılan: fatihinanc - 21 Eylül 2010, 22:49:19
interneti kesip öyle keyi girmeyi deneyin.
Ben 4kb sınırlı sürümünü kullanıyorum. zaten başlangıç için seçilen çiplerin çoğunda Flash 2kb.
aynen oyle yaptım da bugünde bakıcam bakalım bugun halledebilirim.. :) belki
Alıntı yapılan: fatihinanc - 21 Eylül 2010, 23:51:53
Alıntı yapılan: teknikelektronikci - 21 Eylül 2010, 23:30:38
hocam elinize saglik fakat sormak istediigm bir sey var
if(P1IN = 0x01)
P1OUT=0x02; //P1.0 = 1 ise P1.1 i lojik 1 yap
bu kod //p1.1=1 ise p1.2 lojik 1 yap seklinde olmayacakmi acaba?
0x01 =00000001bu port1.0 a denk geliyor
0x02 =00000010 bu port1.1 e denk geliyor
yanlismiyim ?
portun ilk pini P1.0 ı 0x01 ile kontrol ediyoruz hocam.
P1.1 ise 0x02 olacak. aynı şekilde P1.2 ise 0x04 olacak.
Ek :
Ama bunu kontrol ederken bitleri maskelemeniz gerekiyor.
Mesela P1.5 i kontrol edeceksiniz diyelim. O zaman ;
P1.5 kaça denk geliyor %00100000 = 32 =0x20
kod ise ;
if((P1IN & 32)==1) //P1.5 = 1 mi?
P1OUT=0x01; //P1.0 ı 1 yap.
ya da bitsel kullanırsanız;
if(P1IN.bit_P1IN_5==1)
P1OUT.bit_P1OUT_0=1;
hocam aslinda ayni seyleri söylemisizde yorgunlukdan dikkat etmemisim kusura bakmayin
Alıntı yapılan: fatihinanc - 21 Eylül 2010, 23:51:53
Alıntı yapılan: teknikelektronikci - 21 Eylül 2010, 23:30:38
hocam elinize saglik fakat sormak istediigm bir sey var
if(P1IN = 0x01)
P1OUT=0x02; //P1.0 = 1 ise P1.1 i lojik 1 yap
bu kod //p1.1=1 ise p1.2 lojik 1 yap seklinde olmayacakmi acaba?
0x01 =00000001bu port1.0 a denk geliyor
0x02 =00000010 bu port1.1 e denk geliyor
yanlismiyim ?
portun ilk pini P1.0 ı 0x01 ile kontrol ediyoruz hocam.
P1.1 ise 0x02 olacak. aynı şekilde P1.2 ise 0x04 olacak.
Ek :
Ama bunu kontrol ederken bitleri maskelemeniz gerekiyor.
Mesela P1.5 i kontrol edeceksiniz diyelim. O zaman ;
P1.5 kaça denk geliyor %00100000 = 32 =0x20
kod ise ;
if((P1IN & 32)==1) //P1.5 = 1 mi?
P1OUT=0x01; //P1.0 ı 1 yap.
ya da bitsel kullanırsanız;
if(P1IN.bit_P1IN_5==1)
P1OUT.bit_P1OUT_0=1;
hocam bitsel daha güzelmis :)
bu arada bu gibi bilgileri ögrenebilcegim bir link v.s varmi ?
Alıntı yapılan: teknikelektronikci - 23 Eylül 2010, 23:05:24
hocam bitsel daha güzelmis :)
bu arada bu gibi bilgileri ögrenebilcegim bir link v.s varmi ?
Evet bitsel olarak daha rahat da biraz uzunca yazılıyor.
O yüzden ben sitemdeki örnekte #define ile bitleri P1IFG7 gibi tanımladım.
Kullanımı kolay ve anlaşılır.
Kaynak olarak ise TI nin sitesinde MSP430F20xx için örnek kodlar var.Başlanıç konusunda yardımcı olabilir.
Bu arada CPU birimini anlatımını tamamlamak üzereyim bugün yarın koyacağım siteye.
Normalde CPU ve DCO beraber olacaktı ama CPU biraz uzun gitti, ben de ayırayım dedim.
Arkadaşlar CPU birimini de tamamladım sonunda.
2–16 Bit RISC CPU (http://www.fatihinanc.com/msp430_dersleri/2-16-bit-risc-cpu/)
Bundan sonra da inşallah Clock modülünü ele almayı düşünüyorum.
MSP430 da Clock birimi biraz gelişmiş low power için çeşitli birimler kapatılıp daha az güç harcayan saat birimleri devreye sokulabiliyor. veya frekans bölme işlemleri vs..
elinize saglik hocam cok güzel olmus sizde yakinda bir kitap cikarirsiniz sanirim :)
Alıntı yapılan: teknikelektronikci - 25 Eylül 2010, 00:31:13
elinize saglik hocam cok güzel olmus sizde yakinda bir kitap cikarirsiniz sanirim :)
Sağolun hocam şuan donanım kısmındayız biraz sıkıcı olabilir ama diğer modüllere bu anlattığımız donanımları bilip girersek daha iyi olur diye düşünüyorum.
Yazılarımıza biraz ara verdik ama kaldığımız yerden devam ediyoruz.
3. Bölüm olan olan Clock Modülü;
3 — Clock Modülü (http://www.fatihinanc.com/msp430_dersleri/3-clock-modulu/)
Arkadaşlar MSP430 yazılarına bir yenisini daha ekledim.
Bu yazıda MSP-EXP430G2 (http://www.google.com.tr/url?sa=t&source=web&cd=2&ved=0CCEQFjAB&url=http%3A%2F%2Fprocessors.wiki.ti.com%2Findex.php%2FMSP430_LaunchPad_(MSP-EXP430G2)%3FDCMP%3Dlaunchpad%26HQS%3DOther%2BOT%2Blaunchpadwiki&ei=yhXHTMKxJsHHswbS46XiDQ&usg=AFQjCNFAgBcOS8TbVV9WL_LiQB7rd4lLRQ&sig2=elDTLR3mX8w4ZeEaZl99fg)kiti ile ilgili örnek bir LCD Uygulaması yaptım.
LCD yi çalıştırmak için 3v3 to 5v step-up devresi kullandım. Gayet stabil.
Devrede gerilim, 3.7v luk bir pil üzerinden, önce 3.5volta düşürülüp oradan MSP430 beslemesine gidiyor. 3.5v ise step-up devresinden sonra 5v olarak LCD beslemesine gidiyor.
Bu uygulamada IAR ile Debug işlemine de değindim. Örnek kodlar ve resimler linktedir
MSP-EXP430G2 Kiti ve 2x16 LCD IAR Debug İşlemi (http://www.fatihinanc.com/msp430-cesitli/msp-exp430g2-kiti-ve-2x16-lcd-iar-debug-islemi/)
Merhaba Fırat,
IAR Embedded Workbench 6 kullanıyorum.
Yok kürekli değil 4kb lik kısıtlı sürümü bendeki.
Eline sağlık Fırat kodlar ve bilgiler gayet güzel olmuş.
Yakında yüksek seviye MSP430 lar gelecek bana. O zaman senin kodları deneyip resim eklemeye çalışırım.
Selamlar.
Arkadaşlar uzun bir aranın ardından, sonunda 4. ders olan Timer ile ilgili yazımı tamamlayabildim. Gecikme için kusura bakmayın.
İnşaallah okuyanlara faydası dokunur.
4 — Timer_A Modülü (http://www.fatihinanc.com/msp430_dersleri/4-timer_a-modulu/)
Herkese iyi çalışmalar diliyorum.
Hocam Çalışmalarınızı yakından takip ediyorum. Konu anlatımını çok güzel. Sayenizde MSP mikrodenetleyicilerini tanıdık :)
SLM.YAZDIKLARINIZ İÇİN ÇOK TEŞEKKÜRLER.BUKADAR İYİ BİLENLERE BENİMDE Bİ SORUM OLACAK.
"CNY70 sensörü ile siyah‐beyaz renk algılayarak çizgi izleyen robot simülasyonu"kodu yazmam gerek c yada ASM ile.yardımcı olabilirseniz çok mutlu olurum..
slm fatih hocam elinizde CCS c ile yazılmış örnek kodlar var mı acaba?
Maalesef CCS ile yazılmış örnek uygulamalar yok elimde.
Fakat örnek kodları doğrudan CCS ortamına taşıyabilirsiniz.
SELAMLAR...SAYIN FATİH İNANÇ IN DA DERLEMESİNDE KESME UYGULAMASINDA ANLATTIĞI BİR PROGRAM VAR..O PROGRAMDA;
#define LED0 P1OUT_bit.P1OUT_0 gibi bir tanımlama var..ancak bir önceki programda:
#define LED P1OUT_bit.P0 diye tanımlamak yeterliydi..NEDEN BU PROGRAMDAKİ TANIMLAMAYLA BİR ÖNCEKİ FARKLI? ARADAKİ FARK NEDİR? BEN ÇÖZEMEDİM EĞER BİLEN BİRİ YARDIM EDERSE ÇOK SEVİNİRİM.
*Bold yazmayınız.
Sürüm farkından dolayı sorunuzun cevabı bu makalede bahsediliyor.
http://www.fatihinanc.com/msp430-cesitli/iar-embedded-workbench-5-30-1-surumu-cikti/ (http://www.fatihinanc.com/msp430-cesitli/iar-embedded-workbench-5-30-1-surumu-cikti/)
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.
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. :)
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 ;)
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?
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...
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. :)
Eyvallah Erhan'ım ;)
Optimizasyon kapalı iken bile bu yukarıda verdiğim şekilde kod üretiyor ;)
şist ne oluyor yahu Erhanım Fatihim.
Forum Ortamında kavga etmemiz gerek uygun değil bu hareketler.
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. :)
:D