Şimdi Ara

pic bir işlemi yaparken arkadan zamanı sayabilirmi

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
17
Cevap
0
Favori
1.371
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • selam,
    sayın arkadaşlar mesela pbp de hpwm komutunu kullandıgımızda pic herhangi bir satırı uygularken arka taraftanda pwm sinyalini üretebiliyor peki bu işi zaman içinde yapabilirmi yani başka bir işle ugraşırken arka taraftanda zamanı sayabilirmi eğer 16f877 veya 84 için varsa böyle bir şey ufak bir örnek verebilirmisiniz



  • pic de timer modülü...
  • r2d2droids, teşekkür ederim fakat bu işlerde acemiyim biraz daha açarmısınız mesela pbp de bir kaç satır yazarmısınız
  • basic bilmiyorum fakat timer modülü ile işlem yapabilmeniz için ilk önce modül hakkında bilgi sahibi olmanız gerek.
    http://www.geocities.com/r2d2droids/downloads/appnotes/pic.zip
    adresinde Türkçe bilgi bulabilirsinz. ardından yapmanız gerekn basic dilinde timer için kullanılan registerlere modülü aktif etmek, bölücü değerini atamak interruptları aktif etmek gibi işlemleri gerçekleştirmek için bazı değerler atayacaksınız. modülün amacı sayma sonunda bir kesme oluşturmak pbp da kesmeleri nasıl yapabileceğinizi de pbp nin manual inden öğreneceksiniz. "interrupt service routine" şeklinde geçiyor olabilir. bilemiyorum. bilen arkadaşlar bu konuda yardımcı olacaklardır...




  • Pic Basic yardım dosyasında on_interrupt komutunu bi incele.orda hazır bi saat programı var....
  • quote:

    Orjinalden alıntı: ugurmola

    selam,
    sayın arkadaşlar mesela pbp de hpwm komutunu kullandıgımızda pic herhangi bir satırı uygularken arka taraftanda pwm sinyalini üretebiliyor peki bu işi zaman içinde yapabilirmi yani başka bir işle ugraşırken arka taraftanda zamanı sayabilirmi eğer 16f877 veya 84 için varsa böyle bir şey ufak bir örnek verebilirmisiniz

    16f877'nin içinde sen kurmasan da sürekli sayan TMR0(8bitlik sayıcı), sen kurarsan sayan TMR1 (16 bitlik sayıcı), yine sen kurarsan çalışan TMR2 (8 bitlik sayıcı) mevcuttur. Bu sayıcıları kurarak kesmelerini aktif edersen belirli periyotlarla kesme oluştururlar ve sen de bu kesmeler sırasında belirli işlemler yapabilirsin. Mesela kesme içinde bir sayacı belirli bir sayıdan aşağıya saydırıp uzun zaman gecikmeleri elde edebilirsin. Bu arada programın kesmeler dışında başka işleri yapmaya devam eder. Örnek çok, ama benimkiler assembly olur. İŞine yararsa birkaç program koyarım buraya. Kolay gelsin.




  • ilgilenen her keze teşekkürler
    r2d2droids, bir örnek buldum ve sizin verdiğiniz bilgiler o örneği anlamam için çok faydalı oldu teşekkür ederim fakat anlayamadıgım bir kaç nokta var

    saat var byte
    dsaat var byte
    dakika var byte
    saniye var byte
    ticks var byte
    update var byte
    saat = 0: dakika = 0: saniye = 0: ticks = 0: update = 1
    option_reg = %00000101
    intcon = %10100000
    on interrupt goto kesme
    basla:
    if update = 1 then
    lcdout $fe,1
    dsaat = saat
    if (saat//12) = 0 then
    dsaat = dsaat+12
    endif
    if saat<12 then
    lcdout #dsaat,":",#dakika,":",#saniye," AM"
    else
    lcdout #(dsaat-12),":",#dakika,":",#saniye," PM"
    endif
    update = 0
    endif
    goto basla
    disable (ne maksatla kullanılmış)
    kesme:
    ticks = ticks + 1
    if ticks < 61 then devam
    ticks = 0
    saniye = saniye + 1
    if saniye >= 60 then
    saniye = 0
    dakika = dakika + 1
    if dakika>= 60 then
    dakika = 0
    saat = saat + 1
    if saat >= 24 then saat = 0
    endif
    endif
    update = 1
    devam:
    intcon.2 = 0 'kesme bayragı temizle (sizin verdiğiniz notlarda tmr0 sayıcısı zaman aşımı yok diyor)
    resume
    end

    bunları bana açıklayabilirmisiniz



    < Bu mesaj bu kişi tarafından değiştirildi ugurmola -- 2 Şubat 2007; 21:13:19 >




  • pic programı uygularken disable gördügü yerden enable gördügü yere kadar olan ara kısımda kesmeleri devre dışı bırakır.Yani
    disable
    .
    .
    .
    enable şeklinde yazarsan arada ... olan satırlar işlenirklen kesme oluşsada bi işlem yapılmayacak.Ben böyle biliyorum daha önce çok benzer bi uygulamayı yapmıştım.
    İkinci işaretledigin yerde ise 2.bitin temizlenmesinin amacı kesmeleri tekrar aktif etmen.Eger onu temizlemessen kesme gelsede ilgili bit 1 oldugundan işlem yapılmayacak diye biliyorum.Hatırladıklarım bunlar.Umarım anlatabilmişimdir
  • cevap erken gelmiş ama soru sahibi arkadaşın yerinde olsam madem disable var neden enable yok sorusunu sorardım...
  • Hem enable yok hem de program "disable " komutunun olduğu satıra hiçbir zaman gitmez.Bi gariplik var
  • Birkaç örnekte aynı olayı gördüm. Disable kesme olarak belirlenen etikete önek olarak kullanılan bir seçenek. Anti komutu disable değil resume. Soruyu soran arkadaşım seni hakkın programlama diline davet ediyorum C öğren bırak bu picbasic zırvalarını.
  • µC ler için bir de C++ derleyicileri var onlarıda hakk diline dahil etmek lazım...
  • her keze açıklamalarından dolayı tşekkür ederim fakat ben bu dili kendi imkanlarımla zor zor öğrenmeye çalışıyorum ve cundalı oldugum için her istediğim malzeme ve kaynağa pat diye ulaşamıyorum her neyse..
    bu akşam bir kaç saat kafa patlatıp olayı çözdüm
    benim anladıgım kadarıyla bişeyler açıklamaya çalışayım eğer yanlışım olursa sizlerden müdahale bekliyorum
    enable komutu kullanılmasada oluyor anladıgım kadarıyla intcon2 kontrol edilerek enableye gerek kalmadan kesme iptallikten çıkıyor
    tmr0 256usn de bir başa dönüyor ve başka bir satır okunurken zaman aşımı oluştugundan intcon2 1 oluyor
    ben birde denemek amacıyla ufak bir program yazdım program lcd de analogtan giren bilgiyi geçen saniyeyi(100sn ye kadar sonra tekrar sıfırlanıyor)ve hserout la giren bir seri veriyi okuyor bunu örnek olarak vereyim dedim

    trisc = %10111111
    zaman var byte
    say var byte
    w var word
    gel var byte
    intcon = $a0
    option_reg = $05
    on interrupt goto kes
    basla:
    lcdout $fe,$80,"sn:",#zaman,":",#say," gln:",#gel," "
    adcin 0,w
    lcdout $fe,$c0,"olc:",#w," "
    hserin 10,hata,[gel]
    goto basla
    disable
    kes:
    say = say+1
    if say < 61 then git
    say = 0
    zaman = zaman+1
    if zaman = 100 then zaman = 0
    git:
    intcon.2 = 0
    resume
    enable
    hata:
    goto basla

    eger bir yanlışım varsa lütfen uyarın hemen düzelteyim




  • yardım dosyasını bir yerlere upload edebilir misin? zorla pic basic öğreteceksin bana...
  • http://rapi.dshare.tv/30518

    soldakine on interrupt sağdakine hserout yüklenecek



    < Bu mesaj bu kişi tarafından değiştirildi ugurmola -- 3 Şubat 2007; 23:09:32 >
  • sayın üstadlar yok mu bunu inceleyen dogru yolda olup olmadıgımı merak ediyorum eksiklerimi bana söyleyebilirmisiniz
  • Proton Pic Basic e laf söyletmem..PicC sadece karmaşık ve bu karmaşıklık daha profesyonel olduğu için değil..
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.