16f84a icin asenkron seri iletişim - rs232 - rutini

Başlatan kemalkemal, 14 Nisan 2010, 22:54:41

kemalkemal

Merhaba
1bit süresi = 0,4ms iken
Start (2bit low) + Data (8bit) + Stop (2bit high)  şeklindeki bir veri dizisini 16f84a kullanarak nasıl yakalayabilirim?
Daha genel bir ifadeyle uart modülü olmayan bir pic ile nasıl asenkron seri haberleşme yapabilirim?
kod veya akış şeması veya bir link veya bir fikir ,,, hepsi de kabulumdur :)
umarım yeterince açık ifade edebilmişimdir derdimi ?
şimdiden teşekkürler

Tagli

Verinin gelişini yakalayabilmek için RB0 kesmesi kullanılabilir. Düşen kenarda kesme ile ilk bit yakalandıktan sonra, sınırda kalmamak için bir seferlik olarak 0,2 ms beklenir ve okuma yapılır. Sonraki okumalar döngü içinde 0,4 ms beklenerek yapılır. Okunan bitler bir register'a kaydırma işlemi ile kaydedilebilir.

Ancak, bu şekilde her ne kadar ana programın işleyişi sırasında kesme kullanarak veriyi yakalamak mümkün olsa da, ana programın verinin gelişinden haberdar olup ona göre işlem yapabilmesi için bir bayrağı yoklaması gerekecektir.

Verinin alımı ve kaydırılması işlemi harici parçalarla da yapılabilir belki. Uygun kapasitedeki veya sayıdaki shift register'lar ve bir adet 555 ile halledilebileceğini sanıyorum. BU şekilde RB0 kesmesi aktarımın başladığını değil bittiğini gösterir ve ana program donanım kesmesinde olduğu gibi bundan haberdar olup gereğini yapabilir.

PIC'in veri gelişini beklemesi sırasında yapacağı başka iş yoksa kesme ya da harici elemanlara hiç gerek olmaz tabi. Giriş bacağını sürekli olarak yoklamak yeterli olacaktır. Ancak böyle bir durumda kesme ve uyku modunu beraber kullanarak enerji tasarrufu yapmak bence daha doğru olacaktır.

Bu arada, merak ettim de start ve stop'u 2'şer bit olan protokol nedir? Daha önce duymamıştım hiç.
Gökçe Tağlıoğlu