Picproje Elektronik Sitesi

DERLEYİCİLER => CCS C => Konuyu başlatan: yusuffyk - 31 Temmuz 2012, 00:09:36

Başlık: pic ile aynı anda iki işlem
Gönderen: yusuffyk - 31 Temmuz 2012, 00:09:36
arkadaşlar picte aynı anda iki işlemi nasıl yaptırabiliriz?
örneğin iki buton var ve bu iki buton iki ledi kontrol ediyor ve ben iki butona aynı anda bastığımda ikisininde yanmasını istiyorum,
klasik if ile veya switch case ile yapılınca malumunuz üzre çalışmıyor, bunun için kesme mi eklememiz gerekiyor, bu konuyu araştırdım ama pek yararlı döküman bulamadım,
veya başka bir çözüm yolu var mıdır?
soruda iki buton iki led dedim ama başlangıç olarak böyle olacak, kendimi geliştirmek için başladığım nokta bu, aynı anda birden fazla işlem yaptırtmak istediğim için bu soruyu soruyorum.
şimdiden teşekkürler
Başlık: Ynt: pic ile aynı anda iki işlem
Gönderen: influx - 31 Temmuz 2012, 00:20:12
Aslında if ile yapabilirsin ama if döngüsünde programı bekletirsen yada sonsuz döngüye falan sokarsan olmaz durum böyle ise kesme kullanarak yapacaksın, timer kesmeside olur, rb0... kesmelerinide kullanabilirsin.
Başlık: Ynt: pic ile aynı anda iki işlem
Gönderen: yusuffyk - 31 Temmuz 2012, 00:24:25
hocam ben ilerisini düşünüyorum şimdi basit bir uygulamada yapılabilir if ile ama ileride sadece buton değilde işin içine farklı şeyler girdiğinde; pot olur, lcd olur olur yani; kullanabileceğim en mantıklı olay kesme gibi geldi bana ama işte örnek bi koda ve kaynağa ihtiyacım var aradım aradım elle tutulur bir döküman bulamadım, basit bir kod yazar mısın rica etsem ?
Başlık: Ynt: pic ile aynı anda iki işlem
Gönderen: alper.y - 31 Temmuz 2012, 00:30:08
Aynı anda birden fazla işlem yaptırmanız kelimenin tam anlamıyla mümkün değildir. Ama bilgisayarınızdaki işletim sistemi gibi aynı anda işlem yapabiliyor izlenimi verebilirsiniz. Şu an yeni nesil bilgisayarlarda olmasa da tek çekirdekli işlemci (PIC'te olduğu gibi) kullanan bilgisayarlarda da aynı anda birden fazla program çalıştırabiliyoruz. Ama aslında tek bir anda sadece bir programın kodu çalışıyor. Her program az az çalışarak genel görünüş olarak kullanıcıya hepsi çalışıyormuş izlenimi veriyor.

Klasik if ile niye çözemediğinizi anlamadım.

while(1){

if(buton1) led1yak(); else led1sondur();
if(buton2) led2yak(); else led2sondur();

}

şeklindeki yapının işe yaraması lazım.
Başlık: Ynt: pic ile aynı anda iki işlem
Gönderen: influx - 31 Temmuz 2012, 00:31:59
aşağıdaki linkte kesme leri güzelce anlatmış, incele istersen. eve gidincede örnek bişeyler gönderirim. kabaca açıklık getireyim, verdiğin örnek üzerinden gidelim, bir butona basıldığında bir led yanacak başka bir butona basınca başka bir led, bir timer o kesmesi oluştur ve 50ms de bir keme oluşsun ve timer0 kesmesinin içinede butonlara basıldığında yapılması gereken işlemleri yaz, yada rb4 ve rb5 kesmelerini kullan butona bastığında keme oluşsun ve kesmenin içine yapılacak kodları yaz. umarım anlatabilmişimdir.

http://www.teknobakis.com/ccs-c-ile-pic-programlama-pic-interrupts-kesmeler (http://www.teknobakis.com/ccs-c-ile-pic-programlama-pic-interrupts-kesmeler)
Başlık: Ynt: pic ile aynı anda iki işlem
Gönderen: serdararikan - 31 Temmuz 2012, 00:36:26
aynı an kavramı yanlış.aynı anda sadece tek işlem yapabilirsin.ama timer kesmelerini kullanarak kesik kesik olacak şekilde çok sayıda işlem yapabilirsin. bakınız multitasking
Başlık: Ynt: pic ile aynı anda iki işlem
Gönderen: gökhan_ - 31 Temmuz 2012, 00:42:58
bende yeniyim ancak iç içe iki if döngüsü kursan olmazmı?
Başlık: Ynt: pic ile aynı anda iki işlem
Gönderen: yusuffyk - 31 Temmuz 2012, 00:44:42
teşekkürler influx hocam, inceliyorum ayrıca ekleyeceğin kodlarıda bekliyorum :)

serdar hocam niyetimiz aynı, anlatmak istediğim şeyi anladığınızı sanıyorum, uzunca belirtmek istemedim anlaşılır, basit bir dilde ifade ettim.

gökhan hocam dediğiniz olabilir ama bu geliştirilebilir birşey olacağı için, ilerisinide düşünüyorum ben, zaten belirtmiştim iki buton iki ledle başlayıp belki bir pot belki lcd belki başka şeyler ekleyip yoluma öyle devam edeceğim için if kullanımının dışına çıkmaya çalışıyorum.
Başlık: Ynt: pic ile aynı anda iki işlem
Gönderen: influx - 31 Temmuz 2012, 00:49:47
Alıntı yapılan: yktronik - 31 Temmuz 2012, 00:44:42
teşekkürler hocam, inceliyorum ayrıca ekleyeceğin kodlarıda bekliyorum :)

hocam niyetimiz aynı, anlatmak istediğim şeyi anladığınızı sanıyorum, uzunca belirtmek istemedim anlaşılır, basit bir dilde ifade ettim.


Sana katılıyorum, zaten birazcık programlama ile uğraşmıs herkes programın bir döngü şeklinde yukarıdan aşaıya doğru herbir komutu işleyerek gideceğini bilir ve sana cvp yazacak arkadaslarda derdini anlayıp cvp yazacaklardır . Uzun lafın kısası , "lafın uzunu aptala anlatılır".
Başlık: Ynt: pic ile aynı anda iki işlem
Gönderen: serdararikan - 31 Temmuz 2012, 01:10:17
olaya yeni başlıyorsan if blokları ile birden falz kontrolü sıra ile yapabilirsin.ilerleyen aşamalarda bunun sana yetmediğini farkedeceksin.
Başlık: Ynt: pic ile aynı anda iki işlem
Gönderen: berat23 - 31 Temmuz 2012, 01:59:25
yapmaya çalıştığın şeyi iç içe if bloğu halleder. komutların işlenme süresinde butonlara aynı anda basman mümkün değil.

aynı anda birden fazla işlem yapmak,bu anlattığın gibi birşey değil.onu yapmak içinde çok kabaca timer kurup,bitene kadar birini sonra diğerini yapıyorsun.bu en ilkel formu.senin isteğin iş bu değil.paralel programming ayrı bir derya,led yakıp söndürmek gibi değil.
Başlık: Ynt: pic ile aynı anda iki işlem
Gönderen: atioky_216 - 31 Temmuz 2012, 03:43:03
Alıntı yapılan: yktronik - 31 Temmuz 2012, 00:09:36
arkadaşlar picte aynı anda iki işlemi nasıl yaptırabiliriz?
örneğin iki buton var ve bu iki buton iki ledi kontrol ediyor ve ben iki butona aynı anda bastığımda ikisininde yanmasını istiyorum,
klasik if ile veya switch case ile yapılınca malumunuz üzre çalışmıyor, bunun için kesme mi eklememiz gerekiyor, bu konuyu araştırdım ama pek yararlı döküman bulamadım,
veya başka bir çözüm yolu var mıdır?
soruda iki buton iki led dedim ama başlangıç olarak böyle olacak, kendimi geliştirmek için başladığım nokta bu, aynı anda birden fazla işlem yaptırtmak istediğim için bu soruyu soruyorum.
şimdiden teşekkürler

Ben yanlış mı anladım soruyu yoksa siz mi çok karışık düşünüyorsunuz bilemiyorum ama bit bazında düşünürseniz, mesela Port 1 diyelim sekiz tane girişimiz var bunlar giriş olsun Port2 sekiz çıkışımız olsun,

Gerkli giriş-çıkış tanımlamasından sonra hiç kesme kullanmaya gerek kalmadan (yada kesmeli de olur farketmez)



//Yanıp sonen led uygulaması olsun
P2=0x00;yada 0b00000000
while (1){
if (   (P1 & BIT1 | P1&BIT2) && 0x03  ) {

    P2= BIT1+BIT2; yada mesela 0x03
    bekle(bilmem ne kadar sure);   }

}
Başlık: Ynt: pic ile aynı anda iki işlem
Gönderen: fatih6761 - 31 Temmuz 2012, 07:41:49
İleriyi düşünüyorsanız CCS nin built-in RTOS u var.Örnekler klasöründe RTOS uygulamalarını inceleyebilirsiniz...
Başlık: Ynt: pic ile aynı anda iki işlem
Gönderen: influx - 31 Temmuz 2012, 09:09:53
Tamam "yktronik" in sorduğu soruyu değiştirelim konuya açıklık gelsin,

SORU:
Benim bir lcdim var ve bir uc, yapmak istediğim 2 bilinmeyenli bir denklemi çözmek ve x,y,sonuc degerlerinide lcd de göstermek ayrıca
1.butona basıldığında x değerini 1 artırmak
2.butona basıldığında x degerini 1 azaltmak
3.butona basıldığında y değerini 1 artırmak
4.butona basıldığında y degerini 1 azaltmak
fakat program herzaman butonları kontrol edip boşuna zaman kaybetmesin ayrıca sonuc değişmedende lcd.c kütüphanesini koşmasın,bunu nasıl yapabilirim?

CEVAP:
Kesme kullanarak yapabilirsin.
Başlık: Ynt: pic ile aynı anda iki işlem
Gönderen: Erol YILMAZ - 31 Temmuz 2012, 09:28:37
Alıntı yapılan: yktronik - 31 Temmuz 2012, 00:24:25
hocam ben ilerisini düşünüyorum şimdi basit bir uygulamada yapılabilir if ile ama ileride sadece buton değilde işin içine farklı şeyler girdiğinde; pot olur, lcd olur olur yani; kullanabileceğim en mantıklı olay kesme gibi geldi bana ama işte örnek bi koda ve kaynağa ihtiyacım var aradım aradım elle tutulur bir döküman bulamadım, basit bir kod yazar mısın rica etsem ?

Öncelikle terminolojiye geçmiş doğru kelimeyi yakalamak lazım...
Bahsettiğin şey "Multitasking"  yani çok görevlilik diye geçiyor,

İlk zamanlarda yaptığım projelerde bu problemi birçok farklı şekilde yaşadım,

Bu konu ile ilgili olarak çok fazla kaynak old. düşünüyorum:

http://www.eetimes.com/design/automotive-design/4006764/Embedded-multitasking-with-small-MCUs-Part-1--State-Machine-Constructs (http://www.eetimes.com/design/automotive-design/4006764/Embedded-multitasking-with-small-MCUs-Part-1--State-Machine-Constructs)
http://www.eetimes.com/design/automotive-design/4006771/Embedded-multitasking-with-small-MCUs-Part-2--Cooperative-vs-pre-emptive (http://www.eetimes.com/design/automotive-design/4006771/Embedded-multitasking-with-small-MCUs-Part-2--Cooperative-vs-pre-emptive)

Özellikle Part-1 kısmı senin için çok anlamlı olacaktır.
STATE MACHINE yapısını kullandığında problemlerinin büyük kısmını rahatlıkla çözeceğini söyleyebilirim.

Embedded Multitasking : Keith Curtis
http://www.4shared.com/office/rExIUNwQ/Embedded_Multitasking_with_Sma.html (http://www.4shared.com/office/rExIUNwQ/Embedded_Multitasking_with_Sma.html)
Başlık: Ynt: pic ile aynı anda iki işlem
Gönderen: atioky_216 - 31 Temmuz 2012, 16:22:05
Alıntı yapılan: Allegro - 31 Temmuz 2012, 09:28:37
Öncelikle terminolojiye geçmiş doğru kelimeyi yakalamak lazım...
Bahsettiğin şey "Multitasking"  yani çok görevlilik diye geçiyor,

İlk zamanlarda yaptığım projelerde bu problemi birçok farklı şekilde yaşadım,

Bu konu ile ilgili olarak çok fazla kaynak old. düşünüyorum:

http://www.eetimes.com/design/automotive-design/4006764/Embedded-multitasking-with-small-MCUs-Part-1--State-Machine-Constructs (http://www.eetimes.com/design/automotive-design/4006764/Embedded-multitasking-with-small-MCUs-Part-1--State-Machine-Constructs)
http://www.eetimes.com/design/automotive-design/4006771/Embedded-multitasking-with-small-MCUs-Part-2--Cooperative-vs-pre-emptive (http://www.eetimes.com/design/automotive-design/4006771/Embedded-multitasking-with-small-MCUs-Part-2--Cooperative-vs-pre-emptive)

Özellikle Part-1 kısmı senin için çok anlamlı olacaktır.
STATE MACHINE yapısını kullandığında problemlerinin büyük kısmını rahatlıkla çözeceğini söyleyebilirim.

Embedded Multitasking : Keith Curtis
http://www.4shared.com/office/rExIUNwQ/Embedded_Multitasking_with_Sma.html (http://www.4shared.com/office/rExIUNwQ/Embedded_Multitasking_with_Sma.html)

Bu kadarcık iş için multitaskinge gerek var mı?
Bir kaç iş için C yazılımda (PC) kullanmışlığım vardı , bu iş için MPI (message parsing interface) kütüphanesi ile bazı döngüleri olsun işlemleri olsun çekirdeklere paylaştırıyordum. Arastırdığım kadarı ile çok cekirdekli ARM benzeri yapılar yada TI nın  telefonlarda kullanılan çok çekirdekli  OMAP benzeri işlemciler için multitasking programlamada buna benzer yapı ve kütüphaneler kullanılmakta..

Başlık: Ynt: pic ile aynı anda iki işlem
Gönderen: Erol YILMAZ - 31 Temmuz 2012, 16:52:37
Çok görevli uygulamaları geliştirmek için bir stratejiye ihtiyaç var. (Multitasking)

Sanırım başka şansı da yok arkadaşın...
Başlık: Ynt: pic ile aynı anda iki işlem
Gönderen: Eren Eraslan - 01 Ağustos 2012, 01:54:14
RTOS olayını araştır hocam .. Bu iş için ideal.. ve ccs de filan örnek çok kod var
Başlık: Ynt: pic ile aynı anda iki işlem
Gönderen: yusuffyk - 01 Ağustos 2012, 11:09:33
öncelikle yorum yapan herkese teşekkürler, de derdimi anlatamamışım ona yanıyorum
birincisi tamam aynı anda çalışmadığını ama küçük aralıklarla çalışarak gözde böyle bi algı oluştuğunu bende biliyorum, daaaa bunu söyleyince ne değişti onu anlamıyorum, bi ısrarla tekrar ediyorsunuz. tamam bizde biliyoruz, ama bi şekilde anlatımı yalınlaştırmak lazım, o an aklıma böyle anlatmak geldi.
ikincisi if ile yapmak istemediğimi iki kere söyledim, ben iki ledle başlayıp başka şeyler yapmak istiyorum dedim hala if diyorsunuz,
multitasking, rtos, interrupt bunları anaahtar kelime olarak alıp araştıracağım,
bu konularda elinde örnek kod olanlar varsa paylaşırsa da sevinirim.
başka tavsiye edeceğiniz birşey varsa memnuniyetle dinlerim, tavsiyelere açığım
tekrardan yardımcı olan herkese teşekkürler.
edit: ccs c ile programlamaya çalışıyorum, unutmadan ekleyeyim
Başlık: Ynt: pic ile aynı anda iki işlem
Gönderen: yamak - 01 Ağustos 2012, 11:12:15
FPGA kullan.
Başlık: Ynt: pic ile aynı anda iki işlem
Gönderen: cinque - 01 Ağustos 2012, 12:58:00
if e neden karşısın?  :) İlerde düşündüğün prosesler için if in içine sadece on off kontrolün yanı sıra aralık kontrolü yada state kontrolü yapılabileceğini bildiğini düşünüyorum. Çok büyük projelerde paralel işlem fazla kullanacaksan farklı yapılar kullanman gerekir zaten(cpld fpga gibi). bunun haricinde PIC i geçtim yüksek hızlı mcular mevcut istedğin paralel çalışma gibi gösterme olayını rtos kullanarak yada interruptları kendin yazarak yapabilirsin. Ama duymak istediğin cevap tahminen şu; tek çekirdekle tek işlem yapılır sadece. Sen 2 işlemi aynı anda PICe yaptıramazsın.   
Başlık: Ynt: pic ile aynı anda iki işlem
Gönderen: yusuffyk - 01 Ağustos 2012, 18:18:53
FPGAyı araştırıyorum
yaw tamam arkadaş, eyvallah sağolasınız da aynı anda olmuyor ben de biliyorum, anlatamadık derdimizi
en yalın şekilde son kez açıklamak istiyorum.

ana program döngüsü düşün
bu program döngüsü işleniyor,
sıcaklık okunsun, lcd de tarih saat göstersin,
sonra iki buton ve bir de pot olsun,
butonlara basıldığında program devam ediyor ama butona basılınca ledi yakabilir, motor çalıştırabilir, birşey yapıyor yani
diğer butonda aynı şekilde
potla oynayıncada ana programla beraber başka bir işlem yapabilir, ledin şiddetini ayarlar, motorun devir hızını ayarlar falan

burdaki amaç ana program çalışırken ekstra işlemler yapıldığında programın kesintiye uğramadan devam etmesi
ve şimdi lütfen if demeyin bana :D
Başlık: Ynt: pic ile aynı anda iki işlem
Gönderen: coco - 01 Ağustos 2012, 18:37:43
picin interrupt pinlerini kullanilarak yapilabilr belki.
Başlık: Ynt: pic ile aynı anda iki işlem
Gönderen: atioky_216 - 01 Ağustos 2012, 18:52:47
Alıntı yapılan: yktronik - 01 Ağustos 2012, 18:18:53
FPGAyı araştırıyorum
yaw tamam arkadaş, eyvallah sağolasınız da aynı anda olmuyor ben de biliyorum, anlatamadık derdimizi
en yalın şekilde son kez açıklamak istiyorum.

ana program döngüsü düşün
bu program döngüsü işleniyor,
sıcaklık okunsun, lcd de tarih saat göstersin,
sonra iki buton ve bir de pot olsun,
butonlara basıldığında program devam ediyor ama butona basılınca ledi yakabilir, motor çalıştırabilir, birşey yapıyor yani
diğer butonda aynı şekilde
potla oynayıncada ana programla beraber başka bir işlem yapabilir, ledin şiddetini ayarlar, motorun devir hızını ayarlar falan

burdaki amaç ana program çalışırken ekstra işlemler yapıldığında programın kesintiye uğramadan devam etmesi
ve şimdi lütfen if demeyin bana :D

O zaman iş multitasking işi yanı ekrana 50 ms ile bastırıp bekleme süresi koymadan o bekleme suresinde bazı hesaplamalar yaptırılır vs.. Bunun için bol bol algoritma denemesi gerekiyor gibime geliyor ve bu iş te if"lerden geçiyor :D onları küçümsememeli. Yani bunu yapmak için mesela C ile çalısıyorsan extra kütüphanesinden bilmem nesine araştırmak yerine yaklaşım mantığını kapmalı..
Başlık: Ynt: pic ile aynı anda iki işlem
Gönderen: drmp - 01 Ağustos 2012, 18:57:44
eğer if kullanmamak istiyorsanız basit bir kod işinizi çözecektir
portx,y ;input port
porta,b;output port
c 'ye göre kendiniz uyarlayabilirsiniz

port a,b=port x,y

kolay gelsin
Başlık: Ynt: pic ile aynı anda iki işlem
Gönderen: berat23 - 02 Ağustos 2012, 02:26:09
Alıntı yapılan: yktronik - 01 Ağustos 2012, 11:09:33
öncelikle yorum yapan herkese teşekkürler, de derdimi anlatamamışım ona yanıyorum
birincisi tamam aynı anda çalışmadığını ama küçük aralıklarla çalışarak gözde böyle bi algı oluştuğunu bende biliyorum, daaaa bunu söyleyince ne değişti onu anlamıyorum, bi ısrarla tekrar ediyorsunuz. tamam bizde biliyoruz, ama bi şekilde anlatımı yalınlaştırmak lazım, o an aklıma böyle anlatmak geldi.
ikincisi if ile yapmak istemediğimi iki kere söyledim, ben iki ledle başlayıp başka şeyler yapmak istiyorum dedim hala if diyorsunuz,
multitasking, rtos, interrupt bunları anaahtar kelime olarak alıp araştıracağım,
bu konularda elinde örnek kod olanlar varsa paylaşırsa da sevinirim.
başka tavsiye edeceğiniz birşey varsa memnuniyetle dinlerim, tavsiyelere açığım
tekrardan yardımcı olan herkese teşekkürler.
edit: ccs c ile programlamaya çalışıyorum, unutmadan ekleyeyim

bence sen derdini tanımlayamamışsın.

tek kod çalıştıran çekirdek bulunan işlemcilerde ne yaparsan yap nihayetinde aynı anda iki işlem yapamazsın,multitask burda yazılımda bitiyor.zaten multitasking de küçük aralıkla çalışıp,göze algı vermek gibi,if ten farkı yok. olurda birden fazla çekirdek olursa iş o zaman anlamlı oluyor,paralel progamming orda başlıyor. verdiğin örnekte if ile olur,yine multitaskinge gerek yok. zaten başka alternatifin yok,verdiğin örnekler yanlış.

interrupt bu derde deva değil.interrupt demek ilaç içmek için sürekli saati kontrol etmek yerine alarm kurup yatmak demek.bu sayede saati gelince uyarılıyorsun,o süreçte istediğini yap. doğrudan amacı paralel kod çalıştırmak değil.

mesela ilk aklıma gelen örnek dma olmadan sinyal işlemek.mikrofondan ses belirli aralıklarla örneklenecek,o aralıklarda diyelim mp3 olarak kodlanıp,biryere aktarılacak/kaydedilecek. bu işte adc den gelen veri geldiği zaman ramde saklanacak,diğer veri gelme süresinde ise encode edilecek,sonra yazılacak.bu biraz gerçek zamanlı oldu ama kabaca anlatır. veya bilgisayar gibi düşün,mp3 çalarken internette geziyorsun. işletim sistemi hangi kodun ne zaman ne kadar çalışacağını belirliyor.mesela işlemler aksadığı zaman ses kesiliyor,kilitleniyor.bu da işin zaman kısmı,neyse.

yani senin aslında sormak istediğin çok basit birşey değil.

fpga ise konu ile alakası olmayan birşey,boşuna bakma.fpga paralel iş yapmaz,işe uygun donanım tasarlar.bahsi geçen sıralı kod çalıştırma ile alakası olmayan birşey.
Başlık: Ynt: pic ile aynı anda iki işlem
Gönderen: Erol YILMAZ - 02 Ağustos 2012, 10:04:16
Alıntı yapılan: yktronik - 01 Ağustos 2012, 18:18:53

ana program döngüsü düşün
bu program döngüsü işleniyor,
sıcaklık okunsun, lcd de tarih saat göstersin,
sonra iki buton ve bir de pot olsun,
butonlara basıldığında program devam ediyor ama butona basılınca ledi yakabilir, motor çalıştırabilir, birşey yapıyor yani
diğer butonda aynı şekilde
potla oynayıncada ana programla beraber başka bir işlem yapabilir, ledin şiddetini ayarlar, motorun devir hızını ayarlar falan

Aynı şeyleri tekrarlayıp durmadan önce cevapları iyi oku.

Sorunu tekrarlamana karşılık bende cevabımı yineliyorum:

Multitasking ne demek? Düşündün mü ?

Multitasking konusunu araştır öncelikle...

Bunun başka çözümü yok.

Yada daha basit  PLC ler nasıl çalışıyor ? Benim için çok faydalı olmuştu :)
Başlık: Ynt: pic ile aynı anda iki işlem
Gönderen: Maxim - 02 Ağustos 2012, 12:34:43
Alıntı yapılan: yktronik - 01 Ağustos 2012, 18:18:53
FPGAyı araştırıyorum
yaw tamam arkadaş, eyvallah sağolasınız da aynı anda olmuyor ben de biliyorum, anlatamadık derdimizi
en yalın şekilde son kez açıklamak istiyorum.

ana program döngüsü düşün
bu program döngüsü işleniyor,
sıcaklık okunsun, lcd de tarih saat göstersin,
sonra iki buton ve bir de pot olsun,
butonlara basıldığında program devam ediyor ama butona basılınca ledi yakabilir, motor çalıştırabilir, birşey yapıyor yani
diğer butonda aynı şekilde
potla oynayıncada ana programla beraber başka bir işlem yapabilir, ledin şiddetini ayarlar, motorun devir hızını ayarlar falan

burdaki amaç ana program çalışırken ekstra işlemler yapıldığında programın kesintiye uğramadan devam etmesi
ve şimdi lütfen if demeyin bana :D

sizin yapmanız gereken tek şey INTERRUPT kullanmak başka birşey değil.
yukarıdaki verdiğiniz örneğe bakalım mesela
normal program işliyor
ama arkada bir tane buton ve 1 adc girişi var değilmi ?
tamam işte sizin kullanmanız gereken şey
mesela PIC18F serisi bir işlemci için
1- portb.0 girişindeki INT0 interruptı buton girişi için
2-adc interruptı, analog okuma yapmak için
bu kadar...
program aksamadan yürür.


neden diğer arkadaşlar ile anlaşmazlık var ?
çünkü "AYNI ANDA" dedinmi işler değişir
gerçekten aynı anda olmaz
ama interrupt kullanınca ana porgramda çok çok acayip bir zamanlama hesaplama yapılmıyorsa sorun çıkmaz
saat veya lcd ye bilgi göndermek , led yakmak falan sorunsuz devam eder.
Başlık: Ynt: pic ile aynı anda iki işlem
Gönderen: coco - 02 Ağustos 2012, 13:07:26
bende interrupt yazmıştım ama sizden başka kimse nedemek istediğimi anlamamış :)
Başlık: Ynt: pic ile aynı anda iki işlem
Gönderen: z - 02 Ağustos 2012, 13:42:04
Bende çoklu işleri interrupt rutini içinde yapıyorum. Timer int ve state machine mantığı ile pek çok işlem paralel yürüyor.
Zaten geçmişte de böyle yapılıyordu. Kodlamanın ve hata oluştuğunda bulmanın ne kadar zor olduğu bilindiği için multitasking diye bir şey icad edildi.

Multitasking'i yürüten çekirdek kodların ilkel benzerlerini zaten timer + state machine mantığında kendimiz yazmak durumunda kalıyoruz.

Başlık: Ynt: pic ile aynı anda iki işlem
Gönderen: FEHMİ_ASM - 02 Ağustos 2012, 18:17:01
   Sanırım sorun çözülmüş. Ben de hazır konu kapanmadan ve yeri gelmişken sorayım.

   Örneğin iki fonksiyonumuz var, ikisinde de butona bağlı led kontrolü olsun. Zamanlama için hiçbirşey söylemeyeceğim. Şimdi, her iki buton kontrolünü "gerçekten aynı anda" (birbirinden bağımlı veya bağımsız) yapabileceğimiz bir işlemci, denetleyici,yapı (tabii mikrokontrolör olarak) var mı? Çift veya daha fazla çekirdek denen icad bu gereksinimden mi türedi yoksa?  Eğer öyle ise 10 fonksiyondan oluşan bir programı çalıştırabilmek için on çekirdekli bir yapı mı kullanmak lazım? Yoksa FPGA ile mi yapmak mümkündü/gerekirdi?

   Bunu sormamdaki amaç, aslında hız değil, öngörüyorum ki -- algoritmanın kısalması ve sadeleşmesi.  Yoksa, zamanlama belirtmediğim (aslında çok da önemsemediğim için sanırım) benzer hedefime yine Multitasking ile mi erişebilirim?
Başlık: Ynt: pic ile aynı anda iki işlem
Gönderen: Tagli - 02 Ağustos 2012, 19:02:59
Konuyu takip etmedim, sadece FEHMİ_ASM'nin son sorusuna cevaben yazıyorum:

Çoğunlukla ihtiyacımız olan şey "gerçekten aynı anda" yapmak değildir. Ama istenilen tam olarak buysa, evet, klasik tek çekirdekli işlemcilerle bu mümkün değil. Çok çekirdekli işlemciler bu ihtiyaçtan türemedi, amaç işlemci frekansını arttırmadan performansı arttırmak idi. Eğer daha hızlı işlemci yapacak teknolojin yoksa, veya bunun önünde başka engeller varsa, aynı işlemciden daha fazla adette kullanırsın.

Çok çekirdekli işlemciler algoritmayı kısaltmaz. Tam tersi, işletim sistemini yazanlar açısında işleri zorlaştırır. Son kullanıcı, daha doğrusu son programcı bu durumu pek farketmez. Uygulamasını yine eskisi gibi multithread olarak yazar. Sonuçta tek çekirdek de multithread yapabilir. Ama programcı daha yüksek performans alabilmek için uygulamanın işlemci çekirdeklerini nasıl kullanacağını belirleyebilir. Bu konuda deneyimim olmadığı için son dediğimden emin değilim.

Özetle, genelde işleri gerçekten aynı anda yapma ihtiyacımız olmaz. Ama yaklaşık olarak aynı anda yapmak istiyor fakat bunu yaparken klasik kodlamadan uzaklaşmak ve işleri zorlaştırmak istemiyorsak işletim sistemlerine yönelmeliyiz. Burada işin karmaşık tarafını işletim sistemini yazan adamlar halletmiş oluyor.

Öte yandan, multithread programlama, normal programlamada bulunmayan bazı incelikler içerir. Bunlara dikkat edilmezse, tekrarlanması ve bulunması zor sorunlar ortaya çıkar.
Başlık: Ynt: pic ile aynı anda iki işlem
Gönderen: fatih6761 - 03 Ağustos 2012, 14:48:03
Bende Tagli arkadaşımızın cevabına katkıda bulunayım.
Çok çekirdek, kullanıcıya hız açısında pozitif yansıyan bir durumdur.Ancak programcı tarafında hiçte öyle değildir.O iki çekirdeği ayrı ayrı yönetebilmek için bir kütüphane, kaynakları sıralı ve büyüğe saygı mantığıyla çalışan priority taban sistemi, işlemleri çekirdeklere bölme, çok çekirdek uyumlu schedular, bellek koruması ve ekstra onlarca exception handler lar, işlemci boşta zamanlayıcısı, çekirdek güç ilkesi gibi birçok sorunu vardır.Ama neticede hız artar mı? Bariz artar.Tabi birde mutiprocessing olursa işler iyicie karışır, virtual memory, mmu policy gibi daha da beter olaylar işin içine girer.Benim tavsiyem çok lazım olmadıkça FreeRTOS, ChibiOS, CircleOS veya uCLinux dan faydalanın.
(Not : üstte belirttiğim işlemleri olabildiğince donanım tabanın indirmeye çalışıyorlar e bağarıyorlar da.Böyle giderse işletim sistemi geliştiriciliği çok daha kolaylaşacak.Tabi bilgisayarlardaki OS lar ayrı bir dert.Bitmiyor Paging, IRQ, PIT, PIC vs.vs :) Burada PIC 16f84 gibi değil, Programmable Interrupt Controller oluyor.)
Başlık: Ynt: pic ile aynı anda iki işlem
Gönderen: htwoc - 08 Aralık 2017, 18:00:52
Benzer bir soru sormak istiyorum.
Uart bir sensörden sürekli olarak veri okuması yapacak
Okunan bu veri LCD ekrana butona basıldığı zaman yazdırılacak ve basılmadığı zaman en son kalan değer ekranda kalacak.
Aynı zamanda bir pot ile ledin parlaklığını ayarlamak istiyoruz.
Buradaki sorun şu; Butona basıldığında veya pot ile oynandığı zaman uart veri alımına devam etmeli. Yani kaybı olmadan bu işlemleri paralel olarak nasıl aynı anda yapabilirim.
Başlık: Ynt: pic ile aynı anda iki işlem
Gönderen: JOKERAS - 08 Aralık 2017, 20:01:12
Paralel işlem yapmak için Paralel işlemci gerekir.FPGA gibi.
Piyasada Kullanılan işlemcilerin hemen hemen bir çoğu Seri işlem yapan işlemcilerdir.


Yukarıda dediğinizi yapmak için Paralel işlemciye gerek yok.
Sıradan işlemcilerin yapabileceği işler onlar.
İşlemcilerin içleri Donanımla dolu,ayrıca İnterrupt denen olay da var.
O sebeple dediklerinizi yapmak zor değil.


Hatta ve hatta Donanımsız bile olur.Bahsettiğiniz işlemlerin hızları İşlemci hızı yanında
Kağnı arabası kalır.
Başlık: Ynt: pic ile aynı anda iki işlem
Gönderen: htwoc - 08 Aralık 2017, 20:37:35
Alıntı yapılan: JOKERAS - 08 Aralık 2017, 20:01:12
Paralel işlem yapmak için Paralel işlemci gerekir.FPGA gibi.
Piyasada Kullanılan işlemcilerin hemen hemen bir çoğu Seri işlem yapan işlemcilerdir.


Yukarıda dediğinizi yapmak için Paralel işlemciye gerek yok.
Sıradan işlemcilerin yapabileceği işler onlar.
İşlemcilerin içleri Donanımla dolu,ayrıca İnterrupt denen olay da var.
O sebeple dediklerinizi yapmak zor değil.


Hatta ve hatta Donanımsız bile olur.Bahsettiğiniz işlemlerin hızları İşlemci hızı yanında
Kağnı arabası kalır.

Cevap için saolun. İnterupt ile yaptığımızı düşünelim, ana programı kesiyorsunuz her halükarda bunu yapmak istemiyorum, interrupt kullanılması şart mı onu anlayamadım.
Başlık: Ynt: pic ile aynı anda iki işlem
Gönderen: JOKERAS - 09 Aralık 2017, 15:00:09
Şart değil!Yazılımsal olarak ta yapabilirsiniz.Ama bu sizi daha da yavaşlatır.


Sizin "Ana Programı kesiyorsunuz" dediğiniz şey zaten Pgm'ın parçalara bölünmüş halidir.
Sizin ana döngüye yazdığınız her kod parçası Pgm'ın bölünmesi demektir.