Arama butonu
Bu konudaki kullanıcılar: 1 misafir
9
Cevap
400
Tıklama
0
Öne Çıkarma
PIC Basic If-Then problemi
A
18 yıl
Teğmen
Konu Sahibi

Arkadaşlar, problemim if-then arasında kalan işlemin koşul bozulur bozulmaz sonlanması.

IF PORTA.1 = 1 THEN
HIGH PORTB.1
PAUSE 2000
LOW PORTB.1
END IF

PORTA.1'de bir switch war, PORTB.1'de de motor var. Ben PORTA.1=1 olduğunda motorun 2 sn süreyle çalışmasını istiyorum ama motor çalışır çalışmaz düzenekteki PORTA.1=0 oluyor ve bekleme yapmadan işlem sona eriyor. Çok yöntem denedim ama olmadı. Fikri olan var mı?
Ali



L
18 yıl
Binbaşı

Basic bilmiyorum ama sorunun kaynağını yalnış yerde aradığın belli. IF yordamı içinde herhangi bir yerde koşulun bozulup bozulmamasını gözleyen bir makenizma olacağını hiç zannetmiyorum. Koşul bir defa sağlanır ve sonrası koşul rutinini ilgilendirmez.

PAUSE ile ilgili bir problem var olsa gerek. Mesela kristal hızını bildiren bişeyler vardır mutlaka, problem ordadır. Orda bir problem yoksa, o zaman sana bu gösterdiğin rutinde bir arıza varmış izlenimi veren bambaşka bir hata var.


Bu mesaja 1 cevap geldi.
A
18 yıl
Teğmen
Konu Sahibi

quote:

Orjinalden alıntı: Liu Kang

Basic bilmiyorum ama sorunun kaynağını yalnış yerde aradığın belli. IF yordamı içinde herhangi bir yerde koşulun bozulup bozulmamasını gözleyen bir makenizma olacağını hiç zannetmiyorum. Koşul bir defa sağlanır ve sonrası koşul rutinini ilgilendirmez.

PAUSE ile ilgili bir problem var olsa gerek. Mesela kristal hızını bildiren bişeyler vardır mutlaka, problem ordadır. Orda bir problem yoksa, o zaman sana bu gösterdiğin rutinde bir arıza varmış izlenimi veren bambaşka bir hata var.


Aslında çok haklısın, koşul bir kez gerçekleşince end if'e kadar işlemi yapması lazım ama ilginçtir, yapmıyor. Denemek için araya başka komutlar da ekledim başka beklemeler de koydum. Switc'i elimle tutunca program normal çalışıyor ama elimi çekince swicth 1 olur olmaz program kesiliyor. Hem de nerede olursa olsun. Kristal hızını program kendisi ayarlıyor ve denedim, pause 1000 yazdığımda 1 sn bekliyor.
Ali


Bu mesaja 2 cevap geldi.
L
18 yıl
Binbaşı

Adı üstünde "kesme"lerle (interrupt) bir problem vardır belki de.. Sen en iyisi bütün programı buraya kopyala, o zaman olayı çözecek birileri çıkar.



A
18 yıl
Yarbay

Yani motor çalışır çalışmaz anahtar sıfır oluyor di mi
şöyle olabilir ya toggle komutunu kullanabilirsiniz ya da
b:
if.. then goto a
endıf
end
a:
hıgh portb.1
pause 2000
low portb.1
goto b
end


Bu mesaja 1 cevap geldi.
A
18 yıl
Teğmen
Konu Sahibi

quote:

Orjinalden alıntı: 90alper90

Yani motor çalışır çalışmaz anahtar sıfır oluyor di mi
şöyle olabilir ya toggle komutunu kullanabilirsiniz ya da
b:
if.. then goto a
endıf
end
a:
hıgh portb.1
pause 2000
low portb.1
goto b
end

Bu da olmadı :(


Bu mesaja 1 cevap geldi.
L
18 yıl
Binbaşı

Bilmiyorum ya program içinde interrupt servisleriyle ile ilgili bişeyler karışmış olmalı. Rb0 dış kesme ucu boştaysa ve yazılımda bir şekilde tetiklenmeyi bekliyorsa, motor çalıştığı an bu boşta kalmış ucun etkilenme olasılığı yüksek. Bu doğruysa o zaman rb0 ucunu 4.7k dirençle toprağa veya vcc'ye bağlamayı dene.


Bu mesaja 1 cevap geldi.
A
18 yıl
Yarbay

Başka yerde problem olmasın


Bu mesaja 1 cevap geldi.
A
18 yıl
Yarbay

TRIS yazmaçlarında sorun olmasın yani aklım gelenleri söylüyorum ya da kristal ile pic arasında sorun vardır hangi tip kristal kullandınız


Bu mesaja 1 cevap geldi.
A
18 yıl
Teğmen
Konu Sahibi

Arkadaşlar hepinizden özür diliyorum, zira switch ve rölelerden biri bozuk gibi duruyor. Onları yarın yenisini alıp değiştireceğim. Sanki röle ilk tetikte iletiyor ama iletimde kalamıyor. Bunları değiştirdikten sonra tekrar yazacağım.
Bu kadar kısa sürede bu kadar cevap beklemiyordum, hepinize teşekkür ederim.
Ali



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.