Arduino Multitask ?

gumush

Uye
Katılım
13 Şub 2014
Mesajlar
183
Tepkime puanı
111
Yaş
47
Aklimda bir proje var. Birden cok unite kablosuz olarak acc,gyro ve mag bilgilerini alip merkeze iletecek.
Merkez ve uniteler arasindaki zaman farkini senkronize etmek icin TPSN kullanacagim. Bu senkronizasyon isi ilk basta yapilacak. Simdi aklima takilan konu su , unite veriyi gondermeye baslayacak bu durumda gonderirken merkezden gelen komutlarida degerlendirmesi gerekebilir. Ancak bunun icin while benzeri bir dongu ile serial'i dinleme koymak toplamdaki islemci cycle'ini arttiracagi icin alternatif bir oneri bekliyorum. Board uzerine erisim ile bu interrupt ve timer mantigi kullanilarak cozulebiliyordu ancak kablosuzda bu imkan yok. Birde tabii bu bilgiyi alinda sensorden gelen bilgileri alma isinde de gecikmeler olabilir mi diye dusunuyorum.

Kablosuz uzerinde bir DAC olsa olabilir aslinda interrup girisini high yapacak sinyali kablosuz uzerinden gonderebilirsem bu bir alternatif olabilir.


Fikirlerniz icin simdiden tesekkur ederim.
 
Arduino Multitask ?

Ben olayı tam kavrayamadım ancak eşzanalı işlemler için interrupt kullanılması uygun olur. Atmel işlemcilerde üç temel interrupt var (Reset'i saymıyorum).
Kullanılan işlemciye göre bir ya da daha fazla uçta interrupt işlevi olabiliyor. Ya da bütün portlar için geçerli Pin Change Interrupt var. Ayrıca Tİmer interruptları var ki bunlar ya Timer Overflow ya da Timer Compare şeklinde kullanılabiliyorlar.
Timer kullananlar belirli aralıklarla bir işlemi yapmak için ideal. Diğerleri ise dışarıdan gelecek bir uyarı ile işlem yapmak için ideal.
Tüm bu interruptların kullanım ayrıntıları ile ilgili bilgi verebilirim ama başta tanımlanan görevi yeterince kavrayamadım şimdilik.
 
Arduino Multitask ?

İşin interrupt kısmını pek bilemiyorum ama bahsettiğiniz modüller genellikle I2C veriyolu üzerinden konuştuğu için veriyi sizin(arduino'nun) aktif olarak çekmeniz gerekecek. Burada interrupt kullanmak, aktif veri çekilmesi gerekeceği için çok uygun olmaz gibi geliyor. Ama I2C'nin minimum 100Kbit/s değerindeki hızı sayesinde döngüyü, görev paylaşımı yapmak için parçalara bölebileceğinizi düşünüyorum. I2C'den kaynaklı olarak değil ama her döngüde yapılan işlem sayısının artmasından kaynaklı(loop un daha uzun sürmesi) gecikmeler olacaktır. Yazdıklarınızdan, işi mümkün olduğunca basit tutarak loop içinde halletmek daha uygun olacak gibime geliyor.
 
Arduino Multitask ?

Yanitlar icin tesekkur ederim. Aslinda arduino icinde yazilmis bir rtos buldum. Bunda benzer seyleri yapabilecegimi dusnuyorum ama performansi konusunda fikrim yok. Deneyimledigim zaman tekrar paylasacagim.

Sorunumuda daha net ve anlasilir sekilde yazmaya calisacagim.