Yeni projeler baslatiyorum

Başlatan z, 06 Ekim 2013, 14:41:48

Klein

#120
Şö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ış. 

z

#121
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.



Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Klein

#122
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. 

z

#123
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.)
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Klein

Ö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.


z

#125
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.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

ErsinErce

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

z

#127
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
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Klein

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

z

Ekleyelim hocam.

Bu komut setini hazirlamak bile kendi basina bir ismis.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

ErsinErce

#130
hem grafik hem karaktere göre ayarlamak lazım
ya da 2 farklı sınıf mı olacak

z

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.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

ErsinErce

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

z

#133
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.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

fatih6761

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...