tpic6b595 yardım

Başlatan furkan_2210, 31 Temmuz 2014, 18:38:51

ete

#30
Muhtemelen shiftout komutunda str ile başlayan komut formatı çalışmıyordur. Bütün değişkenleri sırası ile yazman gerekecek sanırım.

Ete

furkan_2210

ETE HOCAM ,
tekrardan selamlar  fırsat buldukça ara ara denedim   ama  yapmadığım şey kalmadı, bir türlü 1. entegreden diğer entegrelere geçemiyorum ve  ilk entegrede istediğim sonucu almama  rğmen hatalı oluyor , yani 1. pini aktif etmek istiyorum diyelim  onunla beraber 6 ve 7 . pinlerde aktif oluyor..hevesim git gide kırılıyor ,, simülasyonda denememe rağmen bir türlü sonuç alamadım,, bir el atsanız çok sevinirim... en azından kodları beraber derleyelim..

saygılarımla...

ete

Simulasyonu nasıl ayarladın bilmiyorum ama ben 1 adet 74HC595 peşine 1 adet ULN2803 takıyorum aynen TpicB595 haline gelir. Bu şekilde deniyor isen sorun yok. Keşke simulasyon dosyası ile üzerinde çalıştığın programı buraya koysaydın bizde deneme imkanı bulsa idik. Yinede geç değil koyarsan memnun olurum.
Bu arada bu şekilde simulasyon yapıyor isen ULN entegresinin kendi başına HIGH çıkaramayacağını hatırlatmam gerekir. BU nedenle simulasyonda ULN çıkışlarına pullup direnci bağlanması gerekir. Aksi halde bütün çıkışlar aktifmiş gibi gözükür.

Ete

furkan_2210

slmlar,

ETE HOCAM, 74hc595 leri olduğu gibi kullandım simülasyonda yani uln2803 eklemeden deneme yaptım netice itibari ile devrenin çalıştığını test ettikten sonra sizinde dediğiniz gibi tpic6b595 ile arasında bir fark olmadığı için tpic6b595 kullanıcam devrede..   dosyayı ekliyorum simülaasyonun altında not yazıyor,açıklayıcı olmak için yazdım..  onun dışında dosyanın içinde klasörlerde 2 adet .bas ve .hex dosyaları var onun dışında açtığım konuya kopyaladığım komutlar dışında bişi yazmadım,,   simülasyonda compim bağlantısı yapılmış  onun için  ekstradan sanal bir program kullanıyorum,  elinizde olması muhtemel  fakat  ihtiyaç olursa mail olarak ta gönderebilirim yada  link ekleyebilirim ..

sonuç olarak bu devre  o kadar zor bir devre değil fakat  bilgim sınırlı olduğu için zorlanıyorum muhtemelen ,, onun dışında devre elemanları elimde mevcut kodlarda değişiklik yaparsanız ve buraya eklerseniz devreyi en geç 1 saat içinde kurup kodların doğruluğunu test edebiliriz ..

yardımlarınız için gerçekten çok teşekkür ederim..

SAYGILARIMLA..

ete

#34
74HC595 ile TPICB595 arasında sistem farklılığı vardır. Aynı değeri ikisine ayrı ayrı yollarsan biri pozitif Lojik çıkış verir diğer negatif lojik çıkış verir.
Örnekle açıklarsak daha iyi anlaşılacak.
Elimizde %00110101 bilgisi olsun. Bu bilgiyi 74HC595'e yollarsam çıkışlarında aynen %00110101 bilgisini görürüm.
Bu bilgiyi TPICB595' e yollarsam çıkışında %11001010 bilgisini görürüm yani tamamen yolladığımızın ters çevrilmiş halini görürüz. Bu nedenle TPICB595 ile çalışacak isen simulasyonda buna uygun olarak 74HC595 lerin çıkışına birer ULN2803 bağlanmalıdır. Zira yapmayı istediğin şey için programlama mantığı değişmesede TPIC lere aktaracağın bilginin değişmesi gerektiğini düşünüyorum.
Devrende toplam 12 adet shift register var. Bu nedenle programında 12 adet değişken tanımlaman gerekir.
Bunu ;
BIR VAR BYTE
IKI VAR BYTE
..
ONIKI VAR BYTE
şeklinde yapabileceğin gibi
AKTAR VAR BYTE[12] şeklinde de yapabilirsin.
Kullanırken de AKTAR[0],AKTAR[1],.....,AKTAR[11]  dikkat edilmesi gereken şey 12 olarak tanımlanmış değişken adedi 0-11 arası kullanılacaktır.

Sürekli değişen veri akışında bazılarının değerinin değişmemesi için ona ait bilginin ana kaynakta sabit tutulması gerekir. Örneğin 2 ci shift registerin 4. cü bitini set etmek için o registere AKTAR[1]=%00010000  değeri verilir. Bu değer değişinceye kadar her zaman sabit tutulmalı ve her seferinde AKTAR[1] değeri olarak bu sayı registere yollanır. Bu işin temelinde 12 tane shift registere her zaman 12 adet bilginin verilmesi gerektiği yatar. Bu bilgilerin yalnızca değişenlerini değiştirip diğerlerini sabit tutarsan kimsenin bilgisi gereksiz yere değişmez.

PC ile haberleşme yapılırken bu sisteme uygun iki şekilde haberleşme yapılabilr.
1. şekilde PC den önce hangi registere bilgi yollanacağını belirtmek amacı ile 0-11 arası bir değer yollanır. Ardından o registere yerleştirilecek sayı yollanır. Örnek vereyim, 5,164 şeklinde bir sayı dizisi yollanınca Pic bunları alacak ve şunu yapacaktır. İlk sayı=5 demekki 0-11 arası shift registerlerden 5 nolu olanın bilgisi değişecek ve ona 164 değeri verilecek. O halde AKTAR[5]=164 şeklinde bir değer atama yapıp 0-11 arası tüm register değerlerini shift registerlere aktarmak gerekir.
Bu yöntem nispeten hızlı çalışır çünki her seferinde 1 register bilgisi alır. Ama aynı anda birden fazla register bilgisi değişecek ise bu yöntem sınıfta kalır. Sınıfta kalır derken yine yapılır ama ard arda değişecek bilgilerin register numarası ile birlikte yollanması gerekir ki buda kademeli çalışma anlamına gelir.

2.ci şekilde PC tarafından da her zaman 0-11 arası toplam 12 tane bilgi alınır. Bu alınanbilgiler aynen registerlere aktarılır. Bu yöntemde aynı anda bütün register değerleri değiştirilebleceği gibi bir veya iki register değeride değiştirilebilir.
Bu iki yöntemden hangisini tercih edersen ona uygun kod yazılması gerekir. Tabiiki işin PC tarafı ile Pic tarafı kodları yöntemlere göre değişiklik arz edecektir.

PC ile haberleşmede kullandığın şema doğru. Yapman gereken yalnızca USART haberleşmesini kesme ile birlikte kullanmak ve seçtiğin yönteme uygun kod yazmak.

Bu açıklamalara bakarak neyi yapıp neyi yapamadığını tespit etmeye çalış bakalım.
Aslında yapmak istediklerinin örnekleri Ete projelerinde bolca mevcut.
Registerlere kod yerleştirme ve yerleşen bitlerde değişiklik yapma örneği ilişiktedir.

Ete

Not: Sistemi PC den (Simulasyonda Virtual Terminalden) her seferinde 12 adet bilgi alacak şekilde düzenledim.
Dosya ilişiktedir. Hemen belirteyim Max232 tasarımında da yanlışlıklar var idi onlarıda düzelttim.

Powered by EzPortal