seri iletişimde program hatası YARARMAN

ciddi olamazsın tebrik ederim hocam senin gibisini görmedimcok sagol teşekkür ederim ben sana yine bişey sorabilirmiyim
 
putrsUSART("Yazma Seçildi");
PORTB = 0x55;
puts yerine gets olmayacakmıydı ona göre degişkenler tanımlayıp 2.side portb=0x55 neye göre dedin
 
şimdi dacyide programda yaptıgın gibi c# da baska bir degere döndürcem daha sonra onu devreye gönderecem degilmi
 
Ben onları denemek amaçlı yazmıştım.
Yoksa orada UART'tan 'w' harfi gelmişse, if döngüsünün içerisine girecek.
Döngü içerisinde de yine veri gelip gelmediğini denetleyecek.
Veri gelirse, gelen veriyi PORTB'ye yansıtacak.
Ancak bu değerlerin arayüzde hesaplanıp, PIC'e öyle gönderilmesi lazım.
Yani PIC'in PORTB'sine atıyorum 10010111 bilgisi verdiğinde, voltmetreden 3.5V okuyorsan;
Bilgisayardaki arayüz yazılımında, 3.5 yazdığında PIC'e göndereceği veriyi, 10010111 olarak hazırlayıp, öyle göndermesi lazım.
 
hocam yanlış anlama proje için vaktım kısıtlı oldugu için soruyorum bu dönüştürmenin bi yöntemşi varmı yani adcde kullandıgını tam tersi degil anladıgım kadrıyla nasıl olacagı hakkında bilgin varmı dacyıde yapıyım yollıyacam demiştin bana ondan sordum yanı
 
birde getsUSAT();
la ben degeri bildigim kadarıyla string olarak gtiriyorum onu direk portb ye atarsam hata vermezmi
 
afedersin orada bir yanlışlık olmuş özür dilerim istemeden araya bir argo kelime girmiş
 
bana bahsettiğin kısımı
temp=getsUSART();
PORTB = temp;
boyle duzelttim kabul etmedi biz bilgiyi getirip port b ye göndermiyormuyuz
 
Yollayacağım demiştim, sen de olduğuyla paylaş dedin, ben de olduğuyla paylaştım. :)
Ofiste olduğum için kodsal yardım yapamayacağım.
Ancak sana kısaca anlatayım;
Öncelikle bir önceki verdiğim sayı binary bir sayıydı.
PORTB 8 bit olduğu için en fazla 0-255 arası değer alabilir.
Yine bir örnek üzerinden gidelim.
Örneğin PORTB'de b'11111111' bilgisi var ve sen devrede DAC çıkışında 5V ölçüyorsun.
O zaman bunu bir yere kaydedeceksin 5V'ta iken PORTB b'11111111' = h'FF' = d'255' diye.
Ondan sonra sen arayüzde voltajı 3 olarak girdiğinde UART'a göndereceğin veriyi hesaplayabilirsin.
Onu da basit bir denklem ile yapabilirsin;
5V'ta >>>>> 255 ise
3V'ta >>>>> ???
(UART'a gönderilecek olan veri) = (255 x 3) / 5
(UART'a gönderilecek olan veri) = d'153' = h'99' = b'10011001'
NOT = Tabii bu hesaplama linear hesaplamalar için geçerli!
Bu işlemleri bilgisayarda yaptıktan sonra UART'a bir byte olarak gönderebilirsin.
Ancak Voltaj ondalıklı olarak girilirse, yanmi 3.5V gibi, o zaman sen float türü ile çalışmalısın.
Ve işlemin en sonunda float olan sayının ondalıklı kısmını kırpıp, tam sayı olarak göndermen lazım.

Bu arada, ofiste masamın başında heran uyuya kalabilirim, haberin olsun... :)
 

Forum istatistikleri

Konular
128,195
Mesajlar
915,749
Kullanıcılar
449,972
Son üye
Emirhan6161

Yeni konular

Geri
Üst