Z

matematik denklemlerini problemsiz işlemek istiyorum Tavsiye.

Başlatan zengar, 31 Ekim 2013, 13:11:00

zengar

Merhaba arkadaşlar,
Piclerde çokça matematiksel denklemlerle uğraşıyorum. 32 bitlik işlemleri sorunsuz yapacak, ondalık sayı problemine takılmayacağım ve aynı zamanda log, tan, karekök işlemlerinden hassas sonuç alacağım bir tavsiye istiyorum. Yada, bu Piclerden çok şey mi istiyorum.  ???
Tavsiyeleriniz  şimdiden teşekkürler! 

Mucit23

Piclerde 32 bit işlemler yapabilirsin. PicBasicde biraz zor ama proton kullanabilirsin. Bu konuda çeşitli tool lar var. Forumdan Maxim Bu konuda tecrübeli.

C de zaten istediğin gibi 32 bit işlem yapabiliyorsun. Ama 8 bit işlemcide 8 bit alu ile nekadar hızlı yapılır bilmiyorum.

Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

zengar

Peki en bilinen 32 bit lik işlemcinin ne olduğunu biliyormusunuz yada hazır bir bord gibi bişey. Ve en merak ettiğim  konu şu aslında bu 32 bitlik işlemcilerin kodları değiştirmek veya extra kodlar eklemek  gerekiyormu? En çok korktuğum mesele bu! Yani mesela 877A için ADC yi nasıl açacağımı biliyorum ve  herkesce bilinen bişey. Yani kodları bulmak çok zor olmuyor.
Buna başlayınca bu tür sıkıntılarla karşılaşırmıyım?

Mucit23

Piyasada her model 32 bit mcu var, Microchip'in Pic32 serisi var veya Atmel'in ARM çekirdekli AT91Sam serisi ve bunun haricinde en bilindik yine ARM tabanlı ST'nin STM32 serisi var. NXP nin de LPC  serisini unutmmak lazım.

STM32 de örnek çok fazla var. Fakat bu dediklerimin Hepsindede iyi derece mcu bilgisine ve C programlama dili bilgisine sahip olman gerek. Yoksa çok sıkıntı çekersin
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

zengar

Alıntı yapılan: Mucit23 - 31 Ekim 2013, 20:14:52
Piyasada her model 32 bit mcu var, Microchip'in Pic32 serisi var veya Atmel'in ARM çekirdekli AT91Sam serisi ve bunun haricinde en bilindik yine ARM tabanlı ST'nin STM32 serisi var. NXP nin de LPC  serisini unutmmak lazım.

STM32 de örnek çok fazla var. Fakat bu dediklerimin Hepsindede iyi derece mcu bilgisine ve C programlama dili bilgisine sahip olman gerek. Yoksa çok sıkıntı çekersin

C programlama dili dediğiniz hangisi Mikro c, CCS  C gibi C dilleri var?

Maxim

siz buraya bir ornek formul yazarmisiniz?
bakalim ne kadar zorlayacak islemcileri

zengar

x=0.001275
y=0.000895
tg^-1(x/y)=?
x ve y değişken!
İnşaallah sonuç sizi tatmin etmiştir. :-\ Değerleri tamsayıya çevirip bir lookup tablosuna gidiyorum ordan derece değerini okuyorum. yani bir şekilde işimi görüyorum.

Maxim

yanlış anlamışsınız
sonuç beni değil sizi tatmin edecekmi diye bakıyoruz
yoksa benim bir derdim yok, yani bu denli formül ile işim olmaz.
hatta matematikten çok anlıyorda değilim.
o yüzden formülü protonda deneyelim ve görelim işe yarayacakmı ?

tg^-1(x/y)=

buradaki tg nin açılımı nedir? tanjant mı ?
proton da atan (arc tangent, inverse tangent) ve tan (tangent) komutları var

birde detaylı float işlemleri için ilk başlangıçta Declare Float_Display_Type = Fast yazmamız lazım

gergy

tg^-1(x/y)=arctan(x/y)

Maxim'in dediği gibi Proton'da tek komutla halledilebilir, ancak 18F serisi 16 bitlik MCU'da geçerlidir. Bu bağlamda 32 bitlik MCU'ya pek de gereksinim bulunmamakta ve tek satırda X = Atan (X/Y) yeterlidir.

Verdiğiniz x ve y değerlerine göre arktanjantı hesaplayan ve 2x16 alfanümerik LCD'ye yazan basit bir program 2020 program byte ve 51 değişken byte (RAM) harcar. Verdiğiniz değerlere göre hesap yapıp ekrana yazan basit bir uygulamaya ait Isis simülasyon ekran görüntüsünü ekte görebilirsiniz.

Maxim

teşekkürler gergy

ayrıca belirtmek isterimki
protonda direk float sayı tanımlaması var, yani
dim x as float
dim y as float

yazabilirsiniz.


son versiyonlarda negatif değer eklenen byte-word-dword larda geldi
yani byte biliyoruz 0-255 dir
sbyte = -128  +127 olabilmekte
yada sword = -32768  +32767 olabiliyor
birde sdword var

*zorlu formüllere yardımcı olabilir diye yazdım

Maxim

bende denedim
x=0.001275
y=0.000895
eğer formülümüz bu ise  SONUC = Atan (X/Y)
çıkan sonuç değeri: 0.95875573

doğrumudur ?


Dim x As Float
Dim y As Float
x=0.001275
y=0.000895
Dim Son As Float

loop:
Son = ATan (x/y)
Print At 1,1,Dec8 Son,"   "
GoTo loop

zengar


Powered by EzPortal