Pic 18F452 Sanal Seri Port Kullanımı ?

Başlatan mrcrbg, 24 Mart 2013, 16:40:29

mrcrbg

merhaba arkadaşlar;
Pic 18F452 ile sim908 modülü üzerinden GPS verisini okuyacağım. Yalnız tasarladığım kartta pic'in uart çıkışları GSM modülüne bağladım. o yüzden GPS modülünden verisiyi okumak için sanal seri port kullanacağım. ccs'in rs232 kütüphanesini kullanarak tanımladığım pinler ile bu işlemi yapmayı düşünüyorum. sorum şu

rs232 kütüphanesi sanal seri portlar için bir kesmeye sahip mi ? veriler tamponlanıyor mu, yani veriyi istediğim zaman okuyabilir miyim yoksa kesme fonksiyonunu kendim mi yazmalıyım ?

kantirici

Sanal dediginiz aslında yazılımsal uart. Yazılımsal uartta kesme kullanamazsın. Ama programı kendin yazarsan ve rx pini için rb0 kesmesini kullanırsan veri geldigini anlayabilirsin.

FEHMİ_ASM

#2
Alıntı yapılan: kantirici - 24 Mart 2013, 17:32:49
Sanal dediginiz aslında yazılımsal uart. Yazılımsal uartta kesme kullanamazsın. Ama programı kendin yazarsan ve rx pini için rb0 kesmesini kullanırsan veri geldigini anlayabilirsin.

  Hocam sanırım bir yanlışlık var, sanal seri port, donanımsal seri portu olmayan pc ler için kullanılır. İletişimi sağlamak için illa yazılımsal ( usart sinyalleri kendisi oluşturarak) protokol oluşturmak gerekmez. Derleyinin daha da kolaylaştırdığı usart fonksiyonları da kullanılabilir. Şu durumda sanal seri portta (pic tarafında) donanım kesmesi kullanılabilir.

  Arkadaşın sorusuna gelince, evet seri kesmeye sahip. Normalde usartı open edersiniz, sonra da alıcı kesme izinini verirsiniz. Hatta, CCS C, usartı açtığınızda zaten alıcı kesmesini de otomatik kuruyor olabilir.

mrcrbg

#3
Alıntı yapılan: FEHMİ_ASM - 24 Mart 2013, 17:43:05
Normalde usartı open edersiniz, sonra da alıcı kesme izinini verirsiniz. Hatta, CCS C, uartı açtığınızda zaten alıcı kesmesini de otomatik kuruyor olabilir.

Ben dediğiniz gibi yazılımsal uart kullanacağım. rs232 kütüphanesinde bunun için bir kesme tanımlı mı kendim mi yazmam gerekir ?

Ya da şöyle sorayım kesme tanımlamazsam veriyi alırken sıkıntı yaşar mıyım ?
Şuan devreyi tamamlamadığım için deneyemiyorum. Kodu deneme şansım olmadığı için soruyorum kusura bakmayın :)

kantirici

#4
Alıntı yapılan: FEHMİ_ASM - 24 Mart 2013, 17:43:05
  Hocam sanırım bir yanlışlık var, sanal seri port, donanımsal seri portu olmayan pc ler için kullanılır. İletişimi sağlamak için illa yazılımsal ( usart sinyalleri kendisi oluşturarak) protokol oluşturmak gerekmez.

Evet sanal seri port pclerde kullanılan bir tanım.Fakat arkadaş picin donanımsal uartını gsm modülde kullanmış ve gps içinde bir adet daha kanala ihtiyaç duymuş."ccs'in rs232 kütüphanesini kullanarak tanımladığım pinler ile bu işlemi yapmayı düşünüyorum" dediğine görede yazılımsal seri iletişim kullanacagını belirtmiş. Demem o ki arkadaş yanlış tabir kullanmış ama ben oraya takılmadım :)

Ayrıca ccs c de yazılımsal seri iletişimde kesme kullanamaz, arkadaş o fonksiyonu kendisi oluşturucak.


mrcrbg

#5
Alıntı yapılan: kantirici - 24 Mart 2013, 18:57:44
Evet sanal seri port pclerde kullanılan bir tanım.Fakat arkadaş picin donanımsal uartını gsm modülde kullanmış ve gps içinde bir adet daha kanala ihtiyaç duymuş."ccs'in rs232 kütüphanesini kullanarak tanımladığım pinler ile bu işlemi yapmayı düşünüyorum" dediğine görede yazılımsal seri iletişim kullanacagını belirtmiş. Demem o ki arkadaş yanlış tabir kullanmış ama ben oraya takılmadım :)

Ayrıca ccs c de yazılımsal seri iletişimde kesme kullanamaz, arkadaş o fonksiyonu kendisi oluşturucak.

tebrik ediyorum tabirlerde yanlışlık olmuş ama doğru anlamışsınız :) Şimdi ben GPS'in bağlı olduğu b portu için bir donanım kesmesi ayarlayıp oraya gelen verileri yazılımla tamponlamalıyım sanırım böyle anladım.

Peki kesme oluşturmak şart mı ? örneklerde yazılımsal seri portlarda kesme kullanılmamış. gelen veri getch(); fonk. ile alınmış Bu durumda veri kaybı yaşar mıyım ?

kantirici

getch komutunu kullanırsan veri gelinceye kadar o komut satrında mic. bekler ve başka bir iş yapmaz.Eğer bu sorun olmazsa kullanabilirsin.

sadogan

18F45K22 var 18f452 ile pin uyumlu 2 uart ı var hiç başın ağrımaz

ahmetgokce01

sim908 GSM modülde gps bilgilerini AT komutları ile alabilirsiniz böylece kullanacağınız mikrodenetleyicide 2 uart aramanıza gerek kalmayacaktır. SIM908'den GPS bilgilerini alabilmeniz için ilgili AT komutları aşağıdadır;

AT+CGPSPWR=1
verdiğim ilk at komut sim908deki gömülü gpsi çalıştırıyor.
AT+CGPSINF=0 komutu gönderirseniz gps bilgilerini belirlenen formatta size yollar daha detaylı bilgiyi sim908 datasheetinden bulabilirsiniz.