Pic12f675 lojik sorunu

Başlatan Okan12345, 08 Mart 2014, 23:36:23

Okan12345

İyi Akşamlar Sayın forum üyeleri.

Pic12f675 lojik sorunu var. Bir türlü çözemedim.

Şöyleki (Kodda gördüğünüz gibi Analog çıkışları kapattığım halde) 

GPİO.4 e verdiğim gerilimi  GPİO.2 nin çıkışında alıyorum.
Örneğin 1.8v girişe verdiğimde çıkıştanda ona yakın değeri okuyorum 1.6 gibi ve bu durumda 9 milliamper çekiyor.   Sanki Analog kapanmamış gibi.  Bir türlü anlamadım. Bu durum normal midir acaba?  Başka bir picide denedim onda da neredeyse aynıdır.

Not: Pic gnd ve v+ arasına 100nf kondansator bağladım. Devredede hiç bir sorun yoktur kısa devre gibi vs.


Halbuki lojik 1 olması için belirtilen voltajın üzerine çıkması lazım aksi halde 0v olması gerekmezmi? Belirtilen voltajın üzerine çıktığındada Pice uygulanan voltajı çıkışa aktarması lazım değilmi? Kodu aşağıya yazdım acaba unuttuğum komutmu var?
Lütfen yardımcı olurmusunuz?

@ DEVICE PIC12f675, intrc_osc_noclkout, wdt_on, pwrt_on, mclr_off, protect_off, intrc_osc_noclkout

define OSCCAL_1K 1
CMCON = 7    ' Tum komporator pinleri kapatildi hepsi giris cikis
ANSEL = 0    ' Tum Analog pinleri kapatildi hepsi IO
option_reg.7=0  ' Tum pull-uplar iptal.


TrisIO.0=1 ' I giris 0 cikis sayilir
TRisIO.1=1
TrisIO.2=0
TrisIO.3=1
TrisIO.4=1
TrisIO.5=1
GPIO = 0
symbol Led = GPIO.2
Symbol Tus = GPIO.4

Basla: 
if tus=1 then
High led     
else 
low led
endif
goto basla
end

ipek

OPTION_REG.7=0
ve
WPU=%000001
hangi portu Pull yapacaksanız wpu'yu 1 yapacaksınız.
not gp3 mclr pull içermemektedir. yani bunu 1 yapmanız oraya pull konulduğu anlamına gelmez. gerçek rezistans gerekir.

Okan12345

Alıntı yapılan: ipek - 08 Mart 2014, 23:50:27
OPTION_REG.7=0
ve
WPU=%000001
hangi portu Pull yapacaksanız wpu'yu 1 yapacaksınız.
not gp3 mclr pull içermemektedir. yani bunu 1 yapmanız oraya pull konulduğu anlamına gelmez. gerçek rezistans gerekir.

Pull uplari iptal ettigimdede durum aynidir.

ipek

sigortalarında wdt on yapılmış birde bunu off yaparak dene istersen.

ete

Şema olmadan bu soruna cevap bulmak zor. Zira tus denilen giriş pini bir direnç ile pull-down yapılmışmıdır ? Bunu bilmiyoruz. Programa göre yapılmış olması gerekir.  Yapılmamış ise o pin float konumunda kalır ve sürekli olarak high ile low aradında gidip gelir. Programda bu duruma bağlı olarak led çıkışını sürekli olarak high ile low aradında gezindirir. Bu durum led çıkışında stabil bir voltaj ölçümünü engeller ve olması gerenden daha az voltaj okumanı sağlar. Pic işlemcileri lojik seviye olarak 1,8v tu eşik noktası sayar. Altı low kabul edilir üstü high. Sende tam eşik voltajını veriyorsun buna dikkat et.
Option_Reg=0 verildiğinde pull up dirençleri aktif edilir iptal edilmez. Ama  bu komut genel pullup ları açar ayrıca WPU registerine de hangi pinde pullup olsun istiyorsan değer vermelisin. Kısaca pullupları kapatmak istiyorsan ki programında bu gerekli option_reg=1 komutu vermelisin.
Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

Okan12345

İlgilendiğiniz için teşekkür ederim Hocam.
Aslında girişe transistörle fotodiyor bağlantım ve pin girişiyle gnd arasına 5 k dirençle pull-down yaptım. Fakat fotodiyodun üzerinde ışık tutmadan pin girişinde 1.8v görüyorum.

Anlamadığım kısmı şudur.
Giriş 1.8v olduğunda çıkıştanda ona yakına değeri okuyorum. Giriş voltajını artırdığımda 3.5v çıkıştanda aynı voltajı alıyorum.

Anlamadığım kısım şudur.
Örneğin lojik 1 olması için 2.5v  yukarı olmalıdır. 2.5v dan aşağısı lojik 0 olur.

Şimdi belirtilen voltajın üzerine çıkmıyorsa çıkıştanda 0v okumamız gerekmiyorum? Aynı şekilde 2.5v üzerinde hemen 5v yükselmesi gerekmiyorum?

ete

16F628 data sheet'inde Pic LOW voltaj girişi min VSS (yani GND) max olarakda 0,8V olarak belirtilmiş.
Aynı yerde ise HIGH voltaj girişi ise VDD veya min 2,0V denilmiş.
Bu durumda 0,8 ile 2V arasındaki 1,2V luk bölge kararsız bölge olmuş oluyor ve muhtemelen senin düzeneğinde pic pinine karasız bölge voltajını uyguluyor. Bir şey yapıp o kararsız bölgeden çıkman lazım. Ya yukarı doğru yada aşağı doğru gitmekte yarar var. Boşta ilgili pin LOW olacağına göre aşağı doğru gitmende yarar var.

Ete


Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

Okan12345

Alıntı yapılan: ete - 09 Mart 2014, 17:56:23
16F628 data sheet'inde Pic LOW voltaj girişi min VSS (yani GND) max olarakda 0,8V olarak belirtilmiş.
Aynı yerde ise HIGH voltaj girişi ise VDD veya min 2,0V denilmiş.
Bu durumda 0,8 ile 2V arasındaki 1,2V luk bölge kararsız bölge olmuş oluyor ve muhtemelen senin düzeneğinde pic pinine karasız bölge voltajını uyguluyor. Bir şey yapıp o kararsız bölgeden çıkman lazım. Ya yukarı doğru yada aşağı doğru gitmekte yarar var. Boşta ilgili pin LOW olacağına göre aşağı doğru gitmende yarar var.

Ete

Çok teşekkür ederim hocam anladım fakat giriş 3.1v olduysa örneğin artırdıkta aynı oranda çıkıştanda artıyor. Bunu anlamadım Bu neden kaynaklanıyor olabilir? Picin giriş çıkış pinleri arasında hiç bir bağlantı yoktur.

ete

Bu nu bende anlamadım. Hem bağlantı yok hemde bir ADC giriş diğeri DAC çıkış değilki birinden girdiğin diğerinden çıksın?.
Bana kalırsa terslik senin devrende iyice kontrol et sanal bir şey bu şekilde hissetmeni sağlıyor. Hiç görmedim böyle bir şey.
Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

Okan12345

Tamam Hocam teşekkür ederim.  O zaman ben iyice kontrol edeyim devreyi. Ama kodda eklemem gereken ve yahut unuttuğum bir komut olamazmı?

ete

Açıkladığın işlem için başka koda gerek yok.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

Okan12345

Hocam sorunu çözdüm Areste devreyi çizerken Picin gnd bacağına bağlanan yolda atlama yapmıştım yolların kesişmesi nedeni ile onu birleştirmeyi unutmuşum. Çok teşekkür ederim ilgilendiğiniz için.