TMR0 kesmesi ve EUSART KESMESI

Başlatan toprak, 28 Mart 2012, 10:28:02

ete

3.3V modüllerde sinyal seviyeleri genelde sorun oluyor.
Bu verdiğin modül extradan çok komplike bir modül. Kullanmanı pek tavsiye etmem.

İmkanın var ise doğru dürüst bir şey al ve dene.

Ete


toprak

#31
    Hangi marka modül olabilir hocam
Kişi kesinliklerle başlarsa gideceği yer kuşkulardır, ama kuşkularla başlayacak kadar doygun ise kesinliklere ulaşır.

ete

Senin işini UDEA nın ATX34 ve ARX34 çifti görebilir.
http://www.udeashop.com/

Benzer şekilde çift olmak kaydı ile piyasadan alacağın 433 mhz modüllerde işini görebilir.

Ete

toprak

   Kullandığım modül manchester kodlama kullanıyor. Bunların Usart uyumlu olmadığını belirttiniz.
   Aynı modülü pıcde Hserin ile kullansam sorun çıkar mı hocam.
   Serin komutuyla kullandığım devrelerde bu modül sorun çıkarmıyor.
   En azından ben böyle gördüm.
   Bunun nedeni nedir. Sorun usart kullanmam mı yoksa PIC mı. Yani Usarttan farklı komut kullanırsam bu modulu (manchester kodlama kullanan bendeki modulu) pıcle kullanabılırmiyim Hocam
   Saygılar.
 
Kişi kesinliklerle başlarsa gideceği yer kuşkulardır, ama kuşkularla başlayacak kadar doygun ise kesinliklere ulaşır.

ete

Normal olarak Manchester kodlama bir bitlik veriyi iki bit ile ifade etme şeklidir. Dolayısıyla veri miktarı iki katına çıkıyor.
Süre uzuyor. Bunun dışında bir etkisi olmaması gerekir. Bir başka husus da Manchester kodu ile veri yollayan bir vericinin Manchester kodunu çözecek bir alıcısı olması gerekir. Aksi halde veri dekode işlemine tabi tutulmadığı için gelen veriden bir şey anlamazsın. Şayet elindeki RF modüller birer Çift ise her yerde kullanabilirsin. Ama sorun çıktığını gördük. Bir terslik var ve ben uzaktan kabahati Mancherster kodlamaya bulmuştum.

Ete

toprak

PIC16F628A ile yaptığım bir alıcı ve bir verici devre var. Verici devredeki PIC16F628 in usart bacağından( tx yani portb2) Alıcı devredeki PIC16F628A nın rx bacağına alıcı modülü ve verici modulü aradan çıkarıp direk kablo çektim. Bu durumda alma için kullanılan komutta bekleme süresinin kısa veya uzun olması bir sorun yaratabilir mi? Devreyi bu şekilde kullanırsam (yani modülsüz) en uygun bekleme süresi sizce ne olmalıdır?

Bu sürenin kablo olması durumunda bir önemi var mı?

Ben şu şekilde kullandım.
HSERIN 100,CIK,[WAIT("KEY"),AL]
Kişi kesinliklerle başlarsa gideceği yer kuşkulardır, ama kuşkularla başlayacak kadar doygun ise kesinliklere ulaşır.

ete

Tek bir byte alacak programın bekleme süresi en fazla 5 ms olmalıdır. 100 ms çok uzun bir süre. Olaya mantık kullanarak bak.
Sistem çalışıyor kesme oluştu ve program kesme etiketine atladı. Kesmeyi oluşturan sebep iki türlü olabilir. Birisi doğru bilgi geldiği için kesme oluşmuştur o zaman o bilgi anında alınır ve kesmeden çıkılır. Birde parazit ve ebnzeri gürültü sinyallerinin oluşturabileceği kesmeler olabilir. O zamanda en fazla 5 ms bekler gelen yoksa geri döner.

Tabiiki kesme yi aslında Uyandırma sinyali oluşturmalı ki işlemci kesme etiketine programı yönlendirinceye kadar aslıl bilgi alınıp geçilmemelidir. Bu nedenle Uyandırma sinyalinin bu gibi senkron yakalama işlerinde önemi büyüktür.

Ete

toprak

Verici devredeki Pic16F628in Tx bacağından Alıcı devredeki Pic16f628in Rx bacağına kabloyu ne kadar uzatabiliriz.

Bunun teorik olarak bir hesabı veya bilinen maxımum değeri var mı?
Kişi kesinliklerle başlarsa gideceği yer kuşkulardır, ama kuşkularla başlayacak kadar doygun ise kesinliklere ulaşır.

halilgaliç

seri iletişimi kablo ile yapacaksan bence mutlaka max232 kullan ne kadar kısa olursa olsun gürültü kapabiliyo

toprak

Yaklaşık 300 metre kabloyu direk picler arası kullanarak deneme yaptım. Bir iki defa alıcının almamasi dışında sorunsuz çalıştı.
Kişi kesinliklerle başlarsa gideceği yer kuşkulardır, ama kuşkularla başlayacak kadar doygun ise kesinliklere ulaşır.

toprak

  Max485 ve RS232 entegrelerini hiç kullanmadım. İşimi görür mü bilmiyorum. İnternette bu entegreleri araştırırken benzer konuları gördüm. Daha önceden bir picde butona basarak diğer picde ledi yakmak isteyen bir tartışma okumuştum. Fakat onu değişik yöntemlerle yapmışlar.
  Direk yukarıdaki gibi Pic16f628A nın usart özelliğini kullanarak bir butona basarak, diğer picde usart rx bacağından aldığı bilgiyle ledi tek kablo üzerinden yaktırabiliyoruz. Bazen almama sorunu olabiliyor. Onu da iki devre arasında eksi bağlantıyı da sağlayarak giderebiliyoruz. Yani kablo sayısı ortak eksi bağlantıyla ikiye çıkıyor.
 
  500 metre uzaklıkta da denemeyi düşünüyorum. Dediğim gibi 300 metrede sorunsuz gönderdi.
  Şimdi aklıma takılan soru pic bunu kendisi direk yapabiliyorken max 485 veya benzeri entegrelere ne gerek var?
  Picin bunu yapabilmesi normalmidir. Daha doğrusu bu durumu nasıl açıklayabiliriz teorik olarak?
Kişi kesinliklerle başlarsa gideceği yer kuşkulardır, ama kuşkularla başlayacak kadar doygun ise kesinliklere ulaşır.

toprak

   Merhaba
   Tmr0 kesmesinde yine sorunum var. Usart ile Tmr0 kesmesini kullandığım programla yeniden uğraşmaya başladım. Bu konunun başındaki sorunları yaşadığım devre.
   Şimdiiki sorunum şu. Alıcı bilgileri alıyor. Burada sorun yok. Fakat ledi yaktırma süresini TMR0 ile ayarlıyorum.
Optıon registeri 1 bolu 64 seçtiğim halde 300 e kadar saydırdığımda led 1saniye açık kalıyor. Bilme oranını 1 bölü 256 yapıyorum hiçbir şey değişmiyor. Yine yaklaşık 1 saniye led yanık kalıyor.
  4 MHz kristal kullanıyorum. Normalde 1 bölü 64 bölme oranıyla 61 kere saydırdığımızda 1 sn geçmesi lazım.
  Fakat ben 300 kere saydırınca 1sn geçiyor. Bölme oranını 1 bölü 256 yaptım yine 300 kere saydırınca 1 saniye geçti.
  Bunda bir tuhaflık var ama anlayamadım.
  Göremediğim bir şey mi var acaba.
Kişi kesinliklerle başlarsa gideceği yer kuşkulardır, ama kuşkularla başlayacak kadar doygun ise kesinliklere ulaşır.

ete

Programın içinde Pause komutu varsa sorun ondadır. Bir sorun olduğu kesin de sen bulacaksın artık. Zira her şey senin elinde.
Uzaktan ancak Pause komutuna kabahat bulabildim. Ayrıca Hserin komutunda timeout değeri kullanmış isen oda buna sebep olabilir. Kısaca programın normal çalışmasını engelleyen her türlü gecikme bu soruna sebep olur. Özellikle Kesme etiketi içinde her hangi bir pause yada başka gecikme tmr0 kesmesinin engellenmesi anlamına gelir. Bu konuda herp söylerim kesme içinden mümkün olan en kısa zamanda çıkacaksın. Çünki girerken kesmeleri disable ediyorsun. Yani yeniden kesme oluşmasını engelliyorsun. Bu durumda kesme içinde vakit geçirirsen diğer kesmen o oranda gecikir.

Ete

toprak

Hocam bu konuya uzun sure oldu yazmayali ama buradan sormayi uygun buldum.
Elimde asagidaki modul var. Basit bir modul.
Bu modulu pic ile nasil kullaniyoruz.
Direk alici ve verici modulde sinyal uclarini ilgili pice takip alici ve verici modulun arti ve eksisini beslemeye mi takacagiz.
Bu sekilde yaptim alici hicbirsey almadi.
Kişi kesinliklerle başlarsa gideceği yer kuşkulardır, ama kuşkularla başlayacak kadar doygun ise kesinliklere ulaşır.

ete

Açıklamasında besleme voltajını 3-12v arası demiş. Böyle olunca pic in beslemesini kullanabilirsin demektir.
Açıklamada HIGH için +0,8V , LOW için 0V olarak gösterilmiş. Bu biraz sorun yaratır. 0,8V normalde Pic için LOW demektir.
İşin bu kısmını bir transistör gurubu ile değiştirmen gerekebilir.
Onun dışında ekstra bir şey görmedim.

Ete


Powered by EzPortal