Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

iki işlemi aynı anda yapma

Başlatan einstain90, 02 Temmuz 2007, 14:22:04

einstain90

arkadaşlar 16f877 de iki microcip gibi ayrı ayrı işlemler yaptıra bilmem mümkünmü? mesela saat çalışırken aynı anda başka bir işlemi daha yapıcak
Her işte her zaman bir aksilik çıkar.Siz yeterki pes etmeyin...

cuneytsezmis1

timer0 veya timer1 veya timer2 yi ve kesmeleri kullanarak yapabilirsin.forumları incelersen bulabilirsin.kolay gelsin.

uzaylivolkan

Mikroişlemciler Yapıları nedeni ile aynı anda sadece bir iş yapabilirler. Ama Saat gibi işlemler İçin microişlemcilerin INTERRUPT (Kesme) dediğimiz özelliklerinden yararlanabilirsiniz. Size Timer INTERRUPT ile çalışan bir saat uygulaması gönderiyorum Kıristaliniz 4 mhz olacak

buda linkin

@ device INTRC_OSC_NOCLKOUT
CMCON   = 7
VRCON   = 0
'Program saat.bas
'işlevi 4 bit lcd 
  '      Device 16F84
Define LCD_DREG		PORTA
Define LCD_DBIT		0
Define LCD_RSREG	PORTa
Define LCD_RSBIT	4
Define LCD_EREG		PORTB
Define LCD_EBIT		3

Değişken
saat	 var   byte
dsaat	 var   byte
dakika	 var   byte
saniye	 var   byte
ticks	 var   byte
guncelle var   byte
'i		 var   byte
x	 var   byte
y	 var   byte
@		 device	   WDT_OFF
		 Pause	   100
		 saat=0
		 dakika=0
		 saniye=0
		 ticks=0
		 guncelle=1
		 OPTION_REG=$55
		 INTCON=$a0
		 
		 ON	INTERRUPT  Goto	tickint
trisb.4= 0
trisb.5= 0


'		 PORTB=0
'		 TRISB=%00011111
	ana_dongu:
			  if PORTA.7 = 1 Then dak_azalt
			  if PORTA.6 = 1 Then dak_arttir
	kontrol:
			if guncelle=1 Then
			Lcdout  $fe,1
			dsaat=saat
			if (saat // 12) =0 Then
			   dsaat =dsaat + 12
			 Endif
			 ' <  >
			 if saat < 12 Then
			  Lcdout dec2 dsaat ,":" , dec2 dakika,":",dec2 saniye, " AM"
			  else
			 Lcdout dec2 (dsaat - 12) ,":" , dec2 dakika,":",dec2 saniye, " PM"
			 Endif
			 guncelle = 0
			 Endif

'    if saniye =30 then
'	  Pot PORTB.0,255,X 
'    y= 58 - x 
'    endif
'   if saniye /30 > 0 and saniye /30  < 5 then
'	  Pot PORTB.0,255,X 
'    y= 58 - x 
'	Pause	   100
'Lcdout  $fe,1
'	 Lcdout "isi=: " ,#y
'  endif

			Goto ana_dongu
	dak_arttir:
			   dakika=dakika + 1
			   if dakika >=60 then
			    dakika =0
				saat=saat+1
			  if saat >= 24 then
			     saat=0
			  Endif
			 Endif
		Goto ark_sondur
   dak_azalt:			  	 	

      dakika=dakika - 1
			   if dakika >=60 then
			    dakika = 59
				saat=saat - 1
			  if saat >= 24 then
			     saat=23
			  Endif
	 Endif
ark_sondur:
	    For i = 1 to 25
		   pause 10
		 next i
		guncelle = 1
		Goto kontrol
		Disable
 tickint:

   ticks=ticks +1 
   if ticks < 61 then tiexit
 		 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
			 Endif
			guncelle=1
tiexit:
	INTCON.2=0
	resume
	End
saat.zip

einstain90

burada pause komutu yok 1 saniye nasıl ölçülüyor ben onu anlamadım yani kesme nedir kısaca anlata bilirmisin
Her işte her zaman bir aksilik çıkar.Siz yeterki pes etmeyin...

malpaslan1979

Haftalardır kafamı karıştıran soruya cevap buldum gibi. Ama bazı şeyleri netleştirmek istiyorum. Şimdi sizin yazdıklarınıza bakılırsa pic sadece standart basit ve sürekli tekrarlı işleri sırayla yapan bir eleman. Yani bir plc gibi birden fazla kaynaktan girdi yapıp bu girdilere göre çıkışlarında işlem yaptırabileceğimiz bir alet değil. Doğru anlamış mıyım? Peki birden fazla işlemi yaptıramanın hiç yolu yok mu? Yani birden fazla kaynaktan gelen datayı girişleri sıraylada olsa işleyemez miyiz? Bu benim için önemli çünkü otomasyon ile ilgili bir bölümden mezunum ve başlangıç olarak pic düşünüyordum ama vereceğiniz cevaba göre plc ye yönlenmek daha mantıklı olacak gibi.

Saygılarımla

Göktuğ

Cok hızlı calıstıgından cok kısa surelerde cok fazla işlem gercekleştirebilir. Ve sen aynı anda bir cok işlem yapılıyormus sanabilirsin.
Ayrıca PLC lerde de çeşitli firmaların mcu ları kullanılıyor.

Otomasyon mezunu isen zaten PLC lerden cok iyi anlaman gerekiyor. İkisini de ogrenebilirsin

CaFFeiNe

çift çekirdek olmayan bir sistemde iki iş aynı anda yapılmaz PLC lerdede aynı şey geçerli

PLC lerin bir programı baştan aşağı işletmeleri için geçen bir döngü süresi vardır 3-4ms gibi ve bu programının boyutuna göre değişir
şimdi PLC saniyede birkaç yüz kere programı işletip gerekli girişlere karşı programındaki mantığa göre gerekli çıkışları verdiği için sen aynı anda birçok işi yapıyor zannedersin (haliyle saniyede birkaçyüz kere olan birşeyi gözünle bakarak anlayamazsın)

pic ile (yada başka mcu ile) donanımını tasarlayıp programını yazabiliyorsan PLC lerden çok daha ucuza çok daha fazla iş yaptırabilirsin

PLC lerin amacı insanların donanım kısmı ile fazla uğraşmaması LADDER ile sadece kumanda devrelerini bilen kişilerin bile kullanabilmesi kolaylığı, standart kumanda devrelerinin yerini alması vs.dir.

MCU programlamak ile PLC kullanmak arasındaki fark
ASM ile program yazmak ile BASIC ile program yazmak arasındaki farka benzer

calicadnus

16f877 de hard pwm üreteci vardır.
ilgili registerler kurulduğu zaman programdan bağımsız çalışır.bu vesile ile pic aynı anda başka işlere koştururken pwm çıkışını kesintisiz verebilir.
başka bir hareket bilmiyorum.
saygılar.