Picproje Elektronik Sitesi

DİJİTAL & ANALOG ELEKTRONİK => Malzeme Bilgisi => Konuyu başlatan: z - 06 Ekim 2013, 14:41:48

Başlık: Yeni projeler baslatiyorum
Gönderen: z - 06 Ekim 2013, 14:41:48
Baslangic yazisi cok karisik olmus bastan sona editledim.

Gunlerce, haftalarca ugrasip PCB sini cizip bastirdiginiz doseyip kullanmaya basladiginiz fakat bir sure sonra keske kartima LCD de baglasaymisim yada SD kart da olsaydi dediginiz oldumu?

Bu calisma iste bu pismanliga son verecek bir calisma.

Kartinizin bir kosesine PPJ BUS adini verdigim toplam 5 adet pinden olusan bir konnektor koyuyoruz. (isterseniz bir birine paralel daha fazla konnektor de takabilirsiniz)
Bu konnektor, anakartimizin genisleme yuvasi. Ister daha projenin ilk basindan isterseniz ileride bu konnektore minik minik kartlari paralel olarak bagliyorsunuz.

Nasil mi?

(http://o1310.hizliresim.com/1g/h/tm1c4.png)

Yukaridaki blok semada 4 tane PPJ konnektoru var. Bunlarin hepsi de birbirine paralel bagli.

Ornek bir mini kart semasimi?

Asagida LCD modul, 4 adet tus, buzzer, E2rom, 4 tane led barindiran ornek tasarim var.

(http://www.cncdesigner.com/wordpress/wp-content/uploads/LCDmini-PPJ.png)

Bu sekilde paralel calisacak mini kartlar icin bazi standartlar getirmemiz gerekiyor.

Bu tip kart uretecekler, Interface yapisina ve komut listesine uymak zorundalar.

Eger bu iki standarta sadik kalinan urunler cikartirsaniz biribirimizin urunlerini gonul rahatligiyla kullanabiliriz. Boylece PPJ mini karti X ureticisinden de alsak Y ureticisinden de alsak kodlarimiz urun ayirt etmeksizin calisacaktir.

PPJ Bus adini verdigim bu BUS aslinda her kesin bildigi seri iletisim hatti. Bu iletisim hatti (Data hatti) cift yonlu calisiyor ve bir tane de Adres ve Data secim bilgisi ileten hatta sahip. Diger ikisi 5v ve 3.3v. Tabiki bir de Gnd var.

(http://www.cncdesigner.com/wordpress/wp-content/uploads/PPJ-BUS.png)

Yukarida gordugunuz PPJ Bus bir miktar degisti. Zira ana islemcimiz (Kendi tasarladigimiz proje kartindaki islemci) 3.3v buna karsilik yardimci minik kartlardan bazilari 3.3v bazilari 5v olursa seviye sorunu yasayacagiz. Bunu yukarida ornek verdigim LCD kartinda astim.

(Umarim ilk yazinin editlenmis olmasi bu yaziyi takip eden yazismalarla cok kopuk durmaz)
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: MrDarK - 06 Ekim 2013, 14:56:20
Sevgili z ;

Ticari olarak düşündüğüm bir sitede bu tarz bir çalışma yapmayı düşünüyorum. Standartlar benimde düşündüğüm tarzda ama bence komut setini biraz daha profesyonel yapmak gerek. 8 adet byte'dan oluşan sonunda ise checksum içeren bir komut şekli daha güzel olacaktır.

Düşündüğüm ufak kartlar ise ; gsm modül (telit_GL865) , gps modül (Telit_JN3) , bluetooth modül (HC-05,06 ve Rn42 ) , Wifi Modül , RF modül , 2x16 LCD modül , GLCD modül , step motor driver modül .... gidiyor bu şekilde.

Bunun için ticari olarak düşündüğüm güzel birde domain im var, bu projeye picproje ekibiyle katılmak isterim. Bu modüller henüz fikir aşamasında ama birçoğu kafamda tamamlanmış projeler.

Saygılarımla
MrDarK

Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 06 Ekim 2013, 15:04:18
Gayet guzel, bitmis projelerinizde cok az degisiklik yaparak istedigimiz standartlara cevap verecek hale getirirseniz urettiginiz kartlar bizler icin secenek olur.
--------------------------------------------

Picproje PPJ standartinda ureteceginiz kartlarin reklamini yapmaya izin vermez ama dolayli yollardan PPJ standartli urunlerle yapilmis proje ornekleri sayesinde bizleri bilgilendirebilirsin. Kendi sitenden urunlerinin detaylarina bakariz.
Burada PPJ standartinda urettiginiz kartlarin isimlerine ve karsisinda web adresini yayinlayabiliriz.

Ornegin

04 Sinifi kart uretenler.

www.bilmemne.com (http://www.bilmemne.com)
www.bilmenmine.com (http://www.bilmenmine.com)
......

08 Sinifi kart uretenler.

www.bilxxx.com (http://www.bilxxx.com)
www.yyy.com (http://www.yyy.com)
......

Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: F.T - 06 Ekim 2013, 16:29:59
güzel bir konu açmışsınız.bu tip kartlar herkese hareket kabiliyeti sağlar.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: OG - 06 Ekim 2013, 20:48:28
Üstteki şemayı aynı mantık içeren işler için uzun yıllar kullandım, problemsiz, ama I2C daha hızlı olacaktır.

Birimlerin birbirine fiziksel uzaklığı da mümkün olabilsin derseniz, yaklaşık 0,5-1TL ilavesiyle 485 yapıya gecmek çok daha iyi çözüm olur.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: mistek - 06 Ekim 2013, 20:49:00
Hocam bu dediklerinizi daha önce GPS modül üzerinde görmüştüm. GPS modül UART üzerinden data gönderiyordu adamlar araya ek bir kart yapıp iletişimi I2C ye çevirip bütün IMU kartlarına uyacak hale getirmişlerdi. Bence fikir iyi uygulamada nasıl olur bilemiyorum. İki iletişim birimi arasında dönüşüm yapacak donanım/yazılım iyi bilgi birikimi gerektiriyor gibi.

Dediğim ürün bu: http://www.ebay.com/itm/I2C-GPS-NAV-Module-W-CN-06-V2-0-GPS-Receiver-U-blox-MWC-MultiWii-SE-Flight-Board-/261289556420?pt=Radio_Control_Parts_Accessories&hash=item3cd61239c4 (http://www.ebay.com/itm/I2C-GPS-NAV-Module-W-CN-06-V2-0-GPS-Receiver-U-blox-MWC-MultiWii-SE-Flight-Board-/261289556420?pt=Radio_Control_Parts_Accessories&hash=item3cd61239c4)
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: justice_for_all - 06 Ekim 2013, 22:19:37
peki iki kart arasindaki hiz farki problem yaratabilirmi?
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 06 Ekim 2013, 22:30:18
Clk ile haberlesme yapildigi icin sorun yok. Slave islemci cok dusuk hizda calistirilirsa iki clk arasinda islemleri bitiremez. Fakat bu durumun olmasi cok zor. Master asiri yuksek frekansda iletisim yapmak isterse olur ancak.

mesaj birleştirme:: 06 Ekim 2013, 23:01:34

Bazi konulardan feragat edip I2C kullanmak daha akillica galiba.

http://tr.farnell.com/jsp/search/browse.jsp;jsessionid=24WOZZFIGHXX0CQLCIQZK0Q?N=0&Ntk=gensearch&Ntt=PIC16LF1503&Ntx=mode+matchallpartial&exposeLevel2Refinement=true&suggestions=false&ref=globalsearch&_requestid=172233 (http://tr.farnell.com/jsp/search/browse.jsp;jsessionid=24WOZZFIGHXX0CQLCIQZK0Q?N=0&Ntk=gensearch&Ntt=PIC16LF1503&Ntx=mode+matchallpartial&exposeLevel2Refinement=true&suggestions=false&ref=globalsearch&_requestid=172233)

Sadece microchipe baktim. I2C acisindan PIC16F1503 den daha iyi oneriniz varmi? Fiyat 1.faktor. Bu fiyatla yarisacak ARM cip varmi?
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: justice_for_all - 06 Ekim 2013, 23:29:23
ama hocam soyle bise var siz I2C kullanacaksiniz ama satici projesinde I2C yi kullanan bir cihaz varsa o zaman guvenli olurmu bu sizce?


atmelin su urunu var fiyati ayni ozellikleride asagi yukari ayni

http://tr.farnell.com/atmel/attiny24a-ssu/mcu-8bit-avr-2k-flash-14soic/dp/1699395 (http://tr.farnell.com/atmel/attiny24a-ssu/mcu-8bit-avr-2k-flash-14soic/dp/1699395)
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 06 Ekim 2013, 23:48:12
Saticinin kartina baglanacagimiz I2C hatti elbette sadece bizim interface'e adanacak. Eger illaki kart uzerinde I2C cip vs olacaksa o saticinin sorunu.

Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: justice_for_all - 06 Ekim 2013, 23:49:43
Alıntı yapılan: z - 06 Ekim 2013, 22:30:18
I2C acisindan PIC16F1503 den daha iyi oneriniz varmi?
http://tr.farnell.com/microchip/pic16f527-i-so/ic-mcu-8bit-1-5kb-flash-20soic/dp/2301099 (http://tr.farnell.com/microchip/pic16f527-i-so/ic-mcu-8bit-1-5kb-flash-20soic/dp/2301099)
http://tr.farnell.com/microchip/pic16f505-e-sl/mcu-8bit-pic16f-20mhz-soic-14/dp/2315790?in_merch=New%20Products (http://tr.farnell.com/microchip/pic16f505-e-sl/mcu-8bit-pic16f-20mhz-soic-14/dp/2315790?in_merch=New%20Products)
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: berat23 - 06 Ekim 2013, 23:56:34
aslında bu günlerde benimde aklımda buna benzer bir proje var. benim aklımdaki fikir, paralel işlem birimleri şeklinde.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: mistek - 07 Ekim 2013, 01:02:50
Alıntı yapılan: z - 06 Ekim 2013, 22:30:18
Sadece microchipe baktim. I2C acisindan PIC16F1503 den daha iyi oneriniz varmi? Fiyat 1.faktor. Bu fiyatla yarisacak ARM cip varmi?

ARM istenirse LPC800 güzel bi alternatif: http://tr.farnell.com/nxp/lpc812m101jd20/ic-mcu-32bit-cortex-m0-so20/dp/2295531 (http://tr.farnell.com/nxp/lpc812m101jd20/ic-mcu-32bit-cortex-m0-so20/dp/2295531)

Yada ST nin 8bit işlemcisi STM8S: http://tr.farnell.com/stmicroelectronics/stm8s003k3t6c/ic-mcu-8bit-value-line-32lqfp/dp/2070942 (http://tr.farnell.com/stmicroelectronics/stm8s003k3t6c/ic-mcu-8bit-value-line-32lqfp/dp/2070942)
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 07 Ekim 2013, 01:09:44
Alıntı yapılan: mistek - 07 Ekim 2013, 01:02:50
ARM istenirse LPC800 güzel bi alternatif: http://tr.farnell.com/nxp/lpc812m101jd20/ic-mcu-32bit-cortex-m0-so20/dp/2295531 (http://tr.farnell.com/nxp/lpc812m101jd20/ic-mcu-32bit-cortex-m0-so20/dp/2295531)

Yada ST nin 8bit işlemcisi STM8S: http://tr.farnell.com/stmicroelectronics/stm8s003k3t6c/ic-mcu-8bit-value-line-32lqfp/dp/2070942 (http://tr.farnell.com/stmicroelectronics/stm8s003k3t6c/ic-mcu-8bit-value-line-32lqfp/dp/2070942)

LPC800 fiyati ve kapasitesi super. Ne bileyim I2C uzerinden bilgileri okuyup gondermek hiz acisindan isimi gorur denirse birisi de SD kart okuyucu icin minik kart tasarlayabilir. (Bunu ben zaten yapmak istiyorum)
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: mcn - 07 Ekim 2013, 09:00:15
Çok güzel bir proje başlatmışsınız hocam çoğumuzun buna ihtiyacı olduğunu düşünüyorum sonuçta her bir donanım ya da başka şeyler için her birini oturup öğrenmeye sapasağlam çalışır hale getirmeye vaktimiz olmuyor.
Bu şekilde çalışmalar olursa hem bende kart yapmaya hem de almaya çalışırım.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: camby - 07 Ekim 2013, 09:41:57
Hocam RS485 kullanarak çalışmanın endüstriyel olarak kullanımını da sağlayabiliriz. I2C ile biraz daha hobi ve kartlar arasında yakın mesafe haberleşen bir protokol olarak kalabilir.

RS485 ile biliyorsunuz , uzak mesafelere data gidebilir , multi point haberleşebiliriz. Hatta Full Dublex yapıp modbus'dan farklı birşeyler yapabiliriz. Hatta full dublex RS485 USART ile çiplerimizi çok uzaklardan boot etme kod atma imkanımız da olabilir.

Hız sınırımız neredeyse olmaz USART birimi kullanılır direk vs.. Ne diyorsun hocam ?
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: yldzelektronik - 07 Ekim 2013, 10:00:39
485 kullanımı biraz daha farklı amaçlara hizmet etmeyecek mi?

Burada bahsedilen modüller sizin main boardınızla aynı kart üzerinde olacak.Sht11 veya herhangi bir sensörünüzü yada eepromunuzu veya lcdnizi bilmem ne kadar mesafeye götürmeniz ne kadar akılıca?Bunlar aynı kart üzerinde olması gereken şeyler.Ha uzak mesafe cihazı olsun derseniz o zaman bu modülü dahil edebileceğiniz bir kart yaparsınız ve o kartta 485 kullanırsınız.O zaman olur.Hepsi aynı kart üzerinde iken neden 485 kullanılsın ve böyle bir modülde neden o kadar öteye götürmek isteyesin?
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: Erol YILMAZ - 07 Ekim 2013, 10:10:53
Bu projeler için en kritik konu iletişim arabirimi...

Asenkron iletişim (clock sinyali olmayan) pratik fakat hızlı veri aktarımı gerektiğinde
bizi bir hıza sabitleyeceğinden yavaş kalabilir.

Gerçi bir komutla iletişim hızını değiştirmek te mümkün...

0x01 0x09 0x03

1 nolu cihaz için,
9 nolu komut (iletişim hız ayarı),
3 nolu hız

Ağdaki her cihaz gidip gelen bu sinyalleri dinlemek zorunda kalıyor...

hepsi UART temelli olduğundan 1 byte ardından kesme oluşacak.

Paketleri anlamlandırmak için UART olsun SPI olsun bütün gelen veriyi izlemek zorunda.


Asenkron iletişim örneği olarak Can-Bus (iletişimi sürekli takip eden bir donanım ile ) bu konuların birçoğunu çözüyor.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: serhat1990 - 07 Ekim 2013, 10:13:20
Çok güzel bir konu Hocam , öncelikle bu güzel düşünce için teşekkürler. Bende bazı arkadaşlar gibi rs485 kullanılarak yapılmasından yanayım . Endüstriyel ortamlarda kullanılabilmesi uzun mesafelerde kullanımı açısından rs485 iyi bir seçenek olur diye düşünüyorum.

İyi çalışmalar , saygılarımla ...
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: mcn - 07 Ekim 2013, 10:23:16
Bende RS485 diyorum, bu sayede hazır bulunan rs485 le haberleşen sistemlere de kolayca entegre edilebilir modüller.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: camby - 07 Ekim 2013, 10:41:06
Alıntı yapılan: yldzelektronik - 07 Ekim 2013, 10:00:39
485 kullanımı biraz daha farklı amaçlara hizmet etmeyecek mi?

Burada bahsedilen modüller sizin main boardınızla aynı kart üzerinde olacak.Sht11 veya herhangi bir sensörünüzü yada eepromunuzu veya lcdnizi bilmem ne kadar mesafeye götürmeniz ne kadar akılıca?Bunlar aynı kart üzerinde olması gereken şeyler.Ha uzak mesafe cihazı olsun derseniz o zaman bu modülü dahil edebileceğiniz bir kart yaparsınız ve o kartta 485 kullanırsınız.O zaman olur.Hepsi aynı kart üzerinde iken neden 485 kullanılsın ve böyle bir modülde neden o kadar öteye götürmek isteyesin?

Nasıl farklı amaçlara ? Faiz lobisi veya dış mihraklar gibi mi ? : )

Nem sıcaklık vs vs vs vs ölçümünde kart üzerinde olacak illa diye sınırlı kalmayın. Ölçtüğünüz veriler farklı yerlerde olabilir , Örneğin bir makinanın farklı farklı yerlerinden veri toplamak istiyor olabilirsiniz , yada bir üretim hattının 400 m ilerisindeki çıkışından veri çekmek zorunda kalabilirsiniz. Bu 400m ileriden geçen malın sayısını yine oradaki eepromda tutmuş ve bunu okumak istiyor olabilirsiniz 400m uzaktan.

Makinayı veya hattı geçtim , bir tavuk çifliğinin 4 bir yanından veri topluyor olabilirsiniz. SPI size hizmet etmeyecektir bu durumlarda.

Uzaktaki 2 farklı noktadan data okumaya çalışan Vatandaş gelip MODBUS yardım lütfeeenn diye başlık açmayacak PPJ kullanacak :)
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: gtekdemir - 07 Ekim 2013, 10:56:21
Olmuşken modbus rtu olsun. Standart birkç değişkenle olay çöülmüş olur. Baudrate, cihaz adresi, komut, register adresi gibi.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 07 Ekim 2013, 11:09:11
@Allegro

CAN Bus tam istediğimiz gibi üstelik hız sorunumuz da olmayacak ama ucuz olacakmı?

Varsın 0.85 Euro yerine 2 Euro verelim. Önereceğin ucuz CAN donanımı olan çip varmı?  Interface çipine ne kadar vereceğiz.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: Erol YILMAZ - 07 Ekim 2013, 11:19:05
http://www.digikey.com/product-detail/en/LPC11C12FBD48%2F301,/568-5097-ND/2297973 (http://www.digikey.com/product-detail/en/LPC11C12FBD48%2F301,/568-5097-ND/2297973)
Can Transceiver içinde, Haricen Xtal ister bir tek...

Mainstream (diyorlar sanırım) çiplerin içinde zaten geniş manada standart olma yolunda gidiyor.
STM32F4, LPC1768 gibi
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: yldzelektronik - 07 Ekim 2013, 11:19:20
Alıntı yapılan: camby - 07 Ekim 2013, 10:41:06
Nasıl farklı amaçlara ? Faiz lobisi veya dış mihraklar gibi mi ? : )...

Güzel benzetim olmuş da o tarz bir durum değil kastım. :)

Neyse can gibi güzel bir öneri gelmiş.Oradan devam edilebilir gibi..
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: muhittin_kaplan - 07 Ekim 2013, 11:43:30
konuyu ben mi yanlış anlıyorum yanlış bir noktaya mı kaydı.
amaç: belli standartlarda üretilenleri son kullanıcıya ulaştırmak.


mesaj birleştirme:: 07 Ekim 2013, 11:49:53

yarım yarım yazmışım.
üretici kişi istediği protokolde üretsin, son kullanıcı buna göre de seçim yapabilsin. (bırakınız geçsinler, bırakınız yapsınlar)
bknz https://www.sparkfun.com/ (https://www.sparkfun.com/)
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: sadogan - 07 Ekim 2013, 12:03:41
Alıntı yapılan: z - 06 Ekim 2013, 22:30:18
Clk ile haberlesme yapildigi icin sorun yok. Slave islemci cok dusuk hizda calistirilirsa iki clk arasinda islemleri bitiremez. Fakat bu durumun olmasi cok zor. Master asiri yuksek frekansda iletisim yapmak isterse olur ancak.

mesaj birleştirme:: 06 Ekim 2013, 23:01:34

Bazi konulardan feragat edip I2C kullanmak daha akillica galiba.

http://tr.farnell.com/jsp/search/browse.jsp;jsessionid=24WOZZFIGHXX0CQLCIQZK0Q?N=0&Ntk=gensearch&Ntt=PIC16LF1503&Ntx=mode+matchallpartial&exposeLevel2Refinement=true&suggestions=false&ref=globalsearch&_requestid=172233 (http://tr.farnell.com/jsp/search/browse.jsp;jsessionid=24WOZZFIGHXX0CQLCIQZK0Q?N=0&Ntk=gensearch&Ntt=PIC16LF1503&Ntx=mode+matchallpartial&exposeLevel2Refinement=true&suggestions=false&ref=globalsearch&_requestid=172233)

Sadece microchipe baktim. I2C acisindan PIC16F1503 den daha iyi oneriniz varmi? Fiyat 1.faktor. Bu fiyatla yarisacak ARM cip varmi?
Biraz pahalı ama
http://tr.farnell.com/freescale-semiconductor/mkl05z32vlc4/mcu-kinetis-l-cortex-m0-32lqfp/dp/2253371 (http://tr.farnell.com/freescale-semiconductor/mkl05z32vlc4/mcu-kinetis-l-cortex-m0-32lqfp/dp/2253371)
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: mistek - 07 Ekim 2013, 12:14:34
Neden sadece CAN üzerinde odaklanıldı ? Belki bir başka projede sadece I2C yeterli geliyordur ya da USART. Bu talepler göz önüne alınmayacak mı? 
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 07 Ekim 2013, 12:26:06
Konu kaymadı.

Burada tartışılan ana kart ile yardımcı kartlar arasındaki iletişim. Buna karar vermeden ilerlemek doğru olmaz.

Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: serdararikan - 07 Ekim 2013, 12:30:10
bence bu iş için en ideali SPI.ucuz hızlı.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: muhittin_kaplan - 07 Ekim 2013, 12:42:33
@Z
hocam anakart ne olacak  ?
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 07 Ekim 2013, 13:28:38
Hocam konuyu kısaca özetleyeyim. Her şeyden önce ana kart yapmıyoruz. Onu sen zaten yapıyorsun. Biz çevre birimlerini barındıran minik minik kartları konuşuyoruz.

Diyelimki STM32F10x ye ilave olarak LCD, keypad, SD kart okuyucu ekleyip bir kart tasarlayacaksın.

Bir başka zamanda ise PIC16F877 ile benzer kart tasarlayacaksın.

Diyorumki MCU ile sade bir ana kart tasarla minik minik de LCD, Keypad, SD kart okuyucu gibi kartlar olsun. (Bunu ister kendin tasarla istersen PPJ standartı dediğimiz standartta birileri yapıp satıyor olsun)

Ana kartındaki konnektorlere minik kartların kablolarını takıver.

Ne avantajı var?

Tüm kartlar birbirine paralel bağlanıyor ve ana karta 4 tel üzerinden bağlanıyor.  Minik kartlar standart iletişim yapıyor ve minik kartı kimden alırsan al softwarede hiç değişiklik yapmıyorsun.

Bu özellikle hemencecik bir şeyler denemek için güzel bir çözüm. Farklı bir işlemciyi bread borda yada delikli pertinaxa lehimle. Daha onceki projedeki minik kartların soketlerini eski karttan çıkar ve yeni yaptığın pertinaxdaki sokete tak. Projenin donanım ayağı bu kadar. Hemencecik yazılıma geç.

Minik kartların iletişim protokolü ve komut seti üreticiden üreticiye değişmediği için yazılımı da kolay olacak.

Bir nevi ISA yada PCI kartları ana karta takıyoruz gibi düşün.

Mesela sen Gyro çalışması yapmıştın. Bunu istediğimiz standarta getirip minik bir kart yapar ve sitene koyarsın isteyen senden bu kartı satın alır ve projesine dahil eder.

vs... vs...
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: eddar - 07 Ekim 2013, 13:32:43
Standartlara ivme ölçer kartlarıda dahil edebiliriz. Uygun zamanımda belirlenen standartlara ivme örnekleri yapmak isteyenler için bir kart yapabilirim.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: mistek - 07 Ekim 2013, 13:44:38
PPJ nin temel felsefesi bu videodaki telefon gibi olacak sanırım.

Telefonun ekran kısmı buradaki anakart olacak.
Base dediği yer PPJ protokolü.
Eklenen modüllerde asıl yapılmak istenen şey. Herkes PPJ uygun modül üretecek isteyen ihtiyacına göre modülü alıp takacak.

Phonebloks - Next Generation Phone (http://www.youtube.com/watch?v=C9HVpnM_5QA#)
(http://www.youtube.com/watch?v=C9HVpnM_5QA)
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: yamak - 07 Ekim 2013, 13:59:38
Bence SPI ya da I2C olsun.Eğer kullanıcı verileri uzak mesafelere taşımak istiyosa.Kendi RS485 ya da CAN bus vs. aracılığı ile taşıyabilir.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 07 Ekim 2013, 14:20:12
Burada ana kart ile minik kartlar arasındaki mesafe en fazla 10..15 cm. Bizleri sınırlayan tek şey iletişim protokolünün işlemciye getireceği işlem yükü ve daha önemlisi ana kartla minik kartlar arasındaki veri hızı.

Bu iş için en iyisi aslında CAN bus fakat nedense bana hep lükse kaçacak gibi görünüyor. I2C hız açısından düşük fakat işimizi görecek. Sorun adres sayısının düşük oluşu. Eğer I2C de karar kılırsak standart adresli çiplerin adreslerini mecburen sahipleneceğiz.

Eğer UART gibi seri iletişim yöntemini tercih edersek belki küçük bir üç kağıt yapıp işlemcilerin sürekli olarak veri hattını monitör etmelerini engelleyebiliriz.

4. iletkene 5.sini ekleyip bu hat High iken veri akıyor low iken aman dikkat edin slaveleri sorguya çekeceğim gibi bir mantık kullanabiliriz.

Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: gtekdemir - 07 Ekim 2013, 14:28:40
Mikroelektronika 'nın geliştirme boardlarına takılan click kartları bence iyi bir örnek olur. http://www.mikroe.com/click/ (http://www.mikroe.com/click/)

Adamlar bu click işini iyi tutturdu, hemen her şeyin click kartını yapıyorlar. Ben mikroelektronikanın geliştirme boardunu kullanıyorum ve kendi click kartlarımı yapıyorum, tasarım aşamasında büyük kolaylık sağlıyor. Ama son ürün üzerinde kullanmayı hiç düşünmemiştim.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: yldzelektronik - 07 Ekim 2013, 14:41:47
Alıntı yapılan: z - 07 Ekim 2013, 14:20:12
Burada ana kart ile minik kartlar arasındaki mesafe en fazla 10..15 cm. Bizleri sınırlayan tek şey iletişim protokolünün işlemciye getireceği işlem yükü ve daha önemlisi ana kartla minik kartlar arasındaki veri hızı.

Bu iş için en iyisi aslında CAN bus fakat nedense bana hep lükse kaçacak gibi görünüyor. I2C hız açısından düşük fakat işimizi görecek. Sorun adres sayısının düşük oluşu. Eğer I2C de karar kılırsak standart adresli çiplerin adreslerini mecburen sahipleneceğiz.

Eğer UART gibi seri iletişim yöntemini tercih edersek belki küçük bir üç kağıt yapıp işlemcilerin sürekli olarak veri hattını monitör etmelerini engelleyebiliriz.

4. iletkene 5.sini ekleyip bu hat High iken veri akıyor low iken aman dikkat edin slaveleri sorguya çekeceğim gibi bir mantık kullanabiliriz.



SPI kullanılsın.Ancak ss pini her slave cihaz için olmasında bütün cihazlara girsin ve ss 1 iken sdi den gelen adresi dinlesin.cihaz ile iletişim kurulduğunda sadece ilgili modül dinlemeye başlasın.Tabii bu sırada ss 0 a çekilsin;

1-SS 1 yapıldı.
2-Sdi ye modül adresi yazıldı.
3-Modül ack gönderdi.Yada ss ucunu sıfıra çekti.
4-İlgili modül hattı dinlemeye aldı, diğerleri işine baktı.Çünkü ss 0 da.
5- Modüle adres başta olmak üzere veriler gönderildi.
6-Gereken iletişim bitti ve modüle 0xseninle işim bitti komutu gönderildi.

Farklı bir modül için ss 1 yapıldı.Sdi ye adres yazıldı..Gerisi yukarıdakinin aynı.

Not: Sdi slave cihaz sdisi.

Nasıl olur?
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: muhittin_kaplan - 07 Ekim 2013, 17:01:29
Yok Abi ben Anlamıyorum.
Şimdi Biz Geliştirme Kitimi yapıyoruz ?

yada,

bir proje yapacağım, sht 11 ile sıcaklık ölçüp, ivmeölçerler değerler alıp, bunu RF ile göndereceğim. ana kartı kendim yapacağım ARM ile.

sht 11 kitini ahmet oğlu hasan yapıyor ve üzerine bir iletişim chipi koyup (gerekli standartları sağlayıp ) satışa sunuyor
ivmeölçeri kadir ibni muhittin yapıp satışa koyuyor.
ben bunları alıp standart olan iletişim protokolü ile hemen projeyi gerçekleştiriyorum.

1. mi 2 mi ?
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: kantirici - 07 Ekim 2013, 17:03:46
2.si muhittin hocam :)
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: muhittin_kaplan - 07 Ekim 2013, 17:10:37
iyi o zaman neden standart bir iletişim protokolünden bahsediliyor.
örnek olarak 2x16 parelel lcd yi breakout board yaparak SPI ya çevirerek sunarım işine gelen onu alır, öbür adam I2C yapar, diğeri CAN yapar.
Hepsi Aynı Olursa anlamı kalmaz bence.

yanlış bilmiyorsam SPARKFUN böyle çalışıyor. standarlarında üretim yapıyorsun onlar satışını gerçekleştiriyor.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 07 Ekim 2013, 17:11:16
(http://www.cncdesigner.com/wordpress/wp-content/uploads/Interface1.png)

Bu interface standart UART ile iletişim yapıyor. İlk interface şemasında Clk hattı vardı bu interface yapısında bu hat clk değil, data hattının adresmi ilettiği yoksa data mı ilettiği bilgisini bildirmek için kullanılıyor.

Bana bu daha mantıklı geldi. UART her çipte var.

Tek sorun, Tx/Rx hattını lowa çeken direncin gürültüye açık ortam oluşturması.

Bu interface için yazılım çok basit olacak ve slave cihazlar sürekli olarak hattı dinlemek zorunda değiller.


mesaj birleştirme:: 07 Ekim 2013, 17:15:07


Hocam LCD nin kendi çalışma şekli bizi ilgilendirmiyor. O kısmı mini kartı tasarlayan üretici hallediyor.

Biz LCD kartı ile konuşmak isterken bazı komutlar kullanacağız ve minik kart bu komutları tanıyacak.

Mesela (tamamen atıyorum şimdi)

CLS
Print
Goto XY
Curson On/Off gibi.

Eğer SD kart okuyan minik kartla konuşmak istersek

CD \
Dir
Save
Read vs
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: ByTEK - 07 Ekim 2013, 20:17:00
sayın hocalarım konu muhteşem.. hangi chip veya dil kullanılması önemli olmadan standart haberleşme ve protokolü ile al kartı tak kullan.. mantıklı gerçekten.

Peki her üretici kartlarına belirli bir ID vermek zorunda kalacak değil mi yoksa atıyorum hasandan aldım 2 tane aynı kartı bir anakartta kullanmak istiyorum mecburen bunun bir ID si olacak ona göre haberleşebilecektik. 24cxx serisinde olduğu gibi a0-a1-a3.. gibi pinleri olupta biz mi ona göre işlem yapacağız ? gibi

bence hocam aynı kartın usart - canbus - spi... gibi çeşitli iletişim protokolleri fakat haberleşme komutları aynı olsa daha verimli olmaz mı ? ama kişisel terciğim ya spi yada usart olurdu sanırım. yada 1-Wire mi olsa acaba :D
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 07 Ekim 2013, 20:35:52
Öneriler geliyor da tartışılmıyor.

Ben en son verdiğim şemayı daha çok tuttum. Çok pratik. İçinde UART olan herhangi bir çipi kullanarak minikkart yapabilirsiniz. Keza anakartın da UART birimine sahip olması yeterli.

UART kullanımı xtal kullanmayı gerektiriyor. Tek dezavantajı bu. Hız konusunu zorlarız.

I2C kullansaydık external Clk olacaktı ve minik kartın işlemcisini xtalsiz olarak internel osc ile çalıştırabilecektik.

Neyse tartışmaya açık. LCD kullanarak basit bir deneme yapar ve sonuca bir bakarız.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: esensoy - 07 Ekim 2013, 20:54:20
Ben spi öneriyorum, uzun mesafe isteyen de 26ls31-26ls32 alıcı verici kullanarak parazit sorununu aşar
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 07 Ekim 2013, 21:09:08
Iyide anlayamadigim konu mesafe ile ne isimiz var. Ana karta bagli cevre birrimleri islemciden kac cm uzakta olabilir?
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: mistek - 07 Ekim 2013, 21:14:03
Evet mesafe konusu bence dikkate alınmamalı ziraa tak çalıştır kart yapılacak, otomasyon sistemi yapılmayacak.
I2C nin olmadığı işlemcileri hatırlıyorum. UART kolay ve hemen hemen her işlemcide var.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: esensoy - 07 Ekim 2013, 21:18:58
Hocam anakart pano içindeyken lcd ekran operatör panosu üzerinde olabilir.

mesaj birleştirme:: 07 Ekim 2013, 21:28:47

Mesela bu bir nevi operatör paneli, i2c ile mcp23017 sürülmüş,
3 buton ve 1 ad 128*64 ekran var,
küçük entegre ise TC7660C

(http://o1310.hizliresim.com/1g/7/tcrws.jpg)
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 07 Ekim 2013, 21:39:37
Ben uygulamalarimda boyle bir riske girmezdim. Uzun hat gurultu demek. Kisa devre riski artacak demek. Paralel bagli diger cihazlarin calismasini MCU yu riske atacak demektir.

Eger LCD yi uzak mesafeye koyacaksan bizim yapimizda durum soyle olacaktir.


Ana kart----->Minik Kart (Seri port in seri port out + RS232 interface) -----> Uzun Hat -------> RS232 interface-----> MCU ----->LCD

Bizim ana kart ile minik kartlar arasindaki UART iletisimi local bir iletisim hatti. Eger uzak mesadeki bir cihazla konusulacaksa yapi yukaridaki gibi olmali. Biliyorum sacma bir yapi ama boyle olmak zorunda.

Haa sunu yapabilirsin. Ana islemcinin varsa 2. bir UART modulunu uzaktaki LCD unitesi ile haberlestirmek icin kullanabilirsin.

Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: ayhani - 07 Ekim 2013, 23:41:27
Alıntı yapılan: z - 07 Ekim 2013, 21:09:08
Iyide anlayamadigim konu mesafe ile ne isimiz var. Ana karta bagli cevre birrimleri islemciden kac cm uzakta olabilir?

Konuyu birkaç defa okumama rağmen tam olarak ne yapılacağını kavramış değilim. Bir endüstriyel kart dizisimi yapılmak isteniyor, yoksa bir deneme kartımı anlamadım. Eğer konu deneme kartı gibi birşeyse çevresel kartlarla haberleşmek için spi, I2 vs vs ne gerek var? Zaten en fazla 30 cm2 içinde hareket edeceksiniz. Endüstriyel bir kart dizisi ise takipteyim.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: esensoy - 07 Ekim 2013, 23:59:55
Tek bus, tek protokol, farklı komut dizileriyle çalışan çevre birimleri yapılmaya çalışılıyor
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: ayhani - 08 Ekim 2013, 00:08:33
Alıntı yapılan: esensoy - 07 Ekim 2013, 23:59:55
Tek bus, tek protokol, farklı komut dizileriyle çalışan çevre birimleri yapılmaya çalışılıyor

Hocam o kısmı anladım. Fakat bu bir deneme kartı dizisimi yoksa ortaya endüstriyel bir kart dizisimi yapmaya çalışılıyor o kısmı anlamadım.
Eğer bu deneme kartı setiyse, bir LCD kullanmak için neden bir de haberleşme protokolü ile  uğraşayım. Pic fiyatlarının çok ucuz olduğu ortamda pin sayısını azaltmak çokda önemli birşey olmasa gerek.
Sadece meraktan konuyu takip ediyorum çünkü şu sıralar yeni modüler deneme kartımın prototipini bitirdim, konu ilgimi çekti.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: serdararikan - 08 Ekim 2013, 00:09:02
Burada ticari amaçtan çok forum bazında ortak bir proje gerçekleştirme gayreti görüyorum.bu yüzdende herkesin donanım geliştirebilmesine olanak tanımak için herkesin kabul edeceği,komutlarını ve sistemini bileceği bir sistem kurma gayret var.şahsım adına bu gayreti alkışlıyorum.muhakkak tartışmalar bu amacı sonuca götürecektir.fakat bu süreç uzarsa bu güzelim fikir sabun gibi eriyebilir veya amacından sapabilir.
benim fikrim asenkron iletişimin birbirine yakın çalışacak lokal sistemler için yanlış bir tercih olacağı.bence bu iş için en güzeli I2C veya SPI.bence basitliği ve ACK sinyallari gibi gereksiz sinyalleşmelerden uzak olduğu için SPI biçilmiş kaftan
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: ayhani - 08 Ekim 2013, 00:12:47
Alıntı yapılan: serdararikan - 08 Ekim 2013, 00:09:02
Burada ticari amaçtan çok forum bazında ortak bir proje gerçekleştirme gayreti görüyorum.bu yüzdende herkesin donanım geliştirebilmesine olanak tanımak için herkesin kabul edeceği,komutlarını ve sistemini bileceği bir sistem kurma gayret var.şahsım adına bu gayreti alkışlıyorum.muhakkak tartışmalar bu amacı sonuca götürecektir.fakat bu süreç uzarsa bu güzelim fikir sabun gibi eriyebilir veya amacından sapabilir.
benim fikrim asenkron iletişimin birbirine yakın çalışacak lokal sistemler için yanlış bir tercih olacağı.bence bu iş için en güzeli I2C veya SPI.bence basitliği ve ACK sinyallari gibi gereksiz sinyalleşmelerden uzak olduğu için SPI biçilmiş kaftan

Arkadaşlar lütfen fikrinizi baltalıyor gibi düşünmeyin am,a bence bu tip çalışmalar ortaya hadi organize olalım  diye onlarca kişinin katılması ile olmaz gibi geliyor. Bu iş için, 2 bilemedin 3 kişi oturup kafa kafaya verip sıkı çalışırsa bir ürün çıkar. Yoksa bu forumda bu sayfalarca uzar gider. Bence bu işe gönüllü 2-3 kişi bir ana gövde çıkarmalı sonra isteyen bu ana gövdeye ek kart yapmalı.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: serdararikan - 08 Ekim 2013, 00:21:38
burada konun açlış amacını doğru buluyorum.i2c spi usart ...vs ortam belirlendikten sonra anakart ile birimler arasındaki iletişim paketlerinin içeriği tartışılır ve ortaya bir sonuç çıkar.henüz ortam kısmında uzlaşılmış değil...
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 08 Ekim 2013, 05:04:42
Uzlasmanin bir yolunu buldum

PPJ1, UART tabanli PPJ Interface
PPJ2, SPI    tabanli PPJ Interface
PPJ3, I2C    tabanli PPJ Interface

Ben aciklamalarimi ve denemelerimi PPJ1 uzerinden devam ettirecegim. Kurallar her 3 interface icin de gecerli. Detaylar http://www.cncdesigner.com/wordpress/?p=3420 (http://www.cncdesigner.com/wordpress/?p=3420)

Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: serdararikan - 08 Ekim 2013, 13:15:06
Alıntı yapılan: z - 08 Ekim 2013, 05:04:42
Uzlasmanin bir yolunu buldum

PPJ1, UART tabanli PPJ Interface
PPJ2, SPI    tabanli PPJ Interface
PPJ3, I2C    tabanli PPJ Interface

Ben aciklamalarimi ve denemelerimi PPJ1 uzerinden devam ettirecegim. Kurallar her 3 interface icin de gecerli. Detaylar http://www.cncdesigner.com/wordpress/?p=3420 (http://www.cncdesigner.com/wordpress/?p=3420)

güzel fikir.daha ne denebilirki...
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: magnetron - 08 Ekim 2013, 14:05:40
yeni projeye ilk ürünleri ben ekleyeyim
dediğiniz gibi uart tabanlı

hem rs232 hem rs485 var
enkoder - puls / dır - adc / dac
delta DOP bağlanabiliyor

resim aşağıdaki linkte
http://postimg.cc/image/7ej3dg4tl/ (http://postimg.cc/image/7ej3dg4tl/)

bu da RS232 portlu o-panel çalışmam
http://postimg.cc/image/60rgi55k9/ (http://postimg.cc/image/60rgi55k9/)
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 08 Ekim 2013, 14:22:57
İnterface konusunda bu esnekliği sağladıktan sonra veri paketleri üzerine konuşabiliriz.

Ana işlemci PPJ kartlardan herhangi birisine erişmek istediğinde 8 bitlik adres bilgisi, hemen ardından da 8 bitlik komut bilgisini gönderir.
Komutu varsa komut parametreleri izler.

PPJ1 interface UART temelli olduğundan Baud rate konusuna açıklık getirilmelidir. 3.3v seviyesindeki Tx sinyali, shotky diyoddan geçerken  yaklaşık 3v seviyesine düşer. Ayrıca Tx hattı aktif bir elemanla değil bir dirençle low'a çekildiğinden baud rate'in çok yüksek değerlere çıkartılamayacağı açıktır.

Eğer 9600 Baudda herhangi bir sorun yaşamazsak 8 bitlik veri (1St, 8D, 1Sp bit katarı) yaklaşık olarak 1ms de gidecek demektir. Bu durumda 2x16 display birimine 32 adet karakter yazmak kabaca 40 milisaniye civarında zaman alacak demektir.

Bu LCD, Led/Role vs için makul bir süredir. Ancak SD kartdan okunacak 256 Bytelık paketin sadece ana işlemciye aktarılması bile 250 ms den fazla zaman alır.

Bu durumda sistemi hızlandırmanın tek yolu baud rate değerini artırmaktan geçer. Mevcut şemasını verdiğim interface devresini max kaç bauda kadar zorlayabiliriz hiç bilgim yok.
Şu anda deneme yapacak donanım da yok.

Deneyip sonucu bildirecek varsa bu çok makbüle geçer.

(http://www.cncdesigner.com/wordpress/wp-content/uploads/Interface1.png)

Deneme için 3.3v da çalışan çipinizde UART'ın Rx pinine 330R direnç ve buna paralel 100pF kapasite bağlayıp 20 cm lik bir kablo üzerinden Tx pinine BAT54 benzeri bir diyodu bağlayıp gönderilen karakterin doğru şekilde alınıp alınmadığını test etmek gerekiyor.

Bu deneme sonucunda hangi baud rate değerinden sonra yanlış veriler alınmaya başlıyor denemek lazım.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: Erol YILMAZ - 08 Ekim 2013, 14:31:24

Bence SD Kart ve GLCD gibi "hızlı veri aktarımı gerektiren" cihazlar için SPI tek tercih olmalı.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: yldzelektronik - 08 Ekim 2013, 14:43:40
Alıntı yapılan: Allegro - 08 Ekim 2013, 14:31:24
Bence SD Kart ve GLCD gibi "hızlı veri aktarımı gerektiren" cihazlar için SPI tek tercih olmalı.

Aynı fikirdeyim.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 08 Ekim 2013, 15:32:49
SPI için çip select işine "Daisy-chained" haricinde çözüm öneriniz varmı?

(http://www.cncdesigner.com/wordpress/wp-content/uploads/Interface2.png)
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: pisayisi - 08 Ekim 2013, 19:14:45
Çoklu modülleri paralel bağlamak ve spi kullanmak gerektiğinde, modüllerin tasarımında da bir sonraki modüle data çıkışı vermek ve modüllerin önceliklerini belirlemek ve data hattının hızının artan modül sayısı ile birlikte düşmesi gibi sorunlar mevcut. Bir gürültülü ortamdaki modülden ötekine de veri aktarımı zorunluğu olduğundan verinin sonraki modüle aktarımında sorunlar olabilir diye düşünüyorum. Az sayıda modül kullanıldığında sorun olmayabilir ancak sonuçta önceliği yüksek modülü bir numaraya koyarak hızlı çalışması gereken modülleri başa alarak sorun aşılabilir.

Buna alternatif olabilcek azami 16 adet modül olsa 4 to 16 demultiplekser kullanılsa chip select sorunu sıkıntısız bir şekilde ilave 4 adet adres hattı kullanarak çözümlenebilir.Bu durumda da modül sayısı ile orantılı olarak kablolama artcak ancak hızdan feragat edilmeyecek...
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: esensoy - 08 Ekim 2013, 20:38:08
Hocam ben A/D için ayrı bir hat kullanmayı gereksiz buluyorum, DI-DO yu aynı hatta bindirmek te sıkıntı yaratacakmış gibi geliyor,
Onun yerine bilgiyi belli bir çerçeve üzerine oturtmak daha doğru geliyor,

Mesela;
paketimiz 0x02 ile başlasın,
ikinci 1 byte veri kart adresi olsun,
3. 1 byte veri komut olsun,
dördüncü 1 byte veri takip eden data boyutu olsun,
dördüncü kadar data gönderilsin,
0x03 ile bitsin,

Gerekliliği var mı bilmiyorum ama datadan sonra 0x03 ten önce CRC de eklenebilir, böylece doğruluğu da kontrol edilmiş olur
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: justice_for_all - 08 Ekim 2013, 20:44:53
ben de SS pininin kullanilma amacini hala anlayabilmis degilim.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 08 Ekim 2013, 20:47:47
A/D hattının önemli bir getirisi var. Eğer kullanmazsak, ana işlemci slave işlemcilere data hattından her data gönderdiğinde tüm işlemciler ne geldi ne geldi diye işlerini bırakıp dataya bakmak zorundalar zorunda kalırlar. Tüm dataları izlemek zorundalar hatta tüm sınıf bilgilerinin komut setlerini de bilmek zorunda kalabilirler. Çünkü SD kart uygulaması ile birlikte çalışacak kartlar SD karta gönderilen dataları komut olarak algılayabilirler. Pek ala seçtiğimiz komut yapısında gidecek adres data vs bilgiler şans eseri SD karta yazılacak datalar arasında olabilir.

A/D hattı eklendiğinde A/D=0 yapılınca tüm işlemcilere interrupt yollamış oluruz. Hey hepiniz şimdi göndereceğim data adres bilgisidir uyanık olun bunu okuyun anlamına gelir.

Bu yüzden A/D hattı işleri kolaylaştırıyor.

Pin sayısını azaltmak adına Tx/Rx i birleştirdim. Çoğu komutta aynı anda Tx aynı anda Rx olmayacağı için hat sayısını azaltmak işime geliyor.

Ben hala UART modeli üzerinde duruyorum çünkü bağlantı sayısı çok çok az. Eğer yüksek baud ratelere çıkabilirsek zaten sorun da kalmıyor.

CRC kontrolü vs iyi şeyler ancak zaten yavaş olan BUSa ilave olarak ucuz işlemcilere ilave kontroller yaptırmak hızımızı daha da düşürübilir. Eğer uygulamada sıkıntılar olursa CRC, handshake vs eklemek zorunda kalabiliriz.


mesaj birleştirme:: 08 Ekim 2013, 20:50:00

Alıntı yapılan: justice_for_all - 08 Ekim 2013, 20:44:53
ben de SS pininin kullanilma amacini hala anlayabilmis değilim.

Hem CS anlamına geliyor hem de iletişimin başladığı anlamına. Sonuçta durum makinesi var. Bunun sapıtması durumunda sıfırlanması lazım. SS bu işi yapıyor.

Düşün bir clk sapıtsa artık sonraki tüm datalar yanlış gider fakat SS bunu engeller.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: Erol YILMAZ - 08 Ekim 2013, 21:32:16
Alıntı yapılan: z - 08 Ekim 2013, 20:47:47
A/D hattı eklendiğinde A/D=0 yapılınca tüm işlemcilere interrupt yollamış oluruz. Hey hepiniz şimdi göndereceğim data adres bilgisidir uyanık olun bunu okuyun anlamına gelir.

Bu yüzden A/D hattı işleri kolaylaştırıyor.

Hocam bence UART taki en büyük problem olan her data geldiğinde her üyede kesme oluşması problemini halletmiş görünüyorsunuz.
A/D hattı sayesinde bütün üyeler sadece ADRES gönderildiği zaman bir kontrol yapacaklar.
İlgisiz üyeler diğer zamanlarında UART kesmelerini göz ardı edebilirler.
Aksi halde örneğin SD Karttan veri okumaya kalktığınızda akan veri,  ilgisiz üyelerin kendi iş akışına izin vermeyecek seviyeye ulaşacaktı.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: muhittin_kaplan - 08 Ekim 2013, 22:36:04
Bana yaptiginiz calismanin bir ornegini daha gosterebilirmisiniz.
En yakini ardu onda da std bir baglanti yok.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 08 Ekim 2013, 22:45:53
Alıntı yapılan: Allegro - 08 Ekim 2013, 21:32:16
Hocam bence UART taki en büyük problem olan her data geldiğinde her üyede kesme oluşması problemini halletmiş görünüyorsunuz.
A/D hattı sayesinde bütün üyeler sadece ADRES gönderildiği zaman bir kontrol yapacaklar.
İlgisiz üyeler diğer zamanlarında UART kesmelerini göz ardı edebilirler.
Aksi halde örneğin SD Karttan veri okumaya kalktığınızda akan veri,  ilgisiz üyelerin kendi iş akışına izin vermeyecek seviyeye ulaşacaktı.

Aslina bazi uartlardaki 9 data biti ozelligi sayesinde bu A/D hatti kaldirilabilir. Fakat her islemci 9. data bitini destekliyormu bilmiyorum. Zaten bu 9. bit data adres tasiyor anlamina geliyor ve int uretim isi 9. bit ile yapilabiliyor.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: subram - 08 Ekim 2013, 23:41:20
Alıntı yapılan: z - 06 Ekim 2013, 15:04:18
Normalde organizasyonlar bu kararlari muhtemelen toplanti ustune toplanti yaparak bilir kisi calisanlari ile cok uzun vadede ortaya koyuyorlardir. Biz o kadar calisma yapamayiz ama bir sekilde standart olusturabiliriz.

toplantı konusu için google hangoutu öneririm. Daha önce kullandık çok güzel bir uygulama.
https://www.picproje.org/index.php/topic,44605.0.html (https://www.picproje.org/index.php/topic,44605.0.html)
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 11 Ekim 2013, 23:03:43
Alıntı yapılan: z - 08 Ekim 2013, 14:22:57

(http://www.cncdesigner.com/wordpress/wp-content/uploads/Interface1.png)

Deneme için 3.3v da çalışan çipinizde UART'ın Rx pinine 330R direnç ve buna paralel 100pF kapasite bağlayıp 20 cm lik bir kablo üzerinden Tx pinine BAT54 benzeri bir diyodu bağlayıp gönderilen karakterin doğru şekilde alınıp alınmadığını test etmek gerekiyor.

Bu deneme sonucunda hangi baud rate değerinden sonra yanlış veriler alınmaya başlıyor denemek lazım.

Anlasilan kimsede bu denemeyi yapacak donanim ya da merak yok. Benim denemem gerekecek.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: serdararikan - 11 Ekim 2013, 23:25:15
hocam siftah sizden bereket Allah'tan.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 11 Ekim 2013, 23:31:54
Siz denemezseniz ben de denemeyecegim. Yoklama yapmaya karar verdim.

Ana islemci kendisine hangi siniftan ve hangi adresli kartlarin takildigini kendi uzerindeki yazilimdan dolayi zaten biliyor. Init fonksiyonunda takili olan kartlarin tek tek yoklamasi yapilabilir.

115200 baud ile basliyor.

Ahmet!!!
-------------- Burdayim

Mehmet!!!
-------------- Burdayim

Ayse!!!

-------------- Igi Muf
Ayse!!!

-------------- Mufigi

Anlasildi bir dusuk baudrate ile bir daha yoklama yapalim.

Ne zaman Ayse burdayim dedi o zaman ana islemci o baud rate ile herkesle konusur.

Biraz akilli algoritma ile tum slave kartlar Aysenin 115200 de calisamadigini ve Aysenin Burdayim dedigi baudrate'in kac baud oldugunu anlayacaklardir.

Yada yoklamayi en dusuk baud rate den baslatip git gide tempoyu artirabilir. Bu daha az akil gerektirir.

Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: Klein - 11 Ekim 2013, 23:42:19
O şekilde çift devre deneyemem şimdilik. Rs485 çipinin çıkışına bir diyot  ve direnç bağlayıp deneyebilirim.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: serdararikan - 11 Ekim 2013, 23:48:25
Alıntı yapılan: z - 11 Ekim 2013, 23:31:54
Siz denemezseniz ben de denemeyecegim. Yoklama yapmaya karar verdim.

Ana islemci kendisine hangi siniftan ve hangi adresli kartlarin takildigini kendi uzerindeki yazilimdan dolayi zaten biliyor. Init fonksiyonunda takili olan kartlarin tek tek yoklamasi yapilabilir.

115200 baud ile basliyor.

Ahmet!!!
-------------- Burdayim

Mehmet!!!
-------------- Burdayim

Ayse!!!

-------------- Igi Muf
Ayse!!!

-------------- Mufigi

Anlasildi bir dusuk baudrate ile bir daha yoklama yapalim.

Ne zaman Ayse burdayim dedi o zaman ana islemci o baud rate ile herkesle konusur.

Biraz akilli algoritma ile tum slave kartlar Aysenin 115200 de calisamadigini ve Aysenin Burdayim dedigi baudrate'in kac baud oldugunu anlayacaklardir.

Yada yoklamayi en dusuk baud rate den baslatip git gide tempoyu artirabilir. Bu daha az akil gerektirir.

şöyle olsa

ana işlemci sisteme ilk enerji verildiğinde sabit bir baudrate de üniteleri tarasa ve üniteler enerjilenme durumunda A/D ucu D olana kadar işlemciyle tanışmak için bekleseler ve her ünite tanışma sırasında ana işlemciye sınıfını adresini ve baudrate ini söylese işlem daha pratik yapılmazmı?
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: Klein - 12 Ekim 2013, 00:10:39
75176 ile denedim. 75176 çıkışından 1 tane 1n4148 ( Beslemesi 5V olduğu için)  GND'ye 330R direnç.  19200 baudda bile hatalı veri gelebiliyor.  330Rtakılı iken, diyotu kısadevre etsem bile arada bir hatalı veri geliyor.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: serdararikan - 12 Ekim 2013, 00:13:01
ben hala bu işi SPI ile yapmamız konusunda ısrarcıyım.hem böylece RBO kesmesi ile SPI birimi olmayan küçük PIC lerle bile bu işi yapabiliriz.hatta PIC deil başka bir işlemci ile bile...
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 12 Ekim 2013, 00:31:02
Mecbur kalirsak SPI'ya doneriz fakat daha onceki yazismalardaki semalardan da gorulecegi uzere hat sayisi az oldugu icin Asenkron iletisim uzerinde duruyorum. Mecbur kalinirsa SPI.

@Klein hocam

Sinyal cok bu bozuldu yada sinyal genligi cok mu dustu de iletisim hatali oldu? Gerci diferansiyel calisan bir cipte bu denemeyi yapmak ne kadar dogru olur?

Araya interface cipler katip sorun duzeltilebilir elbet.

Aradaki diyoddan dolayi data hatti aktif elemanla low seviyesine cekilmiyor bu amacla 330 Ohm gibi dusuk sayilabilecek direnc ongordum. Bu direnc degerini artirmak bellli bir olcude cozum olabilir.

SPI yada bir baska iletisim modeline gecmek bu probleme cozum olmayacak. Illaki araya aktif interface cip koymamiz gerekecek.

Bu konuda ortaligi malzeme acisindan kalabaliklastirmadan hat sayisini artirmadan bir cozum bulmamiz gerekiyor.

mesaj birleştirme:: 12 Ekim 2013, 00:35:36

Alıntı yapılan: serdararikan - 11 Ekim 2013, 23:48:25
şöyle olsa

ana işlemci sisteme ilk enerji verildiğinde sabit bir baudrate de üniteleri tarasa ve üniteler enerjilenme durumunda A/D ucu D olana kadar işlemciyle tanışmak için bekleseler ve her ünite tanışma sırasında ana işlemciye sınıfını adresini ve baudrate ini söylese işlem daha pratik yapılmazmı?

Yoklama yapmak kim hangi hizda konusabiliyor sorusunu cozecek gibi gorunuyor.  Bunun detaylarini sonra konusuruz.

Su anki sorun data hattini olabildigince nasil hizli kullaniriz?
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: Klein - 12 Ekim 2013, 00:52:57
115200 baudda deniyorum sinyalde hiç bozulma görmedim.  Direnci 1K'ya çıkardım. Biraz daha iyi.  Ancak halen hatalı veri geliyor. 
75176'yı 5V besliyor olmama karşın çıkış gerilimi 3.3V üzerine çıkmıyor. diyottan sonra 2.5V civarına iniyor. Sorun buradan kaynaklı olabilir. ThruHole schottky bulabilirsem diyotu değiştirip deneyeceğim.

İletişim protokolü olarak Modbus RTU kullanıyorum.  Master 8 Byte veri gönderiyor, slave (test cihazımız) bunun karşılığında 135 Byte veri gönderiyor.  Her paket arasında 10ms bekliyorum. Timeout süresi 50ms.   20000 sorgudan yaklaşık 400 tanesi düzgün alınamadı.



Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 12 Ekim 2013, 01:04:51
(http://www.cncdesigner.com/wordpress/wp-content/uploads/Interface.jpg)

Buradaki transistor sayisi hic hosuma gitmemisti ve diyodlu yapiya yonelmistim. O zaman cozum icin bu semaya geri donmemiz gerekecek. (Gerci transistorlu yapida da H'a cekmek direncle yapiliyor low direnci sorun oluyorsa H direnci de sorun olacaktir.) Mini kartlarin hepsinin PC ana karttaki gibi bir yuvaya değil de 10 cmlik kablo konnektorle ana karta baglanacagini varsayarsak sorun daha bir orataya cikabilir.

Az malzeme ve az kablo kullanmak amac olunca cozum onerin nedir?
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: Klein - 12 Ekim 2013, 01:33:39
Pull-Down yerine Pull-UP konfigürasyonu uyguladım. Direnci 3K'ya çıkardım. Diyotu ters çevirdim. Elimde Thruhole schottky olmadığı için denemeyi yine 1n448 ile yaptım.  şu an 10000 paket alıp gönderdim. Hata sayıcısı 0.  denemeye devam ediyorum.

Alıntı YapGerci diferansiyel calisan bir cipte bu denemeyi yapmak ne kadar dogru olur?
Denemeyi diferansiyel tarafta yapmıyorum hocam. TTL tarafında yapıyorum.

mesaj birleştirme:: 12 Ekim 2013, 01:36:28

Gönderilen-Alınan paket sayısı :20000,  hata sayıcısı:0
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 12 Ekim 2013, 01:36:32
Alıntı yapılan: serdararikan - 12 Ekim 2013, 00:13:01
ben hala bu işi SPI ile yapmamız konusunda ısrarcıyım.hem böylece RBO kesmesi ile SPI birimi olmayan küçük PIC lerle bile bu işi yapabiliriz.hatta PIC deil başka bir işlemci ile bile...

Elbette yapilir ama her bir islemci data hattina cikan her bir datanin her bir bitini takip etmek zorunda kalacak. Ustelik diger kartlarin komut listesini de herkes bilmek zorunda kalacak. Hangisi data hangisi adres ana islemci A kartindan bir sey istedi kac data gelecek.....

Ustelik 115200 gibi bir baudrate hizinda data akisi istesek bu saniyede 115200 yani her 9 mikrosaniyede bir int demek. Eee bizim islemci hic mi asli isleriyle ugrasmayacak hep ne geldi ne geldi diye rx pinini mi dinleyecek?

Neyse su anki sorun atla deve degil de kahrolasi az malzeme kullanalim saplantisi kemiklerime kadar islemis vazgecemiyorum. (Bu konuda kronik vakayimdir)


Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: Klein - 12 Ekim 2013, 01:39:40
Şu an  alınan-gönderilen paket: 30000 hata:0
paket sayısı 100000 olduğunda halen hata 0 olursa, 256000 baudda deneme yapacağım.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 12 Ekim 2013, 01:41:47
O zaman hocam CMOS ciplerde sorun yasamayacagiz gibi gorunuyor. 75176 nin is semasina baktim da aynisi olmasa da TTL benzeri bir durum var.

Elimdeki STM kitle dogrudan islemci pinlerinden bir de ben deneyeyim. Tum slave kartlarin input kapasitelerinin toplamini  RX girisine 100 pf gibi bir kapasite eklentisi yaparak gozlemeye calisacagim. (Umarim schotky diyodum vardir)
Ana kartda PPJ busuna bagli max 6 kart olacagini varsaysak durum ne olur onu da gozden kacirmamak lazim.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: Klein - 12 Ekim 2013, 01:43:25
256KBaud denemesi de başarılı. Sorun yok.  5K paket aldım gönderdim. hata 0.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 12 Ekim 2013, 01:46:53
Bence sonuc super. Saniyede 25 bin byte demektir. Grafik LCD yi kurtarmaz ama SD kart okuyucu dahil diger tum kartlarda tatmin eder.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: Klein - 12 Ekim 2013, 01:50:19
Şimdi RX ucundan GND'ye 330pF kapasite bağlayıp test ettim.  256KBaud OK.   
Ancak  test alanım lüçük olduğu için, bağlantılarım kısa. Endüktif etkileri test edemedim.

Birazdan Pull-Up'a kapasite bağlayıp test edeceğim.

mesaj birleştirme:: 12 Ekim 2013, 02:02:40

Test devresi aşağıda.  Devre ygun olmadığı için TX ve RX'i  birleştirip deneyemedim.
(http://k1310.hizliresim.com/1g/d/thcl7.png) (http://bit.ly/c25MCx)

Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 13 Ekim 2013, 18:08:43
Nihayet ben de kendi denememi yaptim.

CMOS UART cip (STM32F103)

115200 Baud. 1Start 8 Data 1 Stop bit ile hic beklemeksizin sonsuz dongu icinde ardi ardina data hattini 0x02 ile bombaladim. Herdefasinda gelen data 0x02.

Ustelik Schotky diyod yerine 1N4148 diyod kullandim. RX pinini High'a ceken direncin degeri 4K7 ve RX pininden Gnd ye baglanan kapasite 470pF !!!!.

Interface uzerine daha fazla kafa yormanin geregi yok. 9600 Baud rate'de sorun cikabilir derken 12 kat daha yuksek hizda haberlesebilecegiz.

Bu durumda PPJ BUS'imiz (PPJ1) asagidaki gibi sekillenmis oldu.

(http://www.cncdesigner.com/wordpress/wp-content/uploads/PPJ-BUS.png)
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: OG - 13 Ekim 2013, 19:41:07
Alıntı yapılan: Klein - 12 Ekim 2013, 01:50:19
Şimdi RX ucundan GND'ye 330pF kapasite bağlayıp test ettim.  256KBaud OK.   
Ancak  test alanım lüçük olduğu için, bağlantılarım kısa. Endüktif etkileri test edemedim.

Birazdan Pull-Up'a kapasite bağlayıp test edeceğim.

mesaj birleştirme:: 12 Ekim 2013, 02:02:40

Test devresi aşağıda.  Devre ygun olmadığı için TX ve RX'i  birleştirip deneyemedim.
(http://k1310.hizliresim.com/1g/d/thcl7.png) (http://bit.ly/c25MCx)
Kapasiteleri ekleme sebebini anlayamadım? Malumunuz sinyala menfi yönde etki yapar.  Data yoluna sanal olarak kapasitif etki vermek içinmi?
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: Klein - 13 Ekim 2013, 19:49:13
Evet. Birden fazla cihaz bağlandığında toplam kapasitenini sisteme etkisini simüle edebilmek için.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 13 Ekim 2013, 20:47:02
Evet o kapasiteyi kartlarin tamaminin giris kapasitelerini simule etmek ugruna bagladik. Belki ana islemcinin data hattina 100p civarinda bir kapasite ekleyerek 4K7 direnc ile birlikte olusturacagi filitreye ihtiyac duyabiliriz.

Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 15 Ekim 2013, 13:10:07
Deneme amacli ilk mini karti yapmak icin malzemeleri toparlamaya basladim.

(Dokumanlarda daha once belki farkli yazmisimdir duzeltirim artik.)

0x04..0x07 adresleri Alfanumerik LCD karti olacak. Fakat bu karti birazcik yetenekli yapmak da fayda var.

Kart 2x16 LCD modul, buzzer, 4 tane led, 4 tane buton ve E2ROM icerecek.

Boylece bu modulu taktigimiz ana kartta kolayca display sorunu cozmus olacagiz hem de menulerde gezinti yapmaya yarayacak basit tus takimi ve sesli uyari icin buzzer ve ledlerin ugrasmadan baglayabilecegiz. Ustelik kucuk de olsa E2ROM da cabasi.

0x04..0x07 adreslerine benzeri daha guclu kartlar tasarlayabilirsiniz. Mesela 4x16 LCD 16 tus, 8 led 1K E2Rom gibi.

Fakat minimum yapi 2x16 LCD modul, buzzer, 2 tane led, 4 tane de buton olmalidir.

PPJ BUS'in ana kart tarafinda 3.3v islemci kullanacagim. (5v da kullanabilirsiniz)

Slave tarafinda ise 5v yada 3.3v islemciler karisik olarak kullanilabilmeli. (Bu amacla PPJ Interface'de kucuk bir degisiklik yapmamiz gerekebilir)
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 15 Ekim 2013, 18:01:05
(http://www.cncdesigner.com/wordpress/wp-content/uploads/LCDmini-PPJ.png)

PPJ standarti icin referans tasarim. (Denenmedi)

Yukaridaki karti XXX firmasi urettiyse bu karta verecegi isim XXX - PPJ - 04 olacaktir.

PPJ, kartin PPJ standartinda oldugunu, 04 ise kartin ne ise yaradigini (Sinif bilgisini) gostermektedir.

Bu kartin iletisim rutinlerini C de yazip yayinlayacagim. Benzeri karti dilediginiz islemciyle tasarlayip programlarini herhangi bir dilde yazabilirsiniz.

PPJ Bus'imiz bu ornek tasarimla son halini almis durumdadir ve  slave islemcileri 3.3v yada 5v da calistirabilirsiniz.

PPJ LCD karti neler yapabilir?

Ana islemcimiz bu karta sadece 5 adet kablo ile baglanir ve;

2x16 LCD de text mesajlarinizi gosterir.

4 adet butonu okuyabilir.

Buzzerdan uyari sesi verdirebilir.

4 Adet ledle uyari verebilir.

E2Rom'una veri yazabilir yada okuyabilir.

Kartimiza J1 ve J2 jumperlariyla 4,5,6,7 adreslerinden herhangi birisini verebiliriz.

(PPJ interface'e 5v hatti daha ekledik ve toplam 5 pini oldu)
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: Klein - 15 Ekim 2013, 18:04:19
O transistörler Latch-Up için mi?
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 15 Ekim 2013, 18:05:54
Yok hocam, islemci 5v ile calisiyor. Ana kart uzerindeki islemcim ise 3.3v. PPJ Bus uzerinden her ikisini de sorunsuz konusturmak adina o iki transistoru ekledim. Her hangi bir sorun goruyormusun?
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: Klein - 15 Ekim 2013, 18:11:37
Bu kartta B0 çıkış mı? giriş mi?  çift yönlü mü?
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 15 Ekim 2013, 18:15:40
B0 giris (Adres) pinimiz.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: Klein - 15 Ekim 2013, 18:25:32
Tamamdır.
Bu kartı siz ürettiniz diyelim.  Bana üzerinde dsplay ve ledler olan bir kart lazım olduğunda  ben sizden bu kartı alıp. Kendi kartım ile haberleştireceğim. Buraya kadar her şey normal.
Peki benim kartım 3.3V ise  sizin kartınıza nasıl 5V sağlayacağım? Harici besleme mi kullanmam gerekecek? 
Örneğin ben böyle bir kart tasarladım. Bu kart PPJ yoluna bağlanabilir nitelikte ama aynı zamanda standalone çalışabiliyor.  HEm kendi işlerimde kullanıyorum , hem de PPJ kullanıcılarına sınıyorum. Bu durumda standalone kullanmak için muhtemelen üzerinde 12-24V civarında bir regülatör olacak. Kullanıcı ana besleme girişini kullanmayıp, kendi devresinden beslemek istediğinde , regülatör çıkışımın karşı tarafın beslemesini yüklememesi gerek.  Butip sorunlarla boğumamak için besleme konusunun bazı standartlara bağlanması gerek.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: muhittin_kaplan - 15 Ekim 2013, 18:51:23
ben hala yanlış bir yol izlediğiniz kanısındayım.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 15 Ekim 2013, 19:19:07
@Klein

PPJ'ye 5. bir hat daha ekleyelim ve burdan 5v dagitalim. 5V ana kartimizda uretilir. Ana kart 3.3v u da buradan elde eder. Slave kartlardan 5v isteyen +5 hattindan, 3.3v isteyen de +3.3 hattindan beslemesini alir.
Bunlarin disinda voltaj ihtiyaci olan slave kartlar varsa bunlarin ayri bir konnektoru olur ve bunlar voltajlarini gene ana kart uzerindeki guc katindan beslemelerini alir.

Bu arada; PPC slave kart ne kadar ustun ozelliklerde olursa olsun. Master ana kart uzerindeki islemci,  slave islemcilerden cok daha yeteneksiz dahi olsa patron ana kart islemcisidir.

@Muhittinkaplan

Sistemde yanlislik nerede?

Yukaridaki ornek LCD kartinda 2x16 LCD, 4 led, 1 buzzer, 4 tus okumanin sadece 3 islemci pini ile yapilabiliyor olmasinin neresi kotu?


PClerde bazi anakartlar VGA, ses, modem, paralel port, seri port ne var ne yok iceriyor. Bazi anakartlar ise sadece CPU iceriyor. PCI busdan ne karti istiyorsan onu kendin ekliyorsun. Bizim yaptigimiz da buna benzer.
Elinin altinda PPJ kartlar olsun. Ana karti kucuk bir plakette olustur gerisini PPJ den bagla gec gitsin.

PPJ diye bir kutuphane de olusturacagimizi dusunursen yazilim kismi da cok rahatlayacak.

Bu, cok kisa surede teslim edilecek isler icin ideal cozum bence.


Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: muhittin_kaplan - 15 Ekim 2013, 19:26:20
bence değil.
Kaç kişi Ardu yu bir projede kullanıp veriyor ? ardu kitini kutulayıp veriyor ? (ki düşünülen arduyu geçmiş durumda onda böyle bir standart yok)
önümüzde örnekler mevcut, Sparkfun gibi firmalar. belli standartlarda kitler üretiyor ve satışını yapıyorlar. kişi bunu alıp bilinen iletişim yollarını kullanıp tasarıma geciyor. ona göre PCB çiziyor ona göre pinleri bağlıyor ona göre besleme katı tasarlıyor vs vs.
Sizin yapmayı planladığınız yöntemle işlem yapan bir örnek gösterirmisiniz.

Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 15 Ekim 2013, 19:34:51
Alıntı YapSizin yapmayı planladığınız yöntemle işlem yapan bir örnek gösterirmisiniz.

PC en guzel ornek.

1) PPJ standarti, ivir zivir sayilacak isler icin ana kartinizdaki islemcinin degerli MCU donanimlarina el koymaz cok degerli I/O pinlerden calmaz.

2) Cok az sayida bacagi olan islemcilerle olmadik isler yapabilirsin. Mesela;

sadece 8 bacagi olan bir islemciyi ana islemci olarak kullandigini dusun. Mini slave kartlardan olusan orkestraya bu islemcin orkestra sefiligi yapabilir.

3) Ana kartintaki islemci PPJ BUS uzerinden slave islemciler cok hizli haberlesemese de slave islemcilerle paralel islem yapar.

4) Herseye senin kafa yorman gerekmez. Birilerinin kafa yorup cozum olarak sundugu slave kartlardan isine geleni alip takar gecersin.

(http://o1310.hizliresim.com/1g/h/tm1c4.png) (http://bit.ly/c25MCx)

Yukaridaki uygulamada  Muhittin 64 bacakli bir islemci kullanmis olsun. PPJ Bus kullandigi takdirde 64 bacakli cipin sadece 3 bacagi yukaridaki islere ayrilmis olacak. MCU'nun da sadece UART modulune el koymus olduk. Geriye kalan 61 bacaga Muhittin ne baglarsa baglasin.

Eger PPJ bus kullanmadan tum kartlarin islevini tek islemci ile yapmaya kalksaydi islemci pinlerinin ve islemci donanimlarinin buyuk kismini bu islere feda etmek zorunda kalacakti.

PCB cizerken tum kartlarin isini yapacak donanimlari da ana karta cizmek zorunda kalacakti.

Muhittin bir baska zamanda bir baska islemci ile benzer calisma yapacaginda gene ayni zorluklari yasayacakti. Fakat PPJ bus kullansaydi PCB si cok basit olacakti.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: ErsinErce - 15 Ekim 2013, 20:29:47
mantık güzel ama donanım yerine yazılım kısmı asıl kafa yorulması gereken yer bence
donanımsal olarak gerekirse 485 üzerinden ekran ve tuşları x metre ileriye taşıma imkanı olur,

misal her ekranın sabit ana ve ayar sayfaları bulunur
bunun için aşağıdaki tarzda bir structure oluşturulabilir
bir kez programlanır sonra sadece değer göndererek işlemci çok yorulmadan işlem bu yapıya bırakılır

ayar programlanması kısmı şöle olabilir;

sabit sayfa içeriği
değişken sayısı
değişken degeri 1
değişken degeri 2
..
..

ayar sayfa sayısı
ayar sayfa içeriği 1
ayar sayfa içeriği 2
..
ayar sayfa 1 içeriği
-değişken sayısı
-değişken değeri 1
-değişken değeri 2
-..
-değişken 1 max
-geğişken 1 min
-..
-değişken tipi (sayısal giriş - alfanümerik giriş - text lerden seçim gibi)
-text1
-text2
-..

komut gönderiminde ise
3 ayarı şu değerde göster tarzı kullanılabilir
yada 3. sayfayı ekrana koy gibi

donanım kısmı açık olursa gerekirse ethernet bile birleştirilerek telefondan kumanda kısımları kolaylaşabilir
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 15 Ekim 2013, 20:54:31
@Ersinerce

Slave kartlar ucuz olsun diye cok ucuz islemciler kullanilmak istenecektir. Ramlari da haliyle dusuk kalacaktir. Bahsettiginiz structer yapisi muhtemelen bu islemcilere sigmayacaktir.

Fakat LCD Slave islemcinin romunda yer varsa herkesin kullanabilecegi mesajlar konulabilir.

Bu durumda standart mesaj verdirmek icin tek komut yeterli olacaktir.

Eger LCD kartinda RAM'i buyuk islemci kullanirsaniz bahsettiginiz yontem super olur.

Ucuzluk ugruna 0x04..0x07 adreslerine yerlesecek LCD kartinin basit bir sey olmasinda fayda var.

Ote yandan 0x30..0x3F adresleri kullaniciya ozgu ozel tasarim kartlar icin ayrildi. Bu tip kartlarda komut seti tamamen size kalmis.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: muhittin_kaplan - 15 Ekim 2013, 20:58:29
Tüm Sözlerimi geri aldım. Sistem Güzel olacak.
(Slave kartların okuma yazma komutları farklı olabilir değil mi ?)
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 15 Ekim 2013, 21:06:50
Elbette farkli.

Slave kartlarin Sinif numarasi  birbirinden farkli. Her sinif diger siniflardan farkli komut kumesine sahip.

Sinif numarasina ornek.

0x00 kimseye ait değil.

0x04 LCD karti

0x08 Tus takimi karti gibi.

Sinif numaralari +4 seklinde ilerliyor.

Birbirinin tamamen ayni 4 kartti ayni busa baglayabiliyorsun. Her bir kart jumper ile set edilmis adreslere sahip.

Mesela yukarida referans tasarim olarak verdigim kartlara sirayla 0x04, 0x05, 0x06 ve 0x07 verdigin takdirde ana kartina 4 tane LCDyi zahmetsizce baglamis oluyorsun.

Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: ErsinErce - 15 Ekim 2013, 21:10:03
bu noktada lcd ye yazma sadece araya başka bir protokolün girmesiyle yakın zamanda tamamlanacak

sistemde d/a çevirici veya sd carddan bağlantısını sağlayan slave kartlar olduğunda bu bus yorulup işleri aksatmaya başlayacaktır.

bu yüzden temel gereklilikler konulup belli structure lar oluşturulmalı

bu ürünler zaten son kullanıcıya gitmeyecek sadece hızlı geliştirmeye imkan sağlayacak

20$lık işlemciye sahip tek kartla bir ton proje tasarlanacağı için sorun olacağını sanmıyorum

son kullanıcıya verilmek için ekranda 3 ana 5 ayar sayfası kaydedilebilir tarzı opsiyonlar çeşitlendirilerek slave kartlar oluşturulabilir gerekirse
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 15 Ekim 2013, 21:19:26
Aslinda PPJ bus'i cok yogun kullanacak donanimlarin bu busda yer almasi hos değil. SD kart okuyucu da buna dahil. Fakat bir de olaya soyle bakalim;

SD karta veri yazilirken neden tus takimindan tus okuyasin? neden LCD de mesaj veresin?

SD karta yazarken yada okurken;

Tus okumamiza engel durum varmi? LCD de mesaj vermemize engel durum varmi?

Asla yok. SD katra 64K dosya yazacagimiz zaman 64 bin datayi bir cirpida pes pese yollamayacagiz ki. 256 byte 256byte yollayabiliriz. Bu esnada tuslari okuyabilir LCD de mesaj verebiliriz.

PPJ bus'in en buyuk eksigi INTERRUPT hattinin bulunmayisi.

Slave kartlardan birisi hey ana islemci, acil bir durum var isini birak derhal benimle ilgilen diyemiyor.

Fakat bu tip isler icin ana islemcinizin bos pinlerine bu tip tasarimlari PPJ busdan ayri olarak kendiniz ekleyebilirsiniz.

Bir kart tasarladigimda ihtiyacim olmayan eklentiler icin (LCD, SD kart  okuyucu, tus takimi vs) MCU'nun bos pinlerinden  gelecege yatirim konnektoru koymam. Cunku ben az bacakli ciplerle calisiyorum ve cogunlukla islemcimin az pini bosta kalir.

Fakat PPJ Bus fikri cok iyi.

Her kartin bir kenarina kullanmayacak dahi olsaniz 1 tane PPJ bus konnektoru takarsaniz ileride bir seyler baglamak istediginizde cok faydasini gorursunuz.

En ufak eklenti icin yeni bastan PCB cizip bastiracak kadar zamanim, param, enerjim yok. PPJ bus bu gibi durumlar icin de bir cikis yolu.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: ErsinErce - 15 Ekim 2013, 22:31:31
interrupt kısmı aslında bus kullanım sonunda x us lik bekleme ile gerçekleşebilir
master hat low a çekildiyse slaveleri interrupt için tarayabilir
ya da taramak yerine a/d hattını tersleyip interrup ihtiyacı olan karttan adres bilgisi alabilir
aynı anda gönderim olmasın diye adres numarasına göre us bekleyip hat boşsa gönderim gerçekleşebilir
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 16 Ekim 2013, 02:26:57
Int uretmek isteyen kart data hatti bos yada dolu olsun TX hattini 9 data bit uzunlugunda low yaparsa  ana kart dahil tum kartlarda frame error durumu olusur. Bunun anlami interrupt geldi demektir.

Bu durumda hatti kullanmakta olan cihaz eger data yolluyorsa data bozuldu demektir ve interrupt bitiminde tekrar ayni datayi yollar. (Yada ana kart istekte bulunur)

Int durumu ana kart tarafindan algilandiginda,  slave kartlara interrupti kim uretti diye tek tek sorar.

Bu cozum, hic int olmamasindan iyidir en azindan bir cozumumuz var fakat simdilik buna kafa yormayalim.

@Ersinerce

Adres/Data hatti mevcut durumda tek yonlu. Bunu da  cift yonlu hale getirirsek ve bu is icin kullanmak istersek isleri bayagi karisacak.

Bu hat low oldugunda tum slave kartlar adres bilgisinin yola cikacagini dusunurler. Eger bu hattan kartlardan birisi int sinyali yollamaya kalkarsa tum kartlarin ilk aklina gelen sey yeni bir istek geliyor olacaktir. Bunun bir istek değil int oldugunun anlasilmasi icin bir mekanizma olusturmak lazim. Dusunulurse bulunur belki.

Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: ErsinErce - 16 Ekim 2013, 02:44:24
a/d hattı low olduğunda int ihtiyacı olan var mı diye beklenirse,

int ihtiyacı olanda kendi adresini data hattından hatt boşken gönderirse, parazit harici sıkıntı çıkmaz

çünkü o adres başka slave de bulunmayacak slave de kendi adresini gönderecek

slavelerin konuşma hakkı olsun =)

sonra master adres göndererek data akışına geçiş yapabilir
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 16 Ekim 2013, 03:23:32
Hocam interrupti simdilik unutursak mekanizmayi soyle kurduk.

Ana islemci A/D hattini low yapiyor.
Tum slaveler Data hattindan Sinif+Adres gelecegini ogrenmis oluyor.
Ana islemci Sinif+Adres bilgisini data hattindan gonderiyor ve A/D hattini high yapiyor.

Artik data hatti ana kart ile secilmis slave arasinda komut ve veri aktarimi icin kullaniliyor.

Simdi interrupt konusuna geri donersek yukaridaki isleyisi sekteye ugratmayacak bir yapi olusturmak gerekiyor.

Sinirlamalar.

1) PPJ BUS'a ilave hat getirip BUS'i sevimsizlestirmeyelim.
2) Kartlara ilave malzeme koymayi gerektirecek oneriler olmasin.

Evet bu durumda ne onerirsin?

Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: Klein - 16 Ekim 2013, 03:33:12
Bus yapımız dominant-resesif çalışmaya müsait.  CAN BUS benzeri bir yapı kurulabilr.
Master kart belirli aralıklarla adres hattını aşağı çeker. Bu arada göndermek istediği verisi olan tüm slave kartlar adresini gönderir. zaten aynı zamanda dinlemedeler. Eğer aldığı adres gönderdiğinden küçükse  hatta daha öncelikli bir aygıt olduğunu anlar ve hattan çekilir. ve o kartla master haberleşmeye başlar.  eğer gönderecek verisi olan kart çıkmazsa, Master bir süre bekler sonra işinedevam eder.


mesaj birleştirme:: 16 Ekim 2013, 03:38:11

Eğer adres hattı çift yönlü yapılırsa  ( Aslında en son üzerinde anlaşılan yapı 5V çipler için şu an buna müsait, hatta 3V3 çiplerde bile çalışabilir.) bu hat Bus-Master gibi kullanılabilir.
Verisi olan aygıt, hat boşaldığında kendisinin bir slave olduğunu bildiren bir işaretle birlikte adresini yollar. ve iletişim başlar. aynı anda gönderme isteği olursa, yukarıdakimekanizma yine çalışır.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 16 Ekim 2013, 03:40:50
@Klein Adres hatti low yapildiginda tum slaveler adres gelecek diye heyecanlanacaklar. Cunku yapiyi bastan boyle kurmustuk.

Bence tek bir cozum var. Data hattini isteyen istedigi zaman lowa cekip iletisimi bozsun. Bunun adi interruptdir. Hos bir cozum değil. Ustelik zirt pirt int ureten kart tum sisteme ayak bagi olacak ve isleri yavaslatacak.

Belki simdi getirecegim oneri daha akla yatkin. Her 1ms de bir ana islemci Tum kartlara sira ile hal hatir sorar. Bunu kartlarin komut setinin bir komutu olarak gorebiliriz.
Derdi olan slave kart derdini bu esnada bildirir.

Her ne kadar PPJ BUS'a 64 farkli toplam 255 tane kart takilabiliyor gibi gorunse de bus'in belli bir tasima kapasitesi var. Kapasiteler ve pullup direncler bus empedansini  cok dusurecek ve belki de 4..5 karttan fazla kart takamayacagiz. Bu sorun değil bence. 4..5 kartin hal ve hatirinin sorulmasi da cok zaman alacak bir islem değil.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: Klein - 16 Ekim 2013, 03:43:22
Hocam tüm slave'ler heyecanlansın ne olacak? Slave kart, gelen adresin kendine ait olup olmadığını anlamak için işini yapamaycak kadar kötü kodlanmışsa zaten öyle bir kartı kullanmak istemem.
Hatta bence bu hatta bile gerek yok.
Gerekli olabilir. Kalsın.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 16 Ekim 2013, 03:47:55
Alıntı YapMaster kart belirli aralıklarla adres hattını aşağı çeker. Bu arada göndermek istediği verisi olan tüm slave kartlar adresini gönderir.

Master kart 1. slave ile konusmak icin Adres hattini lowa cekti.

1. Sorum:  Slave kartlar dusunuyor simdi tamam adres hatti low oldu da, master bizlere adres mi yollayacak yoksa ben kendi adresimi mi hatta yerlestireyim ikilemi var.

2. Sorum:  Adres hattindan nasil kurtulacagiz?
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: Klein - 16 Ekim 2013, 03:53:46
Master hattı çektikten sonra, bir süre bekleyecek (Örn: 1ms). Eğer Slave aygtlardan birisi adres yollamamışsa, ne yapmak amacıyla hattı çektiyse istiyorsa onu yapacak.
1- Slave normalde Master karttan adresbekleyecek. ama slave kartın kesme gerektiren öncekilkli bir verisi varsa, o zaman kendisi adresini yerleştirecek.

2- adres hattından kurtulma fikrinden vazgeçtim. Aslında kaldırılabilir. Ama bu durumda programcılara çok iş düşüyor,  bu da projenin felsefesine aykırı olur. Herkesten aynı performansı beklemek haksızlık olur.

mesaj birleştirme:: 16 Ekim 2013, 03:57:36

Eğer Master kesme kabul etmeyecek kadar önemli bir haber almak için adres hattını çektiyse, hiç bekleme yapmadan doğrudan oturum başlatmak istediği aygıtın adresini basacak.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 16 Ekim 2013, 04:05:14
Bu bekleme isleri bence sakat. Bir yandan iletisim hizini artirmaya calisirken bir yandan da ornegin 1ms lik bekleme koymak bence interface'i verimsiz kullanmak olur.

Zira 115200 Baudrate ile 1 ms zaman diliminde 11 byte gonderebiliyoruz.

Toplamda 5 kartimiz olsa her biriyle ->Adres->Komut <-Cevap seklinde konusma yapilsa bu toplamda 15 byte yani 1.3 ms demektir. 1ms kuru kuruya beklemektense 1.5 ms de kartlari sorgulamak bence daha mantikli.

Ana islemci tum kartlara 1.5 ms de hal hatir sorabilir.

Bu islemi her 100ms de bir kez tekrarlasa bence sorun cozulecek.



Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: Klein - 16 Ekim 2013, 04:16:03
Bir de şöyle bak hocam. Bir tane LCD ve Bir tane de akselerometre kartın var.  LCD'yi Akselerometreden gelen bilgiye göre güncelleyeceksin. ya da ortalama 500-100mS aralıklarla güncelleyeceksin. Kalan 50 Milisaniyede  boş yatacaksın. 100milisaniyde bir akselerometreyi sorguladığında bir çok veriyi kaçırmış olacaksın.
Bence zaman sınırı koymak çok doğru bir yaklaşım değil.  Multi-Master çalışmak sanki daha efektif olacakmış gibi geliyor bana. Bus yapısı adres hattının çift yönlü çalışmasına  müsait.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 16 Ekim 2013, 04:24:05
Olayin cok karmasiklasip yazmasi zor programlar gerektirmesinden korkuyorum.

Ote yandan eger sik sik okunmasi (hal ve hatiri sorulmasi) gereken kartlar varsa zaten bunlar ana islemci tarafindan dogrudan PPJ bus sorgulanarak yapilabilir. Ornegin her 10 ms de bir bir sensor okunacaksa ana islemci bunu zaten dogrudan PPJ bus uzerinden ilgili karta ulasip sensor verisini okur.

Bence bir noktada uzlasmak gerekiyor.

Busin hizi belli. BUS'i zorlayip diger kartlarin calismasini sekteye ugratacak uygulamalar icin PPJ busi  kullanmak yanlis olur. Eger boyle durumlar olacaksa bu tip donanimlar dogrudan islemciye baglanmali.

2x16 LCD bile  50 ms de bir basilacak farkli textler icin okunmasi guc goruntuler olusturur.

Ne dersin interrupt icin cozum aramaya devam etmelimiyiz yoksa PPJ bus budur elinden gelen budur deyip ornek bir iki kart tasarlayip acik proje sunmalimiyiz?

Bana sorarsan PPJ BUS bu haliyle pek cok alanda kullanilabilecek hale geldi. Daha fazla didiklememeliyiz.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: Klein - 16 Ekim 2013, 04:36:08
Şöyle bir alternatif üzerinde de düşünebiliriz.
Adres data hattını çift yönlü çalıştırırız.  Ama adres-Data değil Meşgul( ya da oturum açık) hattı olarak kullanırız.
Enerji verildiğinde herkes reseet durumunda.

Master adres gönderirken 2 byte olara gönderir. ilk byte her zaman 0 olur.  Aynı anda Master ile birlikte başka bir aygıt hatta girmişse , dominant olan master olacağı için diğer aygıtlar hattan çıkar ve dinleme durumuna geçer. adresi alan slave cevap verir ve oturum açılmış olur.  Busy hattı tekrar Hi olana kadar, bağlantı sağlanan cihaz haricinde hiç bir slave hatta girmez. Hat Hi olunca. kesme gönderecek olan slave Busy hattını alır ve kendi adresini basar. kendi adresi 1 byte olur. diğer slave aygıtlar ilk byte olarak 0 almadıkları için  zaten kendi işlerine bakarlar. Slave hatta girdiğinde Master müsait değil veya başka bir aygıt ile haberleşmek istiyorsa, dominant olduğu için her durumda Master'in dediği olur.

Transistörün E-C uçları arasına bir diyot atıp, pini giriş veya çıkış olarak seçip çalıştırabiliriz. Eğer tek pini giriş-çıkış yapmak zahmetli  diyen olursa , ikinci bir pin kullanır. bu kısım tasarımcıya kalmış. 
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 16 Ekim 2013, 04:49:53
Hocam UART da TX hattini ayni anda kullanmaya kalkacak birden fazla slave  toparlanmayi gerektiren durumlar olusturacak. (UART error flaglar harekete gectimi bunlari sifirlamak ve hey sen sen de sifirladinmi haydi tekrar konusmaya baslayalimmi sorgulari gerektirecek yada bekleme rutinleri isteyecek)

Soyle dusunelim. /BUSY hatti high iken bus kullanima acik olsun.

Fakat iki slave de  ayni anda Data hattini sahiplenip veri gondermeye kalksin. (Bu durum pek ala olabilir. )

Bu gidecek veriyi bozacak hatta UART hata flaglarindan bazilarini harekete gecirecek.

Bu durumdan karsilikli kurtulmak icin bile bayagi bir akilli kod kosturmak gerekir.

Valla acik soylemek gerekirse benim gozum korktu. Son derece karmasik durum makinesi kurmak gerekiyor. Ustesinden gelebilirmiyiz bilemiyorum. Hani hattimiz cok cok hizli olsa da karsilikli handshake ler yapsak.

Eger Adres/Data olarak isimlendirdigim hatti iki yonlu yapmamiz bahsettigin kodlamaya izin verecekse yapalim. Sonucta RX-TX hattindan cok farki olmayacak. Ayni pini I/O yapmak kacinilmaz cakismalara neden olacagindan ilave diyod ve ekstra 1 islemci pini daha kullanalim.

Fakat cok karmasik program gerektirecegine eminim.



Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: Klein - 16 Ekim 2013, 04:51:46
Bus yapısıyla oynamayı gerektirecek bir durum yok.
Şöyle yapılabilir. 
Ben gelen sorguya cevap veririm , kesme mesme beni ilgilendirmez diyen arkadaş, hattı tek yönlü yapar.  Hattın tek yönlü, ya da çift önlü olması, hatta bağlı diğer cihazların durumunu etkilemeyecektir.  Benim kesme gerektirecek verim var diyen arkadaş çift yönlü yapar.
Ama her şart altında , bu hattın Adres-Data yerine Bus Master hattı olarak kullanılması taraftarıyım.

Modbus Master-Slave çalışan bir yapı. Ürettiğimiz cihazlarda otomasyon bağlantısı olmasını istediğimiz için tümü modbus ile çalışıyor. Başka protokol kullanamıyorum. Bazen Maste-Slave yapısı yüzünden bin takla atmak zorunda kalıyorum. Ben kesinlikle kesme olmalı diyorum. Aksi durumda işleri kolaylaştıralım derken , zorlaştırabiliriz.

mesaj birleştirme:: 16 Ekim 2013, 04:58:13

Ben biraz bunun üzerine çalışayım. 
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 16 Ekim 2013, 05:01:11
Ongordugum PPJ BUS yapisinda Data ve  A/D hatti uzerinden nasil bir iletisim yapacagimi akilarda soru birakmayacak sekilde anlattigimi saniyorum. Geriye sadece komut setlerini olusturmak kalmisti. Sozkonusu yapida Master denetiminde sorgulamali bir veri trafigi vardi. Tek olumsuzlugu, hic bir slave kart kendi basina mastera cagrida bulunamiyordu.

Senin onerdigin yapida onerimdeki  olumsuzlugun da cozulebilecegini soyluyorsun.
Kafamizda bir seyler sekillenmesi acisindan onerinin  detaylarindan bahsedermisin.

Slave dogrudan Master ile iletisim kurmak isterse ne yapacak? Master herhangi bir slave ile konusmak isterse ne yapacak? Master ve slave kart ya da iki slave kart ayni anda bus'i sahiplenmek isterse ne olacak? Vs vs....

115200 baud rate durumunu da gozonune alip olayi bir kez daha irdeleyelim. (Slave kartlari istisnalar haricinde en ucuz 8 bit mikrolarla yapmak isteyecegimizi de unutmayalim.)
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: Klein - 16 Ekim 2013, 05:19:18
Önce hatta aynı anda girme meselesini biraz konuşalım.  Bizim  Bus yapımızda H durumu pullup ile sağlanıyor. Bu durumda iki aygıt aynı anda hatta girdiğinde, hatta 1 basan değil 0 basanın biti geçerli olur. Aslında sorun 2 aygıtın aynı anda hatta girmesi durumunda değil, aynı anda girememesi durumunda oluşur. Eğer iki cihaz gecikmeli olarak hatta girerse ve ikisi de 0 gönderirse hata oluşabilir. Bunun üzerine biraz düşündükten sonra, planımın geri kalanına şekil vereyim. Bu arada eski plan ile yolumuza devam edelim. Eğer kart çizecekseniz , transisteöre bir diyot koyun bence . En azından çift yönlü çalışırsak, başımıza neler  gelebileceğini izleyeceğimiz bir kartımız olur.

Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 16 Ekim 2013, 05:25:35
Yok pcb cizmeyecegim. Delikli karta tellerle dededen kalma yontemle yapacagim. (Su anda beni karta baslamaktan alikoyan tek sey 18 pinlik entegre soketimin olmayisi, jumperlarla ISP secim isi de gozumde buyuyor.)

Ayni anda hatta girmekle bahsettigim Rx-Tx hatti değildi. Ayni anda iki kart Busy hattini low yapip pesinden Rx-Tx hattini sahiplenmek isterlerse ne olacagiydi. Fakat bunun onemi yok. Diyelimki cakisma oldu ve bu durumdan kurtulmak gerekecek. Tamam herkes kendi UARTini sifirlar iletisime hazir konuma gecer. Ama bukez de diger iki kart ayni anda BUS'i kullanmak isteyebilir.

Bu arada bir de olsa ortaya cikacak en kotu durum ve buna kesinlikle bir cozum getirmek gerekir.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: ErsinErce - 16 Ekim 2013, 11:51:46
a/d hattı low a döndüğü anda data hattı slaveler tarafından aşağı çekilse bu aşağıda kalma süresi adres bilgisi verse çok mu karışık olur?
master slaveleri bu şekilde senkronlayacağı için sinyaller üst üste biner en yüksek adresli slave bilgi iletmiş olur
slaveler aynı anda okuma yapıp kendi adresi gönderilmediyse sonraki peryoda kendi bilgisini eklese

yada txden veri gönderilirken rx buffer aynı anda dolacağı için canbus benzeri kontrol gerçekleştirilebilir.
fakat birden fazla cihazda int oluştuğunda senkron bozulmadan slave adresleri gelmesi ve
masterın tekrar slaveleri bilgi göndermesi sırasını algılaması için frame zamanları şart
bir nevi timeout olarakda kullanılacak

ya da master tx de ilk başta boş frame yakalayana kadar a/d yi high low yapabilir. adresi gönderilmiş olan susacağı için hat boşalıp rutin akış devam edebilir
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 18 Ekim 2013, 20:40:10
Aşağıdaki mesajı editleyerek değiştireceğim.

0x04 Sınıfından Alfanumerik LCD kartına ait komut seti;

0x00 Durumunu soyle
0x01 Tuş sayısını söyle
0x02 Led sayısını söyle
0x03 LCD bilgilerini soyle (Kaç satır kaç sutun)
0x04 E2Rom boyunu soyle

0x10 Gorevi iptal et

0x20 Tuşları gönder

0x30 Ledleri sondur
0x31 Ledleri yak
0x32 Ledleri flash et

0x40 Düdüğü sustur
0x41 Düdüğü ottur
0x42 Düdüğü kisa beeplet  1/4 sn
0x42 Düdüğü uzun beeplet 1/2 sn
0x43 Düdüğü kesik kesik surekli ottur

0x50 Init LCD
0x51 Ekranı sil
0x52 Cursor on
0x53 Cursor off
0x54 Cursoru X-Y adresine taşı
0x55 Cursorun bulunduğu yerde verileri yaz
0x56 Cursorun bulunduğu yere Romdan hazır mesajı yaz


LCD parametreleri?
Shift on, shift off
Cursor formatı (blok , alt çizgi)
Karakter formatı
display on, display off
status bilgisi
display belleğini oku


0x60 E2Roma verileri yaz
0x61 E2Romdan verileri oku

Bu renk Slave karttan ana karta giden verileri gostermek icin kullanildi

----------------------------------------------------------------------------------------------
0x00 Durumunu soyle

0x04 0x00 Durum

0x00 Her sey yolunda
0x01 Mesgul (E2Rom beni mesgul ediyor)


0x01 Tuş sayısını söyle

0x04 0x01 N

0xN Tus takimimda N(hex) tane tus var

0x02 Led sayısını söyle

0x04 0x02 N

0xN  N(hex) tane ledim var

0x03 LCD bilgilerini soyle (Kaç satır kaç sutun)

0xSD  S(hex) tane sutun var D(hex) tane satir var

0x04 E2Rom boyunu soyle

0xSD 0xRT  SD*256+RT byte uzunlugunda E2ROM var.

----------------------------------------------------------------------------------------------

0x10 Gorevi iptal et


Ne yapiyorsan yap isi yarida birak yeni komutumu bekle


----------------------------------------------------------------------------------------------

0x20 Tuşları gönder

0x04 0x20 16 bit Tus verisi

En son tarama yaptiginda okudugun tuslarin konumunu soyle

Ornegin 0x81 0x42 15. ve 8.  6.  ve 1. Tuslar basili (LCD tus takiminda en fazla 16 tusumuz var)


----------------------------------------------------------------------------------------------
0x30 0xHL Ledleri sondur

0xHL icin Ornekler

0x01 0. Ledi sondur
0x80 7. Ledi sondur
0xFF  8 ledi de sondur
----------------------------------------------------------------------------------------------
0x31 0xHL Ledleri yak

0xHL icin Ornekler

0x01 0. Ledi yak
0x80 7. Ledi yak
0xFF  8 ledi de yak
----------------------------------------------------------------------------------------------
0x32 0xHL Ledleri flash et

0xHL icin Ornekler

0x01 0. Ledi flash et
0x80 7. Ledi flash et
0xFF  8 ledi de flash et

----------------------------------------------------------------------------------------------

0x40 Düdüğü sustur
0x41 Düdüğü ottur
0x42 Düdüğü kisa beeplet  1/4 sn
0x42 Düdüğü uzun beeplet 1/2 sn
0x43 Düdüğü kesik kesik surekli ottur

----------------------------------------------------------------------------------------------
LCD komutlari
----------------------------------------------------------------------------------------------

0x60 Data1 Data2 Data3.... E2Roma verileri yaz

Data1 8 bit E2Rom Adresi
Data2 8 Bit Yazilacak veri sayisi
Data3 8 Bit veri katari

----------------------------------------------------------------------------------------------
0x61 Data1 Data2 Data3.... E2Romdan verileri oku

Data1 8 bit E2Rom Adresi
Data2 8 Bit okunacak veri sayisi
Data3 8 Bit veri katari
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: Klein - 18 Ekim 2013, 21:28:15
LCD parametreleri?
Shift on, shift off
Cursor formatı (blok , alt çizgi)
Karakter formatı
display on, display off
status bilgisi
display belleğini oku
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 18 Ekim 2013, 21:44:51
Ekleyelim hocam.

Bu komut setini hazirlamak bile kendi basina bir ismis.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: ErsinErce - 18 Ekim 2013, 22:00:20
hem grafik hem karaktere göre ayarlamak lazım
ya da 2 farklı sınıf mı olacak
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 18 Ekim 2013, 22:04:20
Grafik LCD den bahsediyosan o tamamen ayri sinif olsun hocam.

Ben daha once GLCD ile hic calismadim. Benzer calismayi yaparsaniz iyi olur.

GLCD konusunda bazi onerilerim olacak onlari soylemek isterim.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: ErsinErce - 18 Ekim 2013, 23:00:56
Alıntı yapılan: z - 18 Ekim 2013, 22:04:20
Grafik LCD den bahsediyosan o tamamen ayri sinif olsun hocam.

Ben daha once GLCD ile hic calismadim. Benzer calismayi yaparsaniz iyi olur.

GLCD konusunda bazi onerilerim olacak onlari soylemek isterim.
aklıma gelenler bunlar şimdilik
önerileriniz nelerdir hocam?



Durum
X ekseni nokta sayısı
Y ekseni nokta sayısı
tarama yönü (yatay / dikey)
Init GLCD
Clear GLCD
Güncel X koordinat
Güncel Y koordinat
text boyutu
text içeriği
daire çizme (kenar kalınlığı ,içi dolu/boş, başlangıç bitiş açıları, x y uzunlukları) [gerekirse elips oluşturulsun]
dörtgen çizme (kenar kalınlığı, içi dolu/ boş, x y uzunluğu, çizgi başlangıç bitiş noktaları)
satır kaydırma
bolge tersleme
DRAM okuma
DRAM yazma
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 18 Ekim 2013, 23:31:03
Dortgen daire vs diyecektim onlari yazmissin zaten. Line ozelligini unutmuyoruz.

Ilave olarak dokunmatik eklentisi icin;

Romda standart buton resimleri olsun. Basilmadiginda yukari cikik, basildiginda asagiya gocmus resimler.

Bunlari exkranda istedigim x-y koordinatlarina komut ile serpistireyim.

Led vb resimlerde olsun. Yanik sonuk vs.

Sanirim dusuncemi anladin. Ekran tasarimini sadece ana islemciden komut yollayarak cok basitce yapayim ardindan hangi tusa basilmis anlayayim. Ekrandaki ledleri yakip sondurebileyim.

Hazir tus led sablonunu begenmeyen  komutlari kullanarak basinin caresine baksin.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: fatih6761 - 19 Ekim 2013, 03:30:34
Alıntı yapılan: z - 18 Ekim 2013, 23:31:03
Dortgen daire vs diyecektim onlari yazmissin zaten. Line ozelligini unutmuyoruz.

Ilave olarak dokunmatik eklentisi icin;

Romda standart buton resimleri olsun. Basilmadiginda yukari cikik, basildiginda asagiya gocmus resimler.

Bunlari exkranda istedigim x-y koordinatlarina komut ile serpistireyim.

Led vb resimlerde olsun. Yanik sonuk vs.

Sanirim dusuncemi anladin. Ekran tasarimini sadece ana islemciden komut yollayarak cok basitce yapayim ardindan hangi tusa basilmis anlayayim. Ekrandaki ledleri yakip sondurebileyim.

Hazir tus led sablonunu begenmeyen  komutlari kullanarak basinin caresine baksin.

Hocam olmuşken DirectX 9'da desteklesin :D Belki oyun vs. de yazarız ppj bus'a...
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: hasankara - 19 Ekim 2013, 12:54:25
sanırım bilgisayar anakartlarında da çevrebirimleri bu tarz bağlantılanıyor. geçenlerde elimde eski ve bozuk bir anakart vardı parçalayım dedim entegrelerini falan sökeyim dedim. üzerinden İTE isimli IT8718F-S kodlu entegre dikkatimi çekmişti datasheetine baktım. dma şeklinde haberleşme kullanıyor, dma ile ilgili bir çalışma yapmadığım için pek bilmiyorum ama uart a göre çok daha hızlı haberleştiği aşikar.

datasheeti ekleyeyim belki daha uygun fikirler verebilir. http://www.rom.by/files/IT8718F-S.pdf (http://www.rom.by/files/IT8718F-S.pdf) çünkü bende uart ile çoklu donanım kontrolünün çok kısıtlı olacağını düşünüyorum. gerçi bu buton led buzzer 2x16 lcd gibi ufak tefek şeyler için belki hissedilmeyebilir. sizinde aklınıza geldiği gibi usb, ethernet veya diğer uart tabanlı çalışan modüller olabilir bunlarda can sıkıcı hızlarla karşılaşabiliriz. velhasıl kelam ortaya güzel bir şeyler elbette çıkabilir ve geliştirme sürecini rahatlatan bir teknik olur ama bu uart la kısıtlanmış olur. çok uzaklara taşımayacaksak ek donanımlarımızı daha geniş veriyolları ile kullanmak, dma gibi, daha anlamlı olabilir diye düşünüyorum. internet ortamında atıyorum dma şeklinde haberleşme kullanılarak yapılan bir çalışmaya rastlamadım. hemde bu şekilde daha özgün bir şeyler olabilir.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 19 Ekim 2013, 13:28:27
Bir zamanlar Picclite + Mplab V8 kullanarak 12F675 ile calismistim. Simdi 16F628 e kod yazmak istedigimde sanirim lite ozelliginden dolayi kullanamiyorum.

Internete bagli olmayan XP bir makinem var. Bununla en kisa yoldan 16F628 icin C kod yazabilmek icin programa ihtiyacim var.

Ne yapabilirim?

Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: hasankara - 19 Ekim 2013, 13:45:27
eğer mesele düşük pinli entegrelerdede bu donanımlara erişmekse aklıma en basiti shif registerler geliyor veya philips in bir entegresini görmüştüm ı2c ile genişleme pinlerine ulaşmış oluyoruz çift taraflı olarak haberleşebiliyoruz yani çift yönlü shift register gibi.

örnek olarak; sizin vermiş olduğunuz örnekte ledler butonlar röleler lcdler belki adc modülleri de olabilir, olan bir çevre birim kartı yapalım bunu 16f877 lede yapabiliriz ve ucuz bir entegre sayılır. portd de psp modülü var, zan ediyorum ki dma tarzı kullanılan bir modül. bu kart için psp modülü direk çıkışa verilir ve ek olarak uartla çift taraflı haberleşebilecek genişleme entegresi koyarak, genişleme kısmını da psp pinlerine paralel bağlayarak ayrekten uart haberleşmesi ilede psp e ulaşabiliriz. yani ana katman psp modülü olur, uart kullanılacak ise ara katman olur. bu şekilde psp si olan  (ben 64 pinli picleri de kurcaladım gördüklerimin hepsinde psp tarzı pinler yerleştiriliyor), entegreleri ana kontrolcü olarak kullanırsak hiç ara katman kullanmadan daha hızlı haberleştirebiliriz yada sizin bahsettiğiniz gibi uart lı bir ara katman kullanabiliriz.

bu tarz çoklu çevrebirimi olacak kartlar için yazılımsal bir haberleşme katmanı oluşturma noktasında da bir öneride bulunabilirim. bahsettiğim entegre kurcalanabilinir ve bu entegreye uygun bir kart tasarlanabilinir. bu karta dma şeklinde ulaşabileceğiz ilk başta ve bu entegrenin datasheetine uygun olarak çevre birimleri kullanmaya çalışılınır herhangi bir dma kullanılabilecek pic ile olaiblir. burada yazılımsal haberleşme konusunda 0 dan başlamaktansa ilerleyen zamanlarda karşılaşabileceğimiz bir çok hataları gidermek için, hazırda bir takım geliştirilen tekniklere bu entegre sayesinde ulaşabiliriz. bu durumlar göz önünde bulundurularak belki dahada bir esnek haberleşme katmanı elde edilebilinir.

zahmetli şeylerden bahsediyorum sanırım :)
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 19 Ekim 2013, 13:51:05
Bu saatten sonra fazla kurcalamayalim. Eger USART kullanarak oluyorsa olsun bitsin. Mevcut yapi pek cok alanda ise yarar mini kartlar yapmamiza izin verecek. Oldu oldu olmadi cay demleriz.

Benzer bir calismayi paralel olarak bir baska iletisim teknigi ile siz de gerceklestirebilirsiniz.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: hasankara - 19 Ekim 2013, 14:05:51
evet bu olabilir kulağa hoş geliyor bununla ilgilenebilirim diye düşünüyorum. şu aralar yoğun bir şekilde meşgul olduğum sosyal bir projeyle ilgileniyorum bu yüzden ciddi bir sorumluluk benim için bu yüzden bu projeden sonra psp olayına girmeye niyetlendim aklımın bir köşesine yazdım. eğer halihazırda çevrebirim kartı geliştirirseniz sizin projenize bende dahil olmak isterim.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: sadogan - 19 Ekim 2013, 14:06:29
Alıntı yapılan: z - 19 Ekim 2013, 13:28:27
Bir zamanlar Picclite + Mplab V8 kullanarak 12F675 ile calismistim. Simdi 16F628 e kod yazmak istedigimde sanirim lite ozelliginden dolayi kullanamiyorum.

Internete bagli olmayan XP bir makinem var. Bununla en kisa yoldan 16F628 icin C kod yazabilmek icin programa ihtiyacim var.

Ne yapabilirim?
Ccs c ile yazarsanız
https://www.picproje.org/index.php/topic,4523.195.html (https://www.picproje.org/index.php/topic,4523.195.html) burda link var
yada
https://mega.co.nz/#!2ABnyYiY!fH9bqX-D6LS7Vcwoi9L2Qxil20w4b9C6xc-coIZ8vKY (https://mega.co.nz/#!2ABnyYiY!fH9bqX-D6LS7Vcwoi9L2Qxil20w4b9C6xc-coIZ8vKY)
burdan direk indirebilirsiniz
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 19 Ekim 2013, 14:51:58
Ilaci kaldirilmis onun da.

Hi-Tech tercihim fakat bulamazsam asm ile yazacagim.

16F628 ile calisabilecegim temiz Hi-Tech linkiniz varmi?
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: camby - 19 Ekim 2013, 14:53:56
Hocam hitech mi kaldi , xc8 var artik yada c18 belki
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 19 Ekim 2013, 15:02:44
Hocam ben eskide kaldim. En son 5 sene once 12F675 kullanmistim.

O bahsettigin de olur. Nerden yukleyecegim? 16F628A yi bana full kullandiracaksa hemen indirip baslayayim kodlamaya.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: JOKERAS - 19 Ekim 2013, 16:11:58
Selam,
http://www.microchip.com/mplabx-ide-windows-installer (http://www.microchip.com/mplabx-ide-windows-installer)
http://www.microchip.com/mplabxc8windows (http://www.microchip.com/mplabxc8windows)
İlk olarak İDE'yi sonra derleyiciyi kurun.

Proje oluşturmak ide'de "New project" tıklayıp açılan pencerenin sol tarafından "Microchip Embeded" tıklayın
sağ taraftaki pencereden "Standalone project" tıklayın  işlemcinin adını tam olduğu gibi yazıp "Next" butonuna basın hangi kullanıyorsanız programlayıcınızı seçin,yeşil olanlar kullanacağınız işlemciyi destekleyen cihazlardır kullanmıyorsanız önemli değil "Next" tıklayıp geçin.
Açılan pencereden yüklemiş olacağınız XC8 V1.21 compiler'ı işaretleyip "Next" butonuna basın projenin adını verip yolunu gösterip "Finish" butonuna basın projeniz hazır.

IDE'nin  sol tarafında projenizi görünecek, orada bulunan "C source"  sağ tıklayıp çıkan pencereden "New"
tıkladığınızda ne tür bir dosya oluşturacağınızı belirleyip (ben "Main file" seçiyorum)  isim verip "Finish" tıklayın  bu kadar.
Projenin hex,cof dosyaları proje klasöründe "dist--> default --> production" içinde.

Aslında herhangi bir iş için kullanacağımız tüm dosyaları Header,C, interrupt dosyalarını vs hazır olarakta yapılıyor ama burada anlatmak biraz uzun sürer. 

Dosyalar Windovs X86/64 içindir.





Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 19 Ekim 2013, 17:24:08
Ilgilenen arkadaslara cok tesekkurler. uzun ugraslar sonunda Mac'e Mplab ve XC8 yukleyip calistirmayi basardim. Su anda tek sorunum PIC programlayiciyi da calistirmak.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 20 Ekim 2013, 16:40:50
(http://www.cncdesigner.com/wordpress/wp-content/uploads/LCDmini-PPJ.png)

LCD nin Enb bacagina bagli Jumperi sokmek zorundayiz. Bu bacagi low yapamiyoruz.

Edit: Aslinda sakincasi yok. Jumperlari ilk power on asamasinda okuyacagiz. Bir daha okumamiza gerek yok.

Jumper pozisyonunu okumak icin LCD'ye istem disi komut yollasak da nasil olsa LCD'yi daha sonra Init edecegiz.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: justice_for_all - 20 Ekim 2013, 17:07:32
RA4 pini yalnış hatırlamıyorsam open kollektör pin idi.O pini LCD nin enable pinine bağlamışsınız hocam.RA4 pinini giriş yapsanız daha iyi olmazmıydı.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 20 Ekim 2013, 17:44:22
Alıntı yapılan: justice_for_all - 20 Ekim 2013, 17:07:32
RA4 pini yalnış hatırlamıyorsam open kollektör pin idi.O pini LCD nin enable pinine bağlamışsınız hocam.RA4 pinini giriş yapsanız daha iyi olmazmıydı.

Haklisin. Degistirelim.  Elimdeki Buzzer elektronik devreli hazir duduk diye biliyordum ama bobinli hoparlormus. Elektronik olani da sorunsuz ayni pine baglanabilir.

Bu durumda Dudugu A4'e alirsam B6 yi da Enb sinyali icin LCD ye baglayabiliriz.

Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: justice_for_all - 20 Ekim 2013, 17:58:00
hic deneme sansiniz oldunu hocam.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 20 Ekim 2013, 18:33:59
Kodlari yazmaya basladim ama derleyici sikintisi cikti. Hitech ile devam edecegim.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: serdararikan - 20 Ekim 2013, 19:03:18
Burada benim kafama takilan birkac soru var.
Ben bir musteri olsam neden sadece 2x16 lcd icin maliyeti bu kadat artiracak bi urunu satin alayim?bence yapilacak urunlerin ya karmasik olaylara cozum sunmasi yada icerisinde fazla sayida birim bulundurup musterinin isini kolaylastirmasi gerekir.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 20 Ekim 2013, 19:52:22
Maliyet kac lira artti?  LCD yi sayma. Onu zaten hazir kit almasan da sen zaten alacaksin. Gercekten merak ettim. LCD disindaki malzemeler kart dahil kac lira tutar?

Malzeme listesi

16F628 yada esdeger ozelliklerde islemci.
6 x 1N4148
2 x  BAT54
4 x  Led
1 x  Buzzer
2 x 2N2222
1 x 20Mhz Xtal
2 x 22p
2 x 100n
6 x Direnc
1 x 10uF
4 x Buton
2 x Jumper ve pinleri
1 x 5 li tunik konnektor
1 x PCB

Diger avantajlari defalarca yazdik. En onemlisi 3 pinden dunya kadar donanim ekliyorsun.

Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: justice_for_all - 20 Ekim 2013, 20:02:21
hemde ana kartta herhangi bir degisiklik yapmadan.ana kartinizda bisey unuttugunuzu ve eklenti yapmaniz gerektigini dusunup anakarti tekrar tasarlayip yapacagin maliyet yerine bence bu cok cok uygun.

islemcinizde pin kalmadi derdide yok en dusuk pinli islemci ile bile istediginizi yapabilirsiniz.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: omereliusuk - 21 Ekim 2013, 01:17:40
Alıntı yapılan: justice_for_all - 20 Ekim 2013, 20:02:21
hemde ana kartta herhangi bir degisiklik yapmadan.ana kartinizda bisey unuttugunuzu ve eklenti yapmaniz gerektigini dusunup anakarti tekrar tasarlayip yapacagin maliyet yerine bence bu cok cok uygun.

islemcinizde pin kalmadi derdide yok en dusuk pinli islemci ile bile istediginizi yapabilirsiniz.
hatta atmega8 gibi bir işlemci kullanılırsa extra pin de eklenebilir. kullanılan portlar bile geri kazanılabilir. üstelik maliyet de düşer. 1$
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 23 Ekim 2013, 11:48:43
Nihayet interrupt sorununa da basit bir çözüm buldum.

Öncelikle daha önceleri her çipte USART modülünde 9 bit adres modu olmayacağı varsayımı ile USARTı 8 bit normal modda kullanmayı öngörüyordum. 9 bit modu, PIC16 serisinde var. 8051 serisinde de. Dolayısı ile ATMEL serisinde de olması lazım. Kullanmayı arzuladığınız çipte bu özellik yoksa da bu benim sorunum değil.

Bu durumda RX-TX hattından giden veri, data mı adresmi diye ayrı bir hat kullanmamıza gerek kalmıyor. Boşa çıkan Adres/Data hattının adı Int olacak.

Slave cihazlardan birileri ana işlemcinin dikkatini çekmek isterse bu hattı sorgusuz sualsiz low yapıyor. Bu, Ana işlemcide ext int anlamına geliyor.

Tamam int üretildi de kim(ler) üretti?

Bu interrupt tek bir slave tarafından üretilebileceği gibi aynı anda birden fazla slave tarafından da üretilmiş olabilir.

Ana işlemci sorgulayacak.

1. slave senmisin? 2. slave senmisin? ....255. slave senmisin?

ŞAKA ŞAKA, böyle değil tabiki.

Ana işlemci data hattından 0x00 adresine ADR şekline komut yolluyor.

0x00 tüm slaveler tarafından cevaplanması gereken bir komut.

Komutun anlamı?

Millet, 0x00 adresini takip eden data ile kendi adresininizi AND leyin. Sonuç 0'dan farklı ise INT hattını lowda tutun.

Ana işlemci 8 kez bu komutu yolluyor ve komut aşağıdaki gibi.

0x00 0x01
0x00 0x02
0x00 0x04
0x00 0x08
0x00 0x10
0x00 0x20
0x00 0x40
0x00 0x80

en fazla 8 sorgu sonunda ana işlemci interrupt üreten slave kartın adresini öğrenmiş oluyor.

Yöntemi nasıl buldunuz?

Öte yandan PPJ bus var diye 255 tane kart takacak halimiz yok. 4..5 tane kart için sıra ile senmisin senmisin diye sormak da yeterli.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: ErsinErce - 23 Ekim 2013, 12:49:12
yöntem güzel hocam

fakat 0x05 ile 0x15 int e girdiğinde  sadece 0x15 tespit edilmiş olacak

0x05 in tespiti nasıl yapılacak?
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 23 Ekim 2013, 13:09:20
0x15 ve 0x05 adresli iki kart aynı zamanda interrupt ürettiyse önce 0x15 cevaplanırve bu int durumu ortadan kalkar. Ardından 0x05 cevaplanır. Bu durumda interrupt önceliği kart adresi ile orantılı olur.

Fakat fikrimi sorarsanız, int hattı low yapıldığında 4..5 kartın int statusu tek tek sorgulanır. Daha sonra sorgu sonuçlarına göre birden fazla int kaynağı varsa öncelik durumu ana işlemci tarafından belirlenir.

Dediğim gibi bu bus'a bağlayacağımız kart sayısı 4...5 i geçmeyecektir.

Kart sayısı artınca BUS zaten artan trafiği kaldırmayacaktır.

mesaj birleştirme:: 23 Ekim 2013, 13:29:04

Bu durumda strateji şu şekilde olur.

İnterrupt üretecek slave int hattını low yapar.

Ana işlemci o esnada iletişim halinde olduğu kartla işinin bitmesini bekler.

Ardından Tek tek kartlardan Int Status bilgisini sırayla ister. (Sorgulama int önceliği ile yaplabilir.)

İnt hattını low yapan slave sorgulanır sorgulanmaz hattı serbest bırakır. Böylece int hattı diğer slavelerin kullanımına sunulur.

PPJ bus'a bağlanacak 4..5 tane kart için en optimum yöntem bu gibi görünüyor.

Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 23 Ekim 2013, 15:58:43
Romda boş yer kalırsa hazırda olması arzulanan ve LCD den verilecek mesajlar için de bir çalışma yapmak gerekiyor.

Hazır
Mesgül
Ayarlar
Geri
İleri
Çıkış
Sakla
Vazgeç
giriniz
Artır
Eksilt
Menu
???
???
???
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: justice_for_all - 03 Kasım 2013, 23:08:39
Deneme sansiniz oldu mu hocam?
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 03 Kasım 2013, 23:20:45
Basimda pek cok is vardi. Fakat ara ara ugrasmaktayim.

4 adet ledden istenenler yakilip sondurulebiliyor yada flash et denebiliyor. Duduk otebiliyor yada kesik kesik beepliyor.

Bunlara ilave olarak klavyenin ve ledlerin tarama yontemiyle kullaniliyor olmasi int rutinine cok yuk getirdi ve haberlesme rutinleri veri kacirmaya basladi.

ASM'ye basvurmadan sil bastan yeniden yazmaya basladim.

MCU'yu 16Mhz de calistiriyorum. Belki 20Mhz de isler rahatlayacak ama xtalim yok.

Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: justice_for_all - 03 Kasım 2013, 23:35:43
Hangi MCU yu kullaniyosunuz hocam
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 03 Kasım 2013, 23:41:12
16F628A, semanin ayinisiyla calisiyorum. Sadece 16Mhz xtal kullanmak zoruda kaldim.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: justice_for_all - 03 Kasım 2013, 23:46:53
anladim hocam yapabilecegim bise varsa yapayim.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 03 Kasım 2013, 23:58:51
Semada sorun kalmadi. LCD/Klavye/ledler duduk ok. Adres/Data ve RX/TX hatlarindan3.3v/5v level konverterler sayesinde karsidaki islemci ile sorunsuz haberlesebiliyor.

Sema %100 test edildi.

Ugrasirim zamanim var dersen verdigim semaya kod yazabilirsin. Benim icin değil de kendin icin. Zevkine.

Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: justice_for_all - 05 Kasım 2013, 00:25:45
yazmaya basladim bile hocam ama seri port haberlesmesini yapamadim bir turlu.sanal ortamda calisiyorum ondan olabilirmi.siz tx/rx haberlesmesini test ettiniz degil mi hocam?
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 05 Kasım 2013, 09:17:03
Evet STM32F103lu bir kartla haberlestiriyorum.

Sanal ortamda karsisina da bir cip koyup ona da kod yazmaniz gerekecek.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: justice_for_all - 05 Kasım 2013, 12:54:42
hocam virtual terminalden data donderiyorum ama debug yaparak datalari bir turlu alamiyorum.islemci koyarak deniycem bide.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 05 Kasım 2013, 13:58:43
Virtual Terminal gibi bir kolaylık varsa ikinci bir çiple uğraşmana gerek kalmaması lazım.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: justice_for_all - 05 Kasım 2013, 14:31:47
virtual terminalde gonderdigim datalari gorebiliyorum ama virtual terminalden data gonderdigim zaman pic tarafindan alamadim datalari bi turlu.

bide hocam benim anlamadigimbir nokta var.siz bu kartlari iyi guzel yapiyosunuz peki bunlari kim uretcek diger kartlarin yazilimlarini kim yapacak?
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 05 Kasım 2013, 15:01:36
Kartı kim üretir hiç önemli değil. Önemli olan interface'e bir standart getirmek.

Diğer kartların yazılımı da bizi ilgilendirmiyor. Bu ilk kartın (PPJ-04) interface donanımı ve işlemci yazılımı diğer kartları tasarlamak isteyenlere referans olacak sadece.

Eğer yapı tutarsa forumda yakında uygulamalar çoğalır zaten. Bu durumu maddi anlamda değerlendirmek isteyenler de kart üretir.

8 bacaklı bir işlemciye PPJ04 bağlayarak uygulama yapmayı isterim.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 06 Kasım 2013, 23:33:36
10 Kbaud 16Mhz.  100.000 baud ile de çalışıyor fakat hata algoritmasını iyileştirmek gerekecek

EEprom yazma okuma haric diger komutlar test edildi.

(http://www.cncdesigner.com/wordpress/wp-content/uploads/LCDmini-PPJ.png)


(http://www.cncdesigner.com/wordpress/wp-content/uploads/PPJ-BUS.png)

Ustteki semada Master karta iliskin baglantilar solda gorulmekte. Sagdaki transistor vsler zaten 16F628 cipli devremizde mevcut.

Elimde schotky diyod  olmadigi icin 1N4148 kullandim ve sorunsuz calisiyor.


/*
* File:   main.c
* Author: bulentunalmis
*
* Created on October 19, 2013, 3:13 PM
*/

#include <htc.h>   

// Asagidaki 5 satiri PIC162xa.h icine yazdim

// volatile unsigned char Flag @ 0x20;
// volatile bit Error              @((unsigned)&Flag*8)+7;
// volatile bit Busy            @((unsigned)&Flag*8)+6;
// volatile bit AdrDedected         @((unsigned)&Flag*8)+5;
// volatile bit DataSource          @((unsigned)&Flag*8)+4;

#define Key   RA5
#define Duduk RA4
#define Lcd_E RB6
#define Lcd_R RB7
#define Biz 1
#define Master 0
#define Dly 0x20

volatile unsigned char Zaman;
unsigned char Debug, Zurna, Led, Tus, LedScan;
unsigned char MyAdr;

unsigned char Buffer[32];
unsigned char RxDat,TxDat;
signed   char WIndex=-1;
int Z,T;

void Cls(void);
void Lcd_Pos(char, char);
void Lcd_Text();
void Lcd_NewChar();


void Hata()
{
    Error=1;
    AdrDedected=0;
    DataSource=Master;
    WIndex=-1;
    RCIE=0;
}

void interrupt isr(void)
{

    if(INTF)
      {
        INTF=0;
        RCIE=1;     // USART Recieve int enable
        RxDat=RCREG;
        RxDat=RCREG;
        CREN=0; CREN=1;
        AdrDedected=1;
        WIndex=-1;
  }

   if(RCIF && RCIE && AdrDedected)   
     {
        if(FERR && OERR) Hata();    // Iletisim hatasi varsa stop
        else
          {
            if(DataSource==Biz)      // Bizim data mi geri geldi yoksa ustanin datasi mi?
              {
                DataSource=Master;
                if(RCREG!=TxDat) Hata();                // Bus'a birisi sarkmissa stop
              }
            else                                   // Usta bir sey yollamis
             {
               if(WIndex==-1)        // Ilk data adres bilgisidir
                 {
                   if(RCREG!=MyAdr)
                     {
               AdrDedected=0; // Adres bize ait değil
                     DataSource=Master;
               RCIE=0;
                     }
                   else // Adres bize ait
                     {
                        WIndex=0;
                        TxDat=Flag & 0xC0;                // Mesgul ve Hata durumumuzu bildirelim
                    TXREG=TxDat;
                        DataSource=Biz;
                     }
                 }
               else
                 {
                   if(WIndex>17) Hata();               // Komut dahil en uzun data treni 17 bytedir.
                   else {RxDat=RCREG; Buffer[WIndex]=RxDat; WIndex++;}
                 }
              }
          }
     }

if(TMR1IF)
      {
        TMR1H = 0xFE;   // TMR1 = 0xFE0C
        TMR1L = 0x0C;
        TMR1IF = 0;

        if(Zaman) Zaman--;
        T = (T + 1) & 0x3FF;
        Z = (Z + 1) & 0x3FF; // Z'yi Zurna degiskenine deger attiginda sifirla
        Osc ^= 1;

        switch (Zurna)
          {
              case 0: { Osc=1; break;}
              case 1: { if (Z & 0x100) Zurna=0; break; }
              case 2: { if (Z & 0x200) Zurna=0; break; }
              case 3: { if (Z & 0x100) Osc=1;   break; }
          }

        if(Osc) Duduk=1; else Duduk=0;
      }     
}


void MiliSec(unsigned char T)
{
Zaman=T;
    while(Zaman) {asm ("NOP");}
    asm ("NOP");
}

void Lcd_W4(char Dat)
{
unsigned char i;

    PORTA=(PORTA&0xF0)|(Dat&0x0F);
    Lcd_E = 0;
    for(i=0;i<Dly;i++) asm ("NOP");
    Lcd_E = 1;
    for(i=0;i<Dly;i++) asm ("NOP");
    RA0=0; RA1=0; RA2=0; RA3=0;
}

void Lcd_Write(char Dat)
{
Lcd_W4(Dat>>4);
Lcd_W4(Dat);
}

void Cls(void)
{
Lcd_R = 0;
Lcd_Write(0x01); // Clear Disp
MiliSec(4);
Lcd_Write(0x02); // Cursor Home
MiliSec(4);
}

void Lcd_Msg(const char *s)
{
Lcd_R = 1;
while(*s) Lcd_Write(*s++);
}

char Hex(unsigned char Dat)
{
    Dat&=0x0F;
    Dat+=0x30;
if (Dat>0x39) Dat+=6;
return(Dat);
}

void Lcd_Hex(unsigned char Dat)
{
Lcd_R = 1;
Lcd_Write(Hex(Dat>>4));
Lcd_Write(Hex(Dat));
}

void Lcd_Pos(char X, char Y)
{
Lcd_R = 0;
if (Y==0) Lcd_Write(0x80 + X);   
    else Lcd_Write(0xC0 + X);           
MiliSec(4);
}

void Crs(char Cmd)
{
Lcd_R = 0;
Lcd_Write(Cmd); // LCD Komut
}

void Lcd_Init(void)
{
Lcd_R = 0;
MiliSec(20);

Lcd_W4(0x03); MiliSec(10);
    Lcd_W4(0x03); MiliSec(10);
    Lcd_W4(0x03); MiliSec(10);

    Lcd_W4(0x02); MiliSec(10); // 4 Bit modu

Lcd_Write(0x28); // 4 bit modu, 1/16 duty, 5x7 font
Lcd_Write(0x28); // 4 bit modu, 1/16 duty, 5x7 font
Lcd_Write(0x08); // display off
Lcd_Write(0x0C); // display on, blink curson off
Lcd_Write(0x06); // entry mode
// Cls();
}

void Lcd_NewChar()      // Buffer 0'daki verilerle yeni karakter tanimla
{
char i;

Lcd_R = 0;
Lcd_Write(0x40 + (Buffer[0] & 0xF) << 3 );
Lcd_R = 1;
    for(i=1;i<9;i++) Lcd_Write(Buffer[i]);
}

// Xtal frekansimiz 16 Mhz

void Init(void)
{

char i;

    TRISA  = 0b11100000;
    TRISB  = 0b00000111;

    PORTA=0xF0;

    PORTB  = 0x80; for(i=0;i<40;i++) asm ("NOP");

    if (Key==1) MyAdr  = 0x06; else MyAdr=0x04;
    PORTB  = 0x40; for(i=0;i<40;i++) asm ("NOP");

    if (Key==1) MyAdr ++;

    PORTB  = 0xFF;
    PORTA  = 0xFF;
    Flag=0;


    for(i=0;i<32;i++) Buffer[i]=0xFF;

    T1CON  = 0b00110101; // Prescale=/8

//  SPBRG  = 3;          // 250 KBaud (BRGH=1)
//  SPBRG  = 4;          // 200 KBaud (BRGH=1)
//  SPBRG  = 9;          // 100 KBaud (BRGH=1)
    SPBRG  = 99;         // 10  KBaud (BRGH=1)

    TXSTA  = 0b00100100; // Usart tranmitter Asyn modunda 8 bit calisacak (BRGH=1)
    RCSTA  = 0b10010000; // Usart receiver   Asyn modunda 8 bit calisacak

    OPTION = 0b10000000; // Pull-Up direcler devre disi
    PIE1   = 0b00000001; // Timer1 Int enable, !!! UART Int disable !!!

    INTCON = 0x00;
    INTCON = 0b11010000; // Interruptlar acildi (RB0 Int Enable)

    Lcd_Init();
    Lcd_Pos(0,0);
    Lcd_Msg("PPJ-");
    Lcd_Hex(MyAdr);

    Zurna=2;

    Lcd_Pos(0,0);
    Lcd_Msg("READY ");

}

void Send(char Dat)
{
    while(!TXIF);
    GIE=0;
TXREG=Dat;
    TxDat=Dat;
    DataSource=Biz;
    GIE=1;
}

void main()
{
unsigned char i;
volatile int TT;

Init();
    while(1)
  {
        while(WIndex!=1) // Komut gelinceye kadar bekle
          {
            Tus=0;
            RA3=0; RA0=1; if(Key) Tus|=1;
            RA0=0; RA1=1; if(Key) Tus|=2;
            RA1=0; RA2=1; if(Key) Tus|=4;
            RA2=0; RA3=1; if(Key) Tus|=8;

            if(TT!=T)
              {
                LedScan = (LedScan<<1) & 0x0F;
                if(LedScan==0) LedScan=1;
                RB5=0; RB4=0; RB3=0;
                switch (LedScan & Led)
                  {
                    case 1: { if (!((Led & 0x10) && (T & 0x100))) {RB5=1; RB4=1; RB3=0;}; break;}
                    case 2: { if (!((Led & 0x20) && (T & 0x100))) {RB5=0; RB4=0; RB3=1;}; break;}
                    case 4: { if (!((Led & 0x40) && (T & 0x100))) {RB5=1; RB4=0; RB3=1;}; break;}
                    case 8: { if (!((Led & 0x80) && (T & 0x100))) {RB5=0; RB4=1; RB3=0;}; break;}
                  }
                TT=T;
              }
           }

        Busy=1; // Artik mesguluz
        switch(Buffer[0])
          {
             case 0:{
                      Error=0; // Hata flagini sil
                      Send(0x04); // 4 tus var
                      Send(0x04); // 4 led var
                      Send(0x02); // 2 Satir  Lcd
                      Send(0x10); // 16 Sutun Lcd
                      Send(0x80); // 128 Byte EEprom
                      break;
                    }       
             case 1:{
                      Error=0; // Tus bilgisi istendiginde Error Flag da silinir.
                      Send(Tus); // Tuslari bildir
                      break;
                    }       
             case 2:{
                      while(WIndex<2)if(Error) break; // Ledleri yak
                      if(!Error) Led=Buffer[1];
                      break;
                    }
             case 3:{
                      while(WIndex<2)if(Error) break; // Dudugu ottur
                      if(!Error) {Z=0; Zurna=Buffer[1];}
                      break;
                    }
             case 4:{ // Ekani temizle
                      GIE=0;
                      Cls();
                      break;
                    }
             case 5:{
                      while(WIndex<2)if(Error) break; // Curson On/Off vs
                      if(!Error) Crs(Buffer[1]);
                      break;
                    }
             case 6:{ // Kursor pozisyonunu set et
                      while(WIndex<3)if(Error) break;
                      if(!Error) {Lcd_Pos(Buffer[1],Buffer[2]);}
                      break;
                    }
             case 7:{ // Lcd Text
                      while(WIndex<2)if(Error) break; // String boyunu bekle
                      while(WIndex<Buffer[1]+2)if(Error) break; // Stringi bekle
                      if(!Error)
                        {
                          GIE=0;
                        Lcd_R = 1;
                      for(i=2;i<Buffer[1]+2;i++) Lcd_Write(Buffer[i]);
                        }
                      break;
                    }       
             case 8:{ // EEproma verileri yaz
                      while(WIndex<3)if(Error) break; // Datalarin sayisini ve adresi bekle
                      while(WIndex<Buffer[1]+3)if(Error) break; // Datalari bekle
                      if(!Error)
                        {
                          while (GIE=1); GIE=0;
                          WREN=1;
                          for(i=3;i<Buffer[1]+3;i++)
                            {
                          EEADR=Buffer[2];
                              EEDATA=Buffer[i];
                              EECON2=0x55;
                              EECON2=0xAA;
                              WR=1;
                              GIE=1;
                              while (WR);
                              Buffer[2];
                            }
                          WREN=0;
                        }
                      break;
                    }       
             case 9:{
                      while(WIndex<3)if(Error) break; // Datalarin sayisini ve adresi bekle
                      for(i=3;i<Buffer[1]+3;i++)
                        {
                        EEADR=Buffer[2];
                          RD=1;
                          Buffer[i]=EEDATA;
                          Buffer[2]++;
                        }
                      break;
                    }       
           }

        GIE=0;
        for(i=0;i<32;i++) Buffer[i]=0xFF;
        AdrDedected=0;
        DataSource=Master;
        WIndex=-1;
        Busy=0;
        RCIE=0;
        GIE=1;
      }
}


Karşı tarafta master islemci olarak STM32F103 kullandım. Deneme amaçlı kodlar asagida. main satirindaki kodlari adim adim calistirdigim icin mevcut hali anlamli. Eger dogrudan run ederseniz duduk,led vs rutinleri hizlica islenir ve sonucunu gozleyecek kadar zaman olmaz.

SystemInit fonksiyonunu ayrica yazip ilave etmeniz gerekecek. (Usart1 kullanıldı, Adres/Data secimi icin PortB B0 pini kullanildi. Baudrate 10 Bin baud )


#define STM32F10X_LD
#include <stm32f10x.h>

#define Retry 5

volatile char Rx, Tus, Sts;

char TusSayisi;
char LedSayisi;
char LCDSatirSayisi;
char LCDSutunSayisi;
char E2RBoyu;
char Err;

char GetRx() // 1 ile geri donulurse isler yolunda demek, 0 ile donulurse hata var
{
volatile static int i;
         
          i=200000;
          if(!Err)
            {         
              while(!(USART1->SR & 0x20)) { i--; if (!i) break;}
              if (USART1->SR & 0x20) Rx=USART1->DR;
              else (Err=1);
            } 
          return(!Err);
}

char Send(unsigned char Data)  // 1 ile geri donulurse isler yolunda demek, 0 ile donulurse hata var
{
          if(!Err)
            {         
              while(!(USART1->SR & 0x80));
              USART1->DR=Data;       
              if(GetRx())
                {         
                  if (Rx!=Data) Err=1;
                }         
            }   
          return(!Err);
}

void AdrLine(char Line)
{
          if (Line==0) GPIOB->BRR=1;
          else GPIOB->BSRR=1;
}


void Wait(int T)             // T mikrosaniye bekler
{
volatile int x;
          for(x=0;x<9*T;x++);         
}

/*
          Donanimdan bagimsiz rutinler
*/


char Status(unsigned char Adr)
{
Bekle:
          Err=0;
          AdrLine(0);                   // Adres/Data hattini 0 yap
          Wait(10);                     // 10 mikrosaniye bekle
         
          AdrLine(1);                   // Adres/Data hattini 1 yap
          Wait(100);                    // 100 mikrosaniye bekle
         
          Send(Adr);                    // Adresi yolla   
          if(!Err) GetRx();             // Status bilgisi geldi
          if(Err) goto Bekle;
          return(Rx);
}

char SendAdr(unsigned char Adr) // 1 ile geri donulurse isler yolunda demek, 0 ile donulurse hata var
{
         
Bekle:    while (Status(Adr)&0x40);     // Slave mesgul ise bekle

          if(Rx & 0x80)
            {
              Err=0;
              AdrLine(0);               // Adres/Data hattini 0 yap
              Wait(10);                 // 10 mikrosaniye bekle
         
              AdrLine(1);               // Adres/Data hattini 1 yap
              Wait(100);                // 100 mikrosaniye bekle
         
              Send(Adr);                // Adresi yolla   
              if(!Err) GetRx();
                     
              if(!Err) Send(0x01);      // Hata flagini silmek icin Tus bilgilerini iste
              if(!Err) GetRx();
              if(!Err) Tus=Rx;
            }     
          if(Err) goto Bekle;           
          return(!Err);
}


char PPJ()
{
          SendAdr(4);
          if(!Err) Send(0x0);
          if(!Err) GetRx();             
          if(!Err) TusSayisi=Rx;
          if(!Err) GetRx();             
          if(!Err) LedSayisi=Rx;
          if(!Err) GetRx();             
          if(!Err) LCDSatirSayisi=Rx;
          if(!Err) GetRx();             
          if(!Err) LCDSutunSayisi=Rx;
          if(!Err) GetRx();             
          if(!Err) E2RBoyu=Rx;
          return(!Err);
}

       
char Keyb()
{
int i; 
          for(i=0;i<Retry;i++)         
            {
              SendAdr(4);
              if(!Err) Send(0x01);
              if(!Err) GetRx();
              if(!Err) Tus=Rx;
              if(!Err) break;       
            }         
          return(!Err);
}

char Led(char Data)
{
int i; 
          for(i=0;i<Retry;i++)         
            {
              SendAdr(4);
              if(!Err) Send(0x02);
              if(!Err) Send(Data);
              if(!Err) break;       
            }         
          return(!Err);
}
 
char Duduk(char Data)
{
int i; 
          for(i=0;i<Retry;i++)         
            {
              SendAdr(4);
              if(!Err) Send(0x03);
              if(!Err) Send(Data);
              if(!Err) break;       
            }         
          return(!Err);
}

char Cls()
{
int i; 
          for(i=0;i<Retry;i++)         
            {
              SendAdr(4);
              if(!Err) Send(0x04);
              if(!Err) break;       
            }         
          return(!Err);
}

char Lcd_Cursor_Cmd(char Cmd)
{
int i; 
          for(i=0;i<Retry;i++)         
            {
              SendAdr(0x04);
              if(!Err) Send(0x05);
              if(!Err) Send(Cmd);
              if(!Err) break;       
            }         
          return(!Err);
}

char Lcd_CrsOn()
{
int i; 
          for(i=0;i<Retry;i++)         
            {
              Lcd_Cursor_Cmd(0x0E);
              if(!Err) break;       
            }         
                     
          return(!Err);
}

char Lcd_CrsOff()
{
int i; 
          for(i=0;i<Retry;i++)         
            {
              Lcd_Cursor_Cmd(0x0C);
              if(!Err) break;       
            }         
          return(!Err);
}

char Lcd_CrsBlink()
{
int i; 
          for(i=0;i<Retry;i++)         
            {
              Lcd_Cursor_Cmd(0x0F);
              if(!Err) break;       
            }         
          return(!Err);
}

char Lcd_Pos(char x, char y)
{
int i; 
          for(i=0;i<Retry;i++)         
            {
              SendAdr(0x04);
              if(!Err) Send(0x06);
              if(!Err) Send(x);
              if(!Err) Send(y);
              if(!Err) break;       
            }         
          return(!Err);
}


char Lcd_Text(char *s)
{
char *d,j;
int i; 
          for(i=0;i<Retry;i++)         
            {
              Err=0;                       
              SendAdr(0x04);
              if(!Err) Send(0x07);
              d=s;   
              j=0; while(*d){j++;d++;}
              if(!Err) Send(j);
              if(!Err) while(*s)
                {         
                  if(!Err) Send(*s);
                  s++;
                }
              if(!Err) break;       
            }         
          return(!Err);
}


int main()
{
          Err=0;
         
          AdrLine(1); Wait(1000);
         
          PPJ();
          Duduk(0);
          Duduk(1);
          Duduk(2);
          Duduk(3);
          Duduk(4);
          Duduk(0);
         
          Led(1);
          Led(2);
          Led(4);
          Led(8);
         
          Led(0x11);
          Led(0x33);
          Led(0x77);
          Led(0xff);
          Led(0x00);
         
         
          Lcd_CrsOn();
          Lcd_Pos(0,0);
          Lcd_Text("PPJ-04 Demo");
         
          Lcd_Pos(0,1);
          Lcd_Text("Picproje 2013");
         
//          Cls();
         
          Lcd_CrsOff();
          Lcd_Pos(0,1);
          Lcd_Text("PPJ-04 Demo  ");
         
          Lcd_Pos(0,0);
          Lcd_Text("Picproje 2013");

          while(1);
}


Onemli Not:

Ana kartda deneme icin 72Mhz ARM islemci kullandigim icin rutinlerde intterrupt kullanmama gerek kalmadi. Eger ana kartinizda siradan bir 8 bit PIC islemci kullanacaksaniz haberlesmeyi Usart int rutuni uzerinden gerceklestirmelisiniz. Cunku PPJ-04'e yolladiginiz her data RX-TX hatti birbirine bagli oldugu icin hemen size geri doner. Ustelik PPJ-04 karti derhal status bilgisi yollar.

Bu durumda ana islemci PPJ-04'e bir komut yolladiginda pes pese iki byte data veri alacak demektir. 2. datanin ilk datayi ezmemesi icin kodlamayi iyi yapmalisiniz.  Benzer sorun PPJ-04 islemcisi icin de gecerlidir ve verdigim PIC kodlarinda bu sorun cozulmustur dolayisi ile bu kodlari ana islemcinizde ornek olarak kullanabilirsiniz.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: justice_for_all - 08 Kasım 2013, 00:36:17
hocam bende kod yaziyodum da aklima bise geldi bu ppj karti herhangi bir sebepten dolayi kilitlendi diyelim ne olacak?
hadi resetleme isini wdt ile yapariz ama bilgiler kayboldu?

bide lcd satir ve sutun sayisini hex olarak 16 satir ve 2 sutunu yazamadim.

bide tus takiminin bu kartta olmasinin ana karta ne faydasi var?buton nasil kullanilacak orasini kavrayamadim.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 08 Kasım 2013, 00:44:44
Kodlarini da verdigim PPJ-04 versiyonunda 4 buton var. Ana islemci bu butonlarin konumunu PPj-04 den isteyebiliyor.

Butonlar ve LCD ekrani kullanarak menu sistemi olusturabilirsin. Menulerde gezinmek icin +/- sakla cik vs icin 4 buton yeterli. Ilave olarak 4 ledle ve dudukle uyarilar verebiliyorsun.
Ledleri yakip sondurmek icin dudugu kesik kesik bipletmek icin ana islemci hic yorulmuyor.

Eger kilitlenmelerden korkuyorsan Adr/Data hattini atiyorum 100ms boyunca lowda tutunca slave islemciyi resetleyen duzenek yapabilirsin. Yada watchdog kullanabilirsin.
Fakat LCD yi ana islemcine dogrudan bagladigini varsay. Pek ala ana islemci calismaya devam ederken LCD icindeki kontroller kilitlenebilir. Ekrandaki yazilar ucabilir. Bu durumlar icin ne yapiyorsan PPJ-04 icin de aynini ayapbilirsin.

Verdigim kodlarda karta adres bilgisi gonderdiginde kart derhal 2 bitle durum bilgisini yolluyor. Buna ben resetlendim benimle ilgilen diye bir ucuncu bit daha ilave edilebilir.

Bu arada ilk verdigim kodlarda timer int rutini cok kabarik kodlar iceriyordu. Mesajimi editleyip yeni programi koydum. Bunda timer rutinleri cok daha sade oldu.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: FxDev - 08 Kasım 2013, 00:48:14
Avantajını tam olarak kavrayamadım ama şöyle bir soru sormak istiyorum:

1) Eklenecek kartlar slave olacaksa modbus neden kullanamayız? Sonuçta serial işlemler. Artı güvenlik açısından izolasyon sağlanırsa tadından yenmez mi?
2) Modbus iyice eskidi diyenlere CAN çare olmaz mı? Kısa mesafede 1Megabaudlar donanımsal hata kontrollleri vb... STM'in yeni çıkaracağı STM32F052 serisini bu yüzden dört gözle bekliyorum!
3) LIN + CAN çözümlerinin arabalarda kullanıldığını biliyoruz. Bu yöntem olamaz mı?
4) Fiziksel layer'ı geçtim bu işi bir standartı zaten endüstride vardır bilen yok mudur peki?
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: justice_for_all - 08 Kasım 2013, 00:52:58
yani hocam benim demek istedigim ben ppj den butona basinca ana kart benim butona bastigimi nerden bilecek ki?

diyelimki ben ilk once 1 tusuna bastim sonrada 2 tusuna bastim ana kart sanirim en son basilan tusu istiyor peki benim bastigim 1. tus ne olacak?

ana kart tus bilgisini sorana kadar ben butona basili mi tutmak zorundayim burasini anlayamadim.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 08 Kasım 2013, 01:08:58
Ana islemci PPJ-04 den bana tus bilgilerini gonder dediginde PPJ-04 (hemen hemen o anki) basili tus bilgilerini gonderiyor.

Sonucta ana karta 8 bitlik bir data gidiyor.

0x00 hic bir tus basili değil.
0x01 1. tus basili
0x02 2 tusu basili
0x03 1 ve 2 tuslari basili
....
0x0F 4 tusun hepsi de basili gibi anlami var.

Ana islemci tuslari ne zaman okumak isterse o zaman tus konumunu ogrenir. Eger tuslarin surekli kontrolu gerekiyorsa atiyorum her 100ms de bir ana islemciden  sorgulama yapabilirsin.


Eger once 1 tusuna bastiysan sonra 2 tusuna bastiysan, ana kart PPJ-04 u sik sik sorgulamiyorsa basilmis olan 1 tusunu kacirabilirsin.

Fakat bunun hic bir onemi yok. 100 ms de birsorgulama ile gayet akici menu sistemi yapabilirsin.

Bir ara bu amacla bir kod yazip video cekeyim.

------

Fxdev'in sorusuna gelince;

Proje oylesine aklima gelen aslinda zaman zaman ihtiyac duydugum bir eksikligi gidermeye yonelik. Avantajlarini ilk mesajimda acikladim. ModBus vs de kullanilabilir. Fakat CAN vs isin icine girdimi slave kartlarda siradan cipleri kullanamaz oluyoruz.

Asli projelerimde sirf PCB kucuk ve basit olsun arzumdan 40 kusur bacakli cipler kullaniyorum bu durumda LCD vs icin cipte bos bacak kalmiyor. Ben de sirf LCD olsun diye buyuk ciplerle tasarim yapmiyor LCD kullanmiyorum.

Fakat artik bu sorun bitti. Lcd kullanmam gerekirse PPJ-04 kullanacagim cunku hic eziyeti yok.

PPJ-04 kullandigin zaman bir anda asagidaki donanimlara hukmedebilir hale geliyorsun.

1 adet LCD
4 adet buton
4 adet led
1 adet buzzer
1 adet e2rom

Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: justice_for_all - 08 Kasım 2013, 01:15:55
yani menu kodlari ana kartta olcak siz butonlari okuyup ppj kartinda lcd de gostermesi gerekeni gostereceksiniz. dogru mu anladim hocam ?
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: z - 08 Kasım 2013, 01:22:18
Aynen oyle. Ana kart PPJ-04 den buton bilgisini isteyecek. Diyelimki setup tusuna basilmis. Derhal PPJ-04 kartina LCD de SETUP yazisi cikartcak komutu yollayacak.
Diyelimki +/- tuslarina basildi. Ana islemci bunu sorgu ardindan ogrenince bu kez ekranda Hardware Setup, Fabrika Ayarlari benzeri mesajlar yazdiracak komutlar yollayacak.

Varsayki PPJ-04 kullanmadin da dogrudan ana islemcine LCD, tuslar, ledler, buzzer bagladin. Menu olusturmak icin ne yapiyorsan PPJ-04 icin de aynisini yapacaksin. Sadece istekleri komut olarak bildireceksin.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: justice_for_all - 08 Kasım 2013, 01:36:16
tamam simdi anladim hocam.
Başlık: Ynt: Yeni projeler baslatiyorum
Gönderen: FxDev - 08 Kasım 2013, 10:56:04
Alıntı yapılan: z - 08 Kasım 2013, 01:08:58
FxDev'in sorusuna gelince;

Proje oylesine aklima gelen aslinda zaman zaman ihtiyac duydugum bir eksikligi gidermeye yonelik. Avantajlarini ilk mesajimda acikladim. ModBus vs de kullanilabilir. Fakat CAN vs isin icine girdimi slave kartlarda siradan cipleri kullanamaz oluyoruz.

Asli projelerimde sirf PCB kucuk ve basit olsun arzumdan 40 kusur bacakli cipler kullaniyorum bu durumda LCD vs icin cipte bos bacak kalmiyor. Ben de sirf LCD olsun diye buyuk ciplerle tasarim yapmiyor LCD kullanmiyorum.

Fakat artik bu sorun bitti. Lcd kullanmam gerekirse PPJ-04 kullanacagim cunku hic eziyeti yok.

PPJ-04 kullandigin zaman bir anda asagidaki donanimlara hukmedebilir hale geliyorsun.

1 adet LCD
4 adet buton
4 adet led
1 adet buzzer
1 adet e2rom

Cevap için teşekkürler.
Bu arada önerim EEPROM yerine en azından FRAM ya da SRAM'e geçilmesi uygun olabilir. Zero wait state okuma/yazma önemli olabilir özellikle hız gerektiren uygulamalarda..

Kolay gelsin.