if(buton){
output_high(pin_A0);
delay_ms(500);
x=input(pin_A0);
write_eeprom(2,x);
}
Yukarıdaki işlemde butona basılınca A0 pini High oluyor fakat x=input(pin_A0); satırı işleyince A0 pini Low'a düşüyor.
Bunun sebebi hakkında bilgisi olan var mı?
*x=input(pin_A0); satırını yorum satırına dönüştürüp tekrar derlediğimde butona basılınca A0 high konumda kalmaya devam ediyor.
aksi durumda bu satırı okuyunca low'a düşüyor.
Sen aksini belirtmediğin sürece CCS'de,
pinlerle ilgili kullanılan giriş çıkış komutlarında,
tris ayarları otomatik olarak ayarlanır.
Örneğin,
input(Pin_A0) yazdığında Pin_A0 pini giriş özelliği olacak şekilde ayarlanır.
Çıkışla ilgili komutlarda da, ilgili pinler çıkış özelliği olacak şekilde ayarlanır.
Eğer çıkış olarak kullandığın bir pinin lojik değerini okumak istiyorsan,
input_state() komutunu kullanmak gerekir.
Bu komut okuma yaparken pinin tris ayarını değiştirmez.
Bence güzel bir özellik.
Alıntı yapılan: Salih - 04 Aralık 2016, 00:34:14
Sen aksini belirtmediğin sürece CCS'de,
pinlerle ilgili kullanılan giriş çıkış komutlarında,
tris ayarları otomatik olarak ayarlanır.
Örneğin,
input(Pin_A0) yazdığında Pin_A0 pini giriş özelliği olacak şekilde ayarlanır.
Çıkışla ilgili komutlarda da, ilgili pinler çıkış özelliği olacak şekilde ayarlanır.
Eğer çıkış olarak kullandığın bir pinin lojik değerini okumak istiyorsan,
input_state() komutunu kullanmak gerekir.
Bu komut okuma yaparken pinin tris ayarını değiştirmez.
Bence güzel bir özellik.
Bunu öğrenddiğim iyi oldu. Teşekkür ediyorum. Bu konu altında bir soru daha sormak istiyorum.
Tx ve Rx pinlerini seri iletişimde kullandığım zaman eğer diğer pinlerim C7 hariç çıkış olduğu zaman. Set_tris_c(0x80); ve output_c(0x00); kullandığım zaman seri iletişimde sorun yaşıyorum. Eğer sigorta ayarlarını c portu için hiç yapmazsam sorunsuz çalışıyor. Burada atladığım konu ne olabilir?
CCS seri haberleşme ayarlarında Tris ayarlaması yapmıyor olabilir.
Ben her ihtimale karşı,
aşağıdaki komutları başlangıç ayarlarında kullanırım.
input(Pin_C7);
Output_low(Pin_C6);
CCS C' de RCV pinini tris ayarlarından giriş yapmazsanız kendi ayarlamıyor.
Ayrıca, RCV pini RS-232 tanımlamalarında kullanılmazsa UART pinini tanımlasanız bile soft modda çalışıyor. Çipin içindeki UART'ı kullanmak için RCV pinini de tanımlamak gerekiyor.
#use rs232(baud=115200, xmit=PIN_C4, rcv=PIN_C5,ERRORS) gibi...
output_high, input gibi komutlar kullanıldığında CCS her seferinde tris pinlerini ayarlıyor.
Bundan kurtulmak isterseniz programın başına bütün portlar için #use fast_io(ALL) sadece A portu için #use fast_io(A)
ekleyin. Ama bu sefer de Tris registerlerini siz ayarlamak zorundasınız.
TRISA= 0b00000000;
Bu seferde TRISA 'yı önceden tanımlamanız gerekir.
#BYTE PORTA = 0x05
o zaman sizleri yakalamışken bir sorum daha olacak.
+CMT: "+xxxxxxxxxxxx","","16/11/22,19:06:58+12"
YES
pic'in RX pinine gelen verim bu? getc(); fonksiyonu ile bunu diziye atmak istiyorum ama dizi boyunu nasıl hesaplayacağım? yani YES kelimesinden sonra Veri almanın bitmesi gerekiyor. ve YES kelimesi Alt satırda geliyor. Daha sonra gelen Veri içinde işlemeler yapacağım
Not: Gets() ile veriyi almak istemiyorum.
getc() ile veri al,
eğer gelen karakter C ise diziye kaydetmeye başla,
Y ile karşılaştığında diziye kaydetmeyi durdur.
Aradaki verileri ayrıştırıp kullanabilirsin.
Alıntı yapılan: Salih - 04 Aralık 2016, 13:40:02
getc() ile veri al,
eğer gelen karakter C ise diziye kaydetmeye başla,
Y ile karşılaştığında diziye kaydetmeyi durdur.
Aradaki verileri ayrıştırıp kullanabilirsin.
O şekilde kullanıyorum ama Çeşitli sorunlara sebep olduğu için Son 3 Karaktere göre bitirmek istiyorum.
Buffer[32]='Y' Buffer[33]='E' Buffer[34]='S' gibi.. ama 32 33 34 gibi dizideki yerler dizide standart değil. Bazen YES/NO/EVET/HAYIR gibi kelimeler almak istiyorum.
Örneğin: Gelen dizi içindeki "Yeni Dünya YES" gibi bir dizide ilk gelen Y'de dizi sonlansın istemiyorum gibi..
Gelen karakterler ASCII ise şöyle bir önerim var,
+C ile dizi kaydını başlat.
YES alt satıra geçiyor demiştin.
Alt satıra geçirmek için
#13 veya #13#10 gibi sayı değerleri gelir.
#13 sayısını gördüğünde,
gelenleri ayrı yorumla. YES, NO v.s.