ADXL345 pic basic negatif değer okumak

Başlatan alisumer, 12 Mart 2022, 09:46:45

alisumer

ADXL345 spi ile haberleşiyorum okumaları çok kolay yapabiliyorum kullanması çok keyifli ve basit fakat şöyle bir sıkıntım var sensör 0 +180 arasında okumada sıkıntı yok ama 0 -180 arası okuması negatif değerli geliyor örneğin -2 11111110 şeklinde geliyor  tabi bunun 16 bit hali sorun şu ki sensörde herhangi bir taşma takibi yapamadığımdan pic de bu sayının 0xFE mi -2 mi olduğunu ayırt etmekte zorlanıyorum . çözüm önerisi olan varmı C kullan demek harici tabi
Hep meraktan

alisumer

Hep meraktan

Hattuşa

benim önerim şu şekilde;
C dilinde işaretli ve işaretsiz değişkenler vardır, byte dediğinde işaretli ise -128 0 +128 şeklide değer alır, aynı şekilde word (int) de bu şekildedir. yani -32768 ve +32768 şeklinde, çözümü ise
2 şekilde önerim var.
1. önerim okuma yaptıktan sonra o değeri direk değişkene atmak yerine bir if döngüsü ile işaretsiz değişkene atmak yani;
if okunan değer > 0 then okunan =okunan değer
if okunan değer <0 then okunan =65535 -okunan değer

2. önerimise int değişkeni olduğu için yani 16 bit olduğu için 16. biti kontrol etmek, zira değer - ye dönünce 16. bit 1, + olunca 16. bit 0 değerini alıyor

ete

Tam sayılarla çalışan bir sistemde sayının sıfırdan küçük olma hali yoktur. Önerilerini C diline göre vermişsin.
Doğru tanımlama şöyle olmalı,

IF Okunan >32767 then Okunan=(65535-Okunan)+1 ' 2 nin tamamlayanını buluyoruz.
Pozitif okuma iin ayrıca if kullanmaya gerek yok. Direk okunan pozitif değer olacak negatif ise tamamlayanı hesap edip işareti eksi yapmak gerekir. Burada bir de işaret biti kullanmak lazım 0 ise Pozitif 1 ise negatif gibi.

Ete

Hattuşa

Alıntı yapılan: ete - 12 Mart 2022, 11:22:41Tam sayılarla çalışan bir sistemde sayının sıfırdan küçük olma hali yoktur. Önerilerini C diline göre vermişsin.
Doğru tanımlama şöyle olmalı,

IF Okunan >32767 then Okunan=(65535-Okunan)+1 ' 2 nin tamamlayanını buluyoruz.
Pozitif okuma iin ayrıca if kullanmaya gerek yok. Direk okunan pozitif değer olacak negatif ise tamamlayanı hesap edip işareti eksi yapmak gerekir. Burada bir de işaret biti kullanmak lazım 0 ise Pozitif 1 ise negatif gibi.

Ete

hocam bir yanlışınız yok mu?
şöyle ki okunan değer -32767 ile +32767 arası bir değer alıyor. sizin yazımınıza göre 32767 in üstü negatif değer almış oluyor ki hatanız burda olduğunu düşünüyorum. 16 bit değişkenimizim aldığı toplam değer 65535 işaretli değişkenlerde bu değeri 2 ye bölüp 32767 nin olduğu nokta 0, üstü pozitif altı ise negatif değer olarak sensörden bize bu şekilde geliyor. yanlışım olabilir

ete

Negatif sayıların daima en yüksek değerlikli bitleri "1" olur. Sen ise tersini söylüyorsun.
Windows un Hesap makinası var. Onun Programlayıcı modu var. Bu hesap makinasını aç ve orada dene istersen kolaylıkla görürsün. 2 sayısını ver sonra onu eksi yap ne olduğunu kolaylıkla anlarsın.
Yukarıda Alisümerin örneğinde de açıklamış. 2 sayısını -2 olarak aldığında FE olduğunu söylüyor (8 High byte kısmı) buda benim bilgimi doğruluyor. Pek çok algoritmada hatta ve hatta sıcaklık sensör okumalarında eksi sıcaklıklarda 15.bit in 1 mi yoksa sıfırmı olduğuna bakılır. 1 ise sıcaklık negatiftir denilir. İyice araştırmanı öneririm.

Ete

alisumer

ETE hocam  evet siz söyleyince farkettim aslında adxl345 13 bitlik okuma yapıyor 16 bit gönderiyor zaten: 13 bitin üstündeki değerlerin 1 olması değerin  negatif olduğunu gösterir çok teşekkürler.
Hep meraktan

Hattuşa

Alıntı yapılan: ete - 12 Mart 2022, 13:21:44Negatif sayıların daima en yüksek değerlikli bitleri "1" olur. Sen ise tersini söylüyorsun.
Windows un Hesap makinası var. Onun Programlayıcı modu var. Bu hesap makinasını aç ve orada dene istersen kolaylıkla görürsün. 2 sayısını ver sonra onu eksi yap ne olduğunu kolaylıkla anlarsın.
Yukarıda Alisümerin örneğinde de açıklamış. 2 sayısını -2 olarak aldığında FE olduğunu söylüyor (8 High byte kısmı) buda benim bilgimi doğruluyor. Pek çok algoritmada hatta ve hatta sıcaklık sensör okumalarında eksi sıcaklıklarda 15.bit in 1 mi yoksa sıfırmı olduğuna bakılır. 1 ise sıcaklık negatiftir denilir. İyice araştırmanı öneririm.

Ete

yanlış bagdattan dönermiş usta, bağdat buraya göre sıcaktı bilesin

alisumer

#8
video kaldırıldı saygılar
Hep meraktan

ete

Video ile bir şeyler anlatmaktan vaz geçersen sevineceğim.
Ne bir şey anlamak mümkün nede kalıcı bilgiler içeriyor. Takip etmesi zor.
Anlatacaksan yazılı anlatmanı tercih ederim.
Budan sonra videolu anlatımları sileceğim farklı amacı olduğunu düşünüyorum.
Burada ticaret yapmıyoruz. Bu site üzerinden para kazanmayada çalışmıyoruz.
Bu şekilde çalışmak isteyenler istedikleri yere gidebilirler.

Ete

alisumer

 :o kusura bakmayın hocam da ne gibi bir para kazanmadan bahsettiğinizi anlamadım kastettiğiniz yutube ise 10 senedir açık bir kanal 20 tane takipçisi var ve bir kaç tane bilgisinden yararlandığım forumlar hariç paylaşım bile yapmıyorum.bana faydalı oluyor videolar belki birilerine de faydası olur sandım tabiki silebilirsinizsaygı duyarım ama yanlış anlamanıza üzüldüm.birdaha paylaşmam video falan
Hep meraktan

alisumer

#11
eğer kastettiğiniz forumda para kazandığım ise gene sizin forumdaki yazışmalarımdan bir örnek buradan para kazanma amacı gütmediğimi açıkça belirtmiştim 
Hep meraktan

ete

Para kazanıyorsun diye bir laf söylemedim. Burada para kazanma amaçlı işler yapmadığımızı vurgulamak istedim. Bu tür videoların bir çok örneği var ve bunların ne amaçla yapıldığını hepimiz biliyoruz.
Ben ikazımı yaptım sadece. Ben verdiğin videodan yaralanamadım. Sorun burada. Bilginin yazılı verilmesi taraftarıyım. Yanlış anlama bana göre bende değil biraz sende gibi olaya farklı açıdan bakıyorsun. Uzatmaya gerek yok bir prensip koyduk uymaya çalışırsan sevinirim.
Ete

alisumer

tamamdır hocam mekan sizin uyarız kurala ama açıklamak da istediğim bir husus var videolarda hiç bir reklam,deneme videosu gibi bir içerik yok sadece gene bazen bu  forumdan bazen başka kaynaklardan öğrendiğim bilgileri kendim de deneyip dilim döndüğünce basit şekilde benim seviyelerimde olan insanlara belki eğitici olur diye anlatmaya çalıştığım videolar sadece .ha yaptıklarımdan para kazanıyormuyum evet kazanıyorum ama bu bile başlı başına iyi niyetimi gösteriyor sanırım para kazandığım bir projeyi video yapıp bir çok noktasını anlatmaya çalışıyorum neyse fikrinize saygı duymadığımı düşünmeyin.
Hep meraktan

Powered by EzPortal