proton ile saat bazında röle aktif etme?

Başlatan mc_307, 16 Mayıs 2015, 23:36:15

mc_307

Alıntı yapılan: mehmet - 17 Mayıs 2015, 12:57:20
1sn. x 108 x 10 x 10 = 10800sn. / 3600 = 3sa.
FOR a = 1 TO 108
     FOR b = 1 TO 10
         FOR c = 1 TO 10 
              DelayMs 1000
         NEXT
     NEXT
NEXT

Mehmet hocam bu ne ile yazılmış. Protonda bunu derleyebilirmiyim. Ve bu yazılım ne yapıyor, açıklayabilirmisiniz

F.T

Bu proton ile derlenir.Burda 3 adet içi içe girmiş döngü var.Bu döngülerde belirtilen rakamlar sırası ile işlenir ve istenilen gecikme işlemi yapılmış olur.Aşağıda Mehmet hocanın hesaplaması vardı o hesaplamanın programsal olarak yazılmış hali.
Hakk şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

mc_307

Alıntı yapılan: F.T - 17 Mayıs 2015, 14:53:40
Bu proton ile derlenir.Burda 3 adet içi içe girmiş döngü var.Bu döngülerde belirtilen rakamlar sırası ile işlenir ve istenilen gecikme işlemi yapılmış olur.Aşağıda Mehmet hocanın hesaplaması vardı o hesaplamanın programsal olarak yazılmış hali.
Sagol hocam.
Prtona bunu yapıştıp derle desek olcak o zman. Normalda port tris vs. gibi yazılıyor ya, farkli geldi bana. Burdaki sayılar neden böyle secilmiş ve ondalik anlamadim bu arada.

mehmet

Ben sadece ~3 saatlik gecikme yapmaya çaılıştım. Bu kodları
genel olarak tüm Basic derleyicileri anlayabilirler. Sayılar 8bit
tamsayı. Bu yazdığım proje degil, sadece bir parçası. Siz ~3
saat gecikme nasıl yapılır demiştiniz. Ben bunu yapmaya
çalıştım.
Bu kodlarla kesmeler ve harici reset haricinde başka şeyler
kontrol edilemez. Bu nedenle pek mantıklı bir yöntem
değildir. Bana göre daha mantıklı olan;
1mS. de kesme üretilir (Kesme zamanı sadece örnek). Ana
döngüde gereken hesaplamalar buna göre yapılır. Bu durumda
hem doğruya yakın hesaplama elde edilir hem de başka
sistemler kontrol edilebilir...
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"

mc_307

Alıntı yapılan: mehmet - 17 Mayıs 2015, 15:55:53
Ben sadece ~3 saatlik gecikme yapmaya çaılıştım. Bu kodları
genel olarak tüm Basic derleyicileri anlayabilirler. Sayılar 8bit
tamsayı. Bu yazdığım proje değil, sadece bir parçası. Siz ~3
saat gecikme nasıl yapılır demiştiniz. Ben bunu yapmaya
çalıştım.
Bu kodlarla kesmeler ve harici reset haricinde başka şeyler
kontrol edilemez. Bu nedenle pek mantıklı bir yöntem
değildir. Bana göre daha mantıklı olan;
1mS. de kesme üretilir (Kesme zamanı sadece örnek). Ana
döngüde gereken hesaplamalar buna göre yapılır. Bu durumda
hem doğruya yakın hesaplama elde edilir hem de başka
sistemler kontrol edilebilir...
Benim yapacağım devre yazılımı uzunmudur zormudur?
Yani 12 sn caliş 3 saat dur tekrar baştan. Bu döngü saniye bazinda ćok basit ama saat olayı baya bir zor sanırım. Beni aşacak gibi. Delaymsler neden sıkıntı olur acaba. Bu reset olayı nedir. mcu sıkışınca yazılimı başan mı alır. Öyle mi olur.bunu aşamazmıyım basitce

baran123

#20
Şimdi delayms demek yazdığımız süre kadar bekle demek oluyor.Fakat bunun kötü tarafı bu komutu işlediği anda yani beklemeye başladığı anda program kilitlenir.Yani o bekleme bitene kadar hiç bir şeye cevap vermez hiç bir işlem yapamaz.O yüzden süre bitene kadar veya siz enerjiyi kesip açana kadar(reset atana kadar) işlemciye müdahale edemezsiniz.Bu yüzden iyi bir kullanım için kesme kullanılmalıdır.

Kesme ise şudur.Bir işlem yapıyorsunuz.Kesme ayarlarınızın hazır olduğunu farz edelim.Kesme arkada takip ediyor.Siz işlemlerinizi yaparken bakıyor istediğiniz(ayarladığınız) süre doldu hop sizi bir fonksiyonun içine atıyor hemen işleriniz halledip ana kısma geri dönüyorsunuz.Örnek verecek olursak ocak başında pilav pişiriyorsunuz.Misafir geleceğini biliyorsunuz diyelim.Bir gözünüz kapıda, hop kapı çaldı hemen kapıyı açıp ocak başına geri dönersiniz.O yüzden kesme çok daha iyi bir şey :)

Çok güzel anlattım he. :D

mesaj birleştirme:: 17 Mayıs 2015, 17:23:02

Birde röle kullanacaksınız sanırım yüksek akım kontrol var.O yüzden delay sakat :)

mc_307

Alıntı yapılan: Baran Ekrem - 17 Mayıs 2015, 17:21:37
Şimdi delayms demek yazdığımız süre kadar bekle demek oluyor.Fakat bunun kötü tarafı bu komutu işlediği anda yani beklemeye başladığı anda program kilitlenir.Yani o bekleme bitene kadar hiç bir şeye cevap vermez hiç bir işlem yapamaz.O yüzden süre bitene kadar veya siz enerjiyi kesip açana kadar(reset atana kadar) işlemciye müdahale edemezsiniz.Bu yüzden iyi bir kullanım için kesme kullanılmalıdır.

Kesme ise şudur.Bir işlem yapıyorsunuz.Kesme ayarlarınızın hazır olduğunu farz edelim.Kesme arkada takip ediyor.Siz işlemlerinizi yaparken bakıyor istediğiniz(ayarladığınız) süre doldu hop sizi bir fonksiyonun içine atıyor hemen işleriniz halledip ana kısma geri dönüyorsunuz.Örnek verecek olursak ocak başında pilav pişiriyorsunuz.Misafir geleceğini biliyorsunuz diyelim.Bir gözünüz kapıda, hop kapı çaldı hemen kapıyı açıp ocak başına geri dönersiniz.O yüzden kesme çok daha iyi bir şey :)

Çok güzel anlattım he. :D

mesaj birleştirme:: 17 Mayıs 2015, 17:23:02

Birde röle kullanacaksınız sanırım yüksek akım kontrol var.O yüzden delay sakat :)
Kesmenin hikayesi güzel olmuş hocam. Işteyim acıktım valla :)
Yalnız protonda nasıl kesme yapılır yapmam zor.
Delaymsler olurken baska bir islem yokki benim dedigimde sure bekle role aktif et kisa sure sonra başa. Ekran falan olmayacak bu devrede.
Delayms nin yuksek akimla Nasil bir etkilesimi var acaba.
Takacagimiz motor 220v 4w gibi bisey olcak. 12v tianbo role takarız birde.

baran123

Yani yüksek akımlı bir şeyi kontrol edecekseniz iyi yazılım yapmak gerek anlamında. :)

Proton bilmiyorum ama timer0 kesmesi diye aratırsanız örnekler bulabilirsiniz.

mehmet

#23
Başka kontrol olmayacak ise; kafanız karışmasın. Bu şekilde
yapabilirisniz. 12sn. çalış, 3sa. bekle:
'Hiç bir garanti veremem ama:
'....
'Port tanımlamaları vs ayarlarını yapıldığını var sayarsak

n = 1

WHILE n = 1 ' sonsuz döngü
   PORTx.y = 1 ' Enerji verildiğinde 12 sn çalışıyor, pin HIGH seviyede.

   FOR a = 1 TO 12
       DelayMs 1000    ' 12 x 1000ms = 12.000ms. -> 12sa.
   NEXT

   PORTx.y = 0 ' 12sn. sonrasında 3sa. bekliyor, pin LOWseviyede.

   FOR a = 1 TO 108
        FOR b = 1 TO 10
            FOR c = 1 TO 10 
                 DelayMs 1000
            NEXT
        NEXT
   NEXT
WEND

END
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"

mc_307

Alıntı yapılan: mehmet - 17 Mayıs 2015, 18:25:34
Başka kontrol olmayacak ise; kafanız karışmasın. Bu şekilde
yapabilirisniz. 12sn. çalış, 3sa. bekle:
'Hiç bir garanti veremem ama:
'....
'Port tanımlamaları vs ayarlarını yapıldığını var sayarsak

n = 1

WHILE n = 1
   FOR a = 1 TO 12
       DelayMs 1000
   NEXT

   PORTx.y = 1

   FOR a = 1 TO 108
        FOR b = 1 TO 10
            FOR c = 1 TO 10 
                 DelayMs 1000
            NEXT
        NEXT
   NEXT

   PORTx.y = 1
WEND

Mehmet hocam ,
Devreye elektrik verilince 12 saniye calışcak durcak ve 3 saat bekliycek. Sonra tekrar bastan devam etcek yani 12 sn calis 3 saat bekle.
Bu 3 saat ve en önemlisi 12 sn bölümü neresi acaba. Oralarda degisiklige gidebilmek icin soruyorum.
Direnc.net bulunan en ucu mcu neyse onla yapcam. Mcunun herhangi bir özelliği olması lazımmı.

mehmet

Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"

mc_307

hocam cepte aceyip sayılar gözüküyordu :D, evde pcye gelince normal prtonada olan şeyler gözüktü. şimdi iyi.
sizin verdiğiniz kodu şöyle yapmaya çalıştım proton n=1 değerine hata veriyor analamdım.
Device 16F88
Xtal 4
TRISA=0
basla:
n = 1

While n = 1
   For a = 1 To 12
       DelayMS 1000
   Next

   PORTA.0 = 1

   For a = 1 To 108
        For b = 1 To 10
            For c = 1 To 10
                 DelayMS 1000
            Next
        Next
   Next

   PORTA.0 = 1
Wend
GoTo basla

mehmet

#27
n, a, b ve c için değişken tanımlaması yapmanız gerekli...

Ayrıca Proton ve Basic konusunda haddimi baya aştım... :-[
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"

mc_307

hocam kusura bakmayın rahatsızlığım için.
şimdi
dim n as byte
n=1
diyorum tris ten sonra
yine burda
dim a as byte
a=?

gibi bu değişkenler olayınına da anlmadım . yani bu harflere kafama göre sayı yazmıyacam heralde? bu dim ve for next olayının türkçesi nedir aslen. bulduğum örneklerde dim sayi as byte yazıyor genelde, bu komutların ne anlama geldiğini ve nerelerde kullaanabileceğimizi bir türlü anlayamadım. protonla ilgili videoda yok türkçe anlatımlı :(