Gönderen Konu: Garip Sorun  (Okunma sayısı 5825 defa)

Çevrimdışı Bartu Durak

  • Mezun olmuş OTOKON'cu
  • *
  • İleti: 2545
  • Çılgın atıyorum.
Garip Sorun
« : Nisan 07, 2015, 02:30:01 ÖÖ »
Birkaç dakika önce kulüpte çalışırken bugüne kadar karşılaştığım en garip yazılım sorunuyla karşılaştım. Amele çözümlerle hallettik ama birkaç farklı denemeyle sorunun kaynaklandığından şüphe ettiğim şeyi doğruladım. Bana göre saçmalık, tahmin de edemezdim öyle bir sorun çıkacağını.

Her neyse, belki bilenler yaşamışlar vardır ama ben internette hiçbir yerde karşılaşmadığım için forumda paylaşıyorum olayı.

Bir işlemi ardı ardına birden fazla kez yaptırmak için for döngüsü kullanıyorum (daha sonra while'ı da denedim, aynı bok). Döngüyü gerçekleştirmek için kullandığım değişken,

Kod: [Seç]
for(i = 0; i < 65535; i++)
{
...
}

yani burada i oluyor, 65535'ten daha büyük değerler aldığı zaman döngüye hiç girilmiyor, bu kısım atlanıyor. i'yi daha sonradan unsigned long tanımlasam da sorun çözülmedi. Belki standart bir derleyiciyle işler değişebilir ama Arduino'da durum bu. Saçmalık. :)

Çevrimdışı Mertcan Cibooğlu

  • Mezun olmuş OTOKON'cu
  • *
  • İleti: 883
Ynt: Garip Sorun
« Yanıtla #1 : Nisan 07, 2015, 03:45:43 ÖÖ »
Birkaç dakika önce kulüpte çalışırken bugüne kadar karşılaştığım en garip yazılım sorunuyla karşılaştım. Amele çözümlerle hallettik ama birkaç farklı denemeyle sorunun kaynaklandığından şüphe ettiğim şeyi doğruladım. Bana göre saçmalık, tahmin de edemezdim öyle bir sorun çıkacağını.

Her neyse, belki bilenler yaşamışlar vardır ama ben internette hiçbir yerde karşılaşmadığım için forumda paylaşıyorum olayı.

Bir işlemi ardı ardına birden fazla kez yaptırmak için for döngüsü kullanıyorum (daha sonra while'ı da denedim, aynı bok). Döngüyü gerçekleştirmek için kullandığım değişken,

Kod: [Seç]
for(i = 0; i < 65535; i++)
{
...
}

yani burada i oluyor, 65535'ten daha büyük değerler aldığı zaman döngüye hiç girilmiyor, bu kısım atlanıyor. i'yi daha sonradan unsigned long tanımlasam da sorun çözülmedi. Belki standart bir derleyiciyle işler değişebilir ama Arduino'da durum bu. Saçmalık. :)

internetteki online simülatörde yaptım bişi olmadı, yarın arduinoda denerim bence gene olmucak. unsigned long tanımlayıp baska bi yerde tekrar tanımladıysan felan belki ordan hata yapmışındır

son teknoloji robotlar yapacam :D

Çevrimdışı Bartu Durak

  • Mezun olmuş OTOKON'cu
  • *
  • İleti: 2545
  • Çılgın atıyorum.
Ynt: Garip Sorun
« Yanıtla #2 : Nisan 07, 2015, 03:58:01 ÖÖ »
Gerçek hayat simülasyona benzemez Mertcan. :D

Çevrimdışı İlker Kesen

  • Mezun olmuş OTOKON'cu
  • *
  • İleti: 1249
  • Boğduruyorum.
Ynt: Garip Sorun
« Yanıtla #3 : Nisan 07, 2015, 04:04:41 ÖÖ »
pow içinde pow olmuyor. Derleyici çok karmaşık bir işlem diyor.

Çevrimdışı Mertcan Cibooğlu

  • Mezun olmuş OTOKON'cu
  • *
  • İleti: 883
Ynt: Garip Sorun
« Yanıtla #4 : Nisan 07, 2015, 04:07:26 ÖÖ »
pow içinde pow olmuyor. Derleyici çok karmaşık bir işlem diyor.

uyusana olum sen  ;D
son teknoloji robotlar yapacam :D

Çevrimdışı Ufuk Sevim

  • Mezun olmuş OTOKON'cu
  • *
  • İleti: 451
Ynt: Garip Sorun
« Yanıtla #5 : Nisan 07, 2015, 08:27:14 ÖÖ »
Normalde unsigned int yapmak yeterli olmalı, çünkü int min. 16 bit olmak zorunda her platformda. Burada bir optimizasyon sorunu ya da derleyici bug'ı olabilir. Optimizasyon sorunu olup olmadığına bakmak için volatile unsigned int i; yazıp bir daha deneyebilirsin. Bende Ardunio olmadığı için bakamıyorum. Ayrıca bu tarz problemlerde debug işini assembly üzerinden yapmak daha mantıklı oluyor genelde.
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.