16f684'de rc0...rc4 pinleri neden farklı davranıyor?

Başlatan burctankal, 05 Eylül 2014, 10:50:14

burctankal

Elektronikle amatör olarak ilgileniyorum ve bir konuda sizlerin yardımına ihtiyaç duydum. Bir projenin ortasında pic değiştirmem gerekti ve yeni geçtiğim pic 16f684'ün farklı davrandığını farkettim. Portc'de herhangi bir pini high yaptığımda rc0... rc4 pinleri kendiliğinden low'a geçiyor. Örneğin tek tek portc'deki ledleri yakmak için aşağıdaki kodu yazdığımda her bir işlemde rc0...rc4 pinleri kapanıyor. Oysa ki ben portc'deki diğer pinleri etkilemeden sadece tek bir pini high yapmak istiyorum. Datasheet'i anlayabildiğim kadar okudum ancak herhangi bir çözüm bulamadım. Yardımcı olacaklara şimdiden teşekkür ederim.

void main() {
trisc=0;
portc=0;

while (1)
{
portc.f0=1;
delay_ms(500);
portc.f1=1;
delay_ms(500);
portc.f2=1;
delay_ms(500);
portc.f3=1;
delay_ms(500);
portc.f4=1;
delay_ms(500);
portc.f5=1;
delay_ms(500);

}
}

ete

Bu Pic'de C portu ilk açılışta önseçimli olarak Komparatör olarak açılır. Komparatörü iptal ederseniz bu sefer sıradaki Analaog pin özelliği devreye girer. Pinleri tamamen digital kullanmak için Analog özelliğinide kapatmak gerekir.
Bu amaçla programın başına;
CMCON0=7 'komparatör pinlerini iptal eder
ANSEL=0    'analog pinleri iptal eder
komut satırlarını ilave etmeniz gerekir.

Ete

burctankal

#2
Hocam çok teşekkür ederim. Dediğiniz komutları ilave edince portc istediğim gibi çalıştı. Ancak Porta'dan da analog okuma yapmam lazım. Bu komutlar porta'yı da dijitale çeviriyor mu? Sadece portc'yi dijitale çevirmek için ansel=0b011111111 gibi bir kod uygun olur mu?

ete

Adc ölçümüde yapacak isen yalnızca CMCON0=7 komutunu kullan. Ansel için ise analog olarak kullanacağın pine karşılık gelen biti "1" yapmandigital olacak pinlerin bitlerini ise "0" yapman gerek.
Ete

burctankal

Hocam Allah razı olsun, ne zaman sıkışsam  internetteki yazılarınız imdadıma yetişti. Sizden çok şey öğrendim. Hakkınızı helal edin  :)

Powered by EzPortal