K

bilgi göndermek

Başlatan kamil, 03 Kasım 2011, 20:00:11

kamil

PIC16f877A işlemci ile 18 bit bilgi gönderilirmi.
örnek:
SAYI   VAR DIV 32
SHIFTOUT DAT,CLK,1,[SAYI\18]
PIC18F452 işlemci var bunumu kullanmalıyım.

est32

hocam 16 bit gidiyo aslında,pbp de yöntemini bilmiyorum da proton ile highword-lowword tarzı bi yazım şekli gördüm.Mutlaka onunla olur.
Pbp için biraz düşünmek lazım,16 bit gönderip kalan iki bit sonradan bi şekilde eklenebilir de(nasıl eeproma word tipi yazmak için yöntem varsa bunda da olur mutlaka).

Ayrıca bu iki işlemci arası haberleşmek için mi(öyle ise karşıdaki işlemci de bu işe yardımcı olmuş olacak)?
Eğer değilse (lcd ekran gibi bişey ve programlanabilen bişey değilse) o zaman eziyetli olabilir.

kamil

Yapmak istedigim 18 bitlik entegreye bilgiyi göndermek.32 bitte olabilir.pic basic te gönderemedim.protonla denedim isis te spı debugger ile kontrol ettiğimde lcd de gösterdigim sayının karşılıgını hatalı gösteriyor.16bit göndermede problemyok.
acaba nerde hata yapıyorum.

ete

Bildiğim kadarı ile SHIFTOUT komutu yalnızca 16 bitlik sayıları işleyebilir. Bu nedenle daha fazla bit yollamak istersen 32 bitlik sayıyı 2 adet 16 bitlik sayıya dönüştürmen gerekir.  Bu benim aklıma gelen en kısa yol.
Bunu yapmanın üniversal yolu şöyle olabilir ;
BUYUKSAYI VAR LONG  (32 bitlik değişkenimiz)
ALT_SAYI  VAR WORD  (16 bitlik alt sayı)
UST_SAYI VAR WORD  (16 bitlik Üst sayı)

Örnekle devam edelim.
BUYUKSAYI=$AE709C80  olsun bu sayıyı iki ayrı word boyutuna bölersek;
UST_SAYI=$AE70
ALT_SAYI=$9C80
şeklinde sayılar elde etmemiz gerekecek. Bunun için,
UST_SAYI=BUYUKSAYI/65536
ALTSAYI=BUYUKSAYI//65536

Sonra gerisi kolay artık. Ancak Shiftout komutunda MODE değerine dikkat etmek gerekiyor. Bu parametrenin aldığı değerlerin karşılıkları şöyledir;
0=Shift data out lowest bit first. Clock idles low  Yani en küçük bit den başlayarak bitleri yolla clk sonunda low da beklesin.
1=Shift data out highest bit first. Clock idles low. Yani en yüksek bit den başlayarak bitleri yolla Clk sonunda low da beklesin.
Şayet 1 parametresini kullanırsan Shiftout komutu şöyle olmalıdır

SHIFTOUT DAT,CLK,1,[UST_SAYI\2,ALT_SAYI]

Şayet 0 parametresini kullanırsan Shiftout komutu şöyle olacaktır;
SHIFTOUT DAT,CLK,0,[ALT_SAYI, UST_SAYI\2]

Ete

kamil

Ete hocam çok sağol eline sağlık.

kamil

Ete hocam
BUYUKSAYI VAR LONG  değişken hata veriyor derleme yapmıyor.

ete

Konunun başında sen 32 bitlik bir değişken tanımlayıp örnek veridğin için bende aynı örneğe paralel açıklama vermiştim.
Demekki sende denemeden öylesine ortadan bir açıklama vermişsin. Açıkçası Proton kullandığını yada PBP da 18F serisini kullanarak bir şey yaptığını düşünmüş idim. Her neyse LONG tipi değişkenler yalnızca 18F serisinde kullanılabiliyor. Bunun için PBP sürümünüz 2.50 nin üzerinde olmasıda gerekiyor. 18F serisi bir işlemci kullanırsanız derleme için PBPL kutusunuda işaretlemeniz gereklidir. View menüsünde Compile & Program Options seçeneğini seçin açılan ekranda en sağda yer alıyor PBPL kutusu. Bu şekilde Long tipi değişken kullanabilirsiniz. Başka yoluda yok zaten.  Derleme PBPL kullanılarak MPASM ile yapılmalıdır.

Ete

kamil

#7
Ete hocam pbp da konunun çözümünü bilmediğim için proton kullandım .pbp versiyonu yükseltip  18f452 de deneyeceğim.verdiğin bilgiler çok faydalı oldu sağol hocam.

umitco

  Ete hocam,işlemci 18F4520 , derleyici MicroCode Studio 3.0.0.5. Bahsettiğiniz "Use PBPL" check kutusuda seçili.



Derlemeyi MPASM yapıyor




Sayi Var LONG     değişken atama satırında

"ERROR Line 4: Bad data type. (Deneme1.bas)"   hatası veriyor. Değişkeni "Code Explorer" menüsündeki

Variables altında görebiliyorum. Eğer değişkeni iptal edersem normal derleme yapıyor

ete

PBP versiyon numarası kaçtır.?

Ete

umitco

#10
 Sorunuz aynı zamanda cevabınız oldu. Ben hep microcode programının derleme yaptığını düşündüğümden versiyonun 3.0.05 olduğunu sanıyordum ama sorunuz üzerine yaptığım araştırmadada bunun böyle olmadığını,derlemenin PBP ile yapıldığını anladım. Basic'in   250 ve 260 versiyonlarını buldum ve yükledim. Şu an problem yok , değişken atadım ve derleme yapıldı. Daha öncesinde

Sayi VAR LONG      atamasında LONG ifadesi  diğer değişkenler gibi kalın yazı olmuyordu,şimdi düzeldi.

İsteyen arkadaşlar için PxPx260 versiyon download adresini vereyim

http://www.filecrop.com/34892932/index.html

umitco

 Ete hocam long değişken tanımlayabilmek benim çok işime yaradı.

Sayi var long
A var word
B var word
sayi=96753
a=sayi.lowword
b=sayi.highword

Bir word değişkenin alt ve üst bytesini Byte değikene verebildiğimiz gibi , long değişkeninde alt ve üst word değerlerini bir word değişkene verebiliyoruz

Hocam 18F serisinde kullanabileceğimiz,diğer işlemcilerde kullandıklarımızdan faklı olan komut ve özellikleri işleyecek bir konu açarak işlemeniz mümkünmü acaba?

Powered by EzPortal