Şimdi Ara

PIC Basic If-Then problemi

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
10
Cevap
0
Favori
384
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • 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



  • 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.
  • 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




  • 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.
  • 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
  • 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ı :(
  • 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.
  • Başka yerde problem olmasın
  • 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
  • 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
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.