Elektrotekno.com Ana Sayfa || Programlanabilir Cihaz ve Elemanlar || Microchip Pic Serisi


MCLR Reset Problemi

Kayıt: 09 Tem 2006
Mesajlar: 32

Offline
massive attack
Tarih: 18 01 2012 21:41

pic16f877a ile yaptığım devrede MCLR bacağını kullanarak butona basıldığında pice reset atıyorum ancak bunun yanında 3 adet farklı amaçlı buton var bazan bu butonlar da pic'i resetleyebiliyor. bunun sebebi ne olabilir?

yardımlarınız için şimdiden teşekkürler...


Reklamlar
Kayıt: 22 May 2011
Mesajlar: 310

Offline
matrak
Tarih: 18 01 2012 22:01

Devrenin şemasını ya da programını verirsen daha kolay yardım bulabilirsin
Başa dön
Kayıt: 09 Tem 2006
Mesajlar: 32

Offline
massive attack
Tarih: 19 01 2012 09:42

devre şeması ve programı

MCLR Reset Problemi


#include <16f877a.h>
#fuses xt,nowdt,noprotect,nolvp,noput,nowrt,nodebug,nocpd
#use delay (clock=4000000)
#use fast_io(b)
#define sw1 pin_a0
#define sw2 pin_a1
#define buton_start pin_a2
#define piston_i pin_b2
#define step pin_b4
#define asagi pin_b5
#define yukari pin_b6
#define pulse pin_c0
#define dene pin_c1

int start=0,i=0,reset=0;
int16 j=0;

/********* ana program fonksiyonu********/

void main ( )
{
setup_psp(psp_dısabled); // psp birimi devre dışı
setup_spi(spı_ss_dısabled); // spı birimi devre dışı
setup_timer_1(t1_dısabled); // t1 zamanlayıcısı devre dışı
setup_timer_2(t2_dısabled,0,1); // t2 zamanlayıcısı devre dışı
setup_adc_ports(no_analogs); // analog giriş yok
setup_adc(adc_off); // adc birimi devre dışı
setup_ccp1(ccp_off); // ccp1 birimi devre dışı
setup_ccp2(ccp_off); // ccp2 birimi devre dışı
ext_int_edge(h_to_l);
set_tris_b(0x01);
output_b(0x00);
output_c(0x00);

while(1)
{
if (reset==0)
{
reset=1;
output_low(asagi);
output_low(yukari);
output_low(piston_i);
output_low(step);
output_high(pin_b1);
delay_ms(500);
output_low(pin_b1);
delay_ms(1000);
for (i=0;i<10;i++)
{
output_high(pin_b1);
delay_ms(100);
output_low(pin_b1);
delay_ms(100);
}
}
if (input(buton_start))
{
start=1;
}
if (start==1)
{
output_b(0x00);
output_c(0x00);
for (j=0;j<300;j++)
{
output_high(pulse);
delay_us(90);
output_low(pulse);
delay_us(80);
}

output_high(piston_i);
delay_ms(500);
output_high(asagi);
while (!input(sw1));
output_low(asagi);
delay_ms(500);
output_high(yukari);
while (!input(sw2));
output_low(yukari);
delay_ms(500);
output_low(piston_i);
delay_ms(500);
}
}
}
Başa dön
Kayıt: 13 Ksm 2008
Mesajlar: 85

Offline
einstain
Tarih: 19 01 2012 16:34

Kullandığın donanımlarınn biri picden fazla akım çekiyor olabilir , pull-up direncinin iyi temas etmesine dikkat et. Transiztörün beyz ile pic arasına direnç koy. Güç kaynağın çekilen toplam akımı karşılayabiliyormu kontrol et.
Başa dön
Kayıt: 22 May 2011
Mesajlar: 310

Offline
matrak
Tarih: 19 01 2012 18:22

Bence hata donanımsal .einstain ın dediği gibi donanımları kontrol et.Fazla akım çekiliyor olabilir.Bunu şöyle deneyebilirsin.ULN entegresini devreden çıkar o çıkışlara LED bağla ,devreyi böyle çalıştır.Problem çıkışlardan mı kaynaklanıyor anlayabilirsin.Beyz direncini eklemeyi unutma.kolay gelsin.
Başa dön
Kayıt: 30 Arl 2009
Mesajlar: 159

Offline
kudretuzuner
Tarih: 19 01 2012 21:50

MCLR Reset Problemi


Merhaba
Programınızın,yazılım dilini bilmediğim için herhangi bir yorum yapamayacağım.Şemada gördüğüm kadarı ile 3 adet buton ile üç ayrı röleyi kontrol ediyorsunuz.Öncelikle acilen butonların kontakları arasına(sparkların-voltaj sıçramasını)önlemek için 100nf-470 nf arası kutupsuz kondansatör koymanızı tavsiye edeceğim.Sonuç olumsuz olursa Tavsiyelerim şöyle olacak.
1-PIC'leri kurarken (TRISA....TRISD)ayarlarını devrenizde de uygulayınız.(giriş ise 1k-10k arsı direnç ile pozitife bağlayınız,çıkış ise yüke bağlayınız(basit bir led de olabilir.)Böylece boşta pin bırakmamış olursunuz.
2-Bana sorarsanız "Sparkları" engelleme adına buton kontrol pinlerini TRIS ayarlarında giriş yapıp pozitife çekmek,kontrol etmek için ise butonun öbür ucunu şaseye bağlamanızı öneririm.Böylece yazılımda "buton pozitife çekildi mi?" kontrolu yerine "buton negatife çekildi mi?" şeklindeki bir yazılım ile buton kontrolu yapmanız bana göre daha kullanışlı bir yöntemdir.(sizin devrenizdeki buton bağlantılarının tamamen tersi)ama yazılımda da (.asm ile BTFSS yerine BTFSC olarak kontrol etmeniz daha uygun olur)
3-Yine bana sorarsanız 3 buton ile 3 röle kontrolu için 40 pinli bir PIC kullanmak yerine Daha az pinli PIC kullanmak daha rantabl olmaz mı?Örneğin 16F628A gibi.Not:Gerçekten ihtiyaç var ise çalışma senaryosunu tam olarak yazarsanız bilgim dahilinde ise size asm ile yazmaya çalışırım.Kolay gelsin.
Başa dön
Kayıt: 09 Tem 2006
Mesajlar: 32

Offline
massive attack
Tarih: 20 01 2012 13:18

Arkadaşlar ilginiz için tesekkur ederim...

Önerilerinizi dikkate alarak yeniden pcb yapacağım...
Başa dön



MCLR Reset Problemi


Benzer Konular
- Onur Bilke Abimizin Kayan Yazı devresinde kayan yazıda donma problemi
- Harmonik Problemi
- uzaktan kumanda problemi

- Lazer Yazıcı Toner Chip Reset Devresi

- Kompanzasyon Problemi
- internal osc 125 khz carrier sinyal problemi
- Onur Bilke Kayan Yazı Saat Problemi
- termokupl okuma problemi?
- Onur Bilke Kayan Yazı Pbp Derleme problemi

- pic-reset yardım

- Elektronik cihazların yanında kaynak yapma problemi

Sitemize üyelik ve içeriğin indirilmesi tamamen ücretsizdir. Sitemizde paylaşılan tüm dokümanlar (Tezler, makaleler, ders notları, sınav soru cevaplar, projeler) paylaşımcıların bireysel çalışmaları olup telif hakları kendilerine aittir ya da açık bir şekilde kamusal alana yerleştirilmiş dokümanların birer kopyalarıdır. Kişilerin bireysel çalışmalarını sitemizde yüklemesinde, sitemizde paylaşıma teşvik eden puanlama sisteminin de etkisi büyüktür. Bunlara rağmen hala size ait olan ve burada bulunmasına izin vermediğiniz dokümanlar varsa iletişim bölümünden yöneticilere bildirmeniz durumunda derhal silineceklerdir.
Powered by phpBB | Translated by phpBB Turkiye | Ads by Google Adsense | Design by Crazy Bat based