Arama butonu
Bu konudaki kullanıcılar: 1 misafir
16
Cevap
1409
Tıklama
0
Öne Çıkarma
pic bir işlemi yaparken arkadan zamanı sayabilirmi
U
18 yıl
Teğmen
Konu Sahibi

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



R
18 yıl
Yarbay

U
18 yıl
Teğmen
Konu Sahibi

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


Bu mesaja 2 cevap geldi.
R
18 yıl
Yarbay

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



O
18 yıl
Yüzbaşı

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



E
18 yıl
Yüzbaşı

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.


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

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 >
Bu mesaja 1 cevap geldi.
A
18 yıl
Yüzbaşı

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


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

cevap erken gelmiş ama soru sahibi arkadaşın yerinde olsam madem disable var neden enable yok sorusunu sorardım...


Bu mesaja 1 cevap geldi.
O
18 yıl
Yüzbaşı

Hem enable yok hem de program "disable " komutunun olduğu satıra hiçbir zaman gitmez.Bi gariplik var


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

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


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

µC ler için bir de C++ derleyicileri var onlarıda hakk diline dahil etmek lazım...


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

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


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

yardım dosyasını bir yerlere upload edebilir misin? zorla pic basic öğreteceksin bana...


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

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 >
Bu mesaja 1 cevap geldi.
U
18 yıl
Teğmen
Konu Sahibi

sayın üstadlar yok mu bunu inceleyen dogru yolda olup olmadıgımı merak ediyorum eksiklerimi bana söyleyebilirmisiniz


Bu mesaja 1 cevap geldi.
O
18 yıl
Yüzbaşı

Proton Pic Basic e laf söyletmem..PicC sadece karmaşık ve bu karmaşıklık daha profesyonel olduğu için değil..



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.