Usart kesmesi ve usart1 i kullanırken usart2 yi de kullanmak

Başlatan bimühendis, 12 Aralık 2017, 11:31:40

bimühendis

İyi günler ,
Pic basic de daha yeni sayılırım ancak yapmam gereken proje için pic18f46k22 (44 pinli ) kullanıyorum ve tx rx den diğer pic ile haberleşiyorum .
Benim istediğim tx2 rx2 kısmından başka bir cihazla haberleşmek. tx2 den veri gönderebiliyorum kesme işlemi gerektirmeden ancak rx2 den alma işlemi yapamadım ve ete hocamızın seri haberleşme derslerini de okudum alıştırmalardan yaptım bir türlü ikinci usarttan nasıl veri alabilirim anlayamadım.
Yardımlarınızı bekliyorum arkadaşlar 

Burak

Ortada çalışmayan bir kod var değil mi ?

Nasıl bir kod yazdığını tahmin etmemizi beklemiyorsundur umarım ..

Burak
Ω Gens Una Sumus Ω

bimühendis

Burada sormak istedigim şey usart kesmelerini nasil kullaniyoruz ve ben rx1 ve rx2 den mantik olarak nasil bir yol izlemeliyim diye sormustum. Kodlarimla alakali bi yorum degil mantigiyla alakali bi yorum beklemistim.

Burak

Alıntı yapılan: bimühendis - 12 Aralık 2017, 11:31:40
tx2 den veri gönderebiliyorum kesme işlemi gerektirmeden ancak rx2 den alma işlemi yapamadım

RX2'den alma işlemi yapamadığını söylediğine göre bir kod denemesi girişimi olduğu anlamına ulaşabiliyoruz , mesajlarını daha açık bir dille sor.

Madem mantıken nasıl bir yol güdeceğini bilmiyorsun kısaca mantığını ifade etmek gerekirse ..

*Baudrate ayarlarını yap (ProtonBasic için)


Declare Hserial_Clear= On
RCSTA1 = $90   ' Enable serial port & continuous receive
TXSTA1 = $24   ' Enable transmit, BRGH = 1
SPBRG1 = 130   ' 9600 Baud @ 64MHz, -0,02%
SPBRGH1 = 6
BAUDCON1.3 = 1 ' Enable 16 bit baudrate generator

Declare Hserial2_Clear= On
RCSTA2 = $90   ' Enable serial port & continuous receive
TXSTA2 = $24   ' Enable transmit, BRGH = 1
SPBRG2 = 130   ' 9600 Baud @ 64MHz, -0,02%
SPBRGH2 = 6
BAUDCON2.3 = 1 ' Enable 16 bit baudrate generator


RC2IF=0   'Bu bayrak buffer'a bir veri geldiğinde set olan bir bayraktır . Bu bayrağı temizleme işlemini RCREG2 tamponunu okuyarakta yapabilirsin .. Tampon , 2 byte derinliğinde dolayısıyla bir while-wend döngüsü kullanarak buffer'ın temizlendiğinden emin olabilirsin  . Sadece yazılımın başında Interrupt aktive edilmeden temizlenmesinde fayda var .
RC2IE=1   'Bu işlem ile RX2 alıcı kesmesini aktive ediyorsun .

Diğer kesme kayıtçısı ayarlarını içeren adımları atlıyorum . (Global Interrupt Aktif Etme vb gibi çünkü global kesme ayarları RX1 için ayarlanmış diye varsayıyorum)

Burak
Ω Gens Una Sumus Ω

Powered by EzPortal