400kHZ I2C haberleşme

Başlatan erdtur, 08 Aralık 2013, 10:14:07

erdtur

Merhaba  Sayın Ete ,
Orada OSC10 yazmamın sebebi Pic'in 10MHz çalışacağını düşündüğüm için değildi.
I2C haberleşmesinin 400kHz olmasını istediğimi pic'e anlatmak içindi.


erdtur

Dtmf

Merhaba arkadaslar mpu6050 yi pic ile calistirmak formuller filan kisa yoldan calistirayim zaman kisitli o yuzden :) uzerinde stm32f4 calman filtre ozelligine sahip bir modul aldim ttl donusturucu ile serial monitorde verileri almayi denedim fakat baud rate dergerlerinin hangisini denediysem sacma karakterler cikiyor.nerede hata yapiyorum yardimci olurmusunuz.

Dtmf

Ete hocam dosta boyutu buyuk olunca kabul etmedi bende resim atmak zorund kaldim

ete

Verilen bilgilere bakılırsa bu alet default 115600 Boud olarak fabrika ayarına sahip.
Ben olsam önce bununla denerdim.
Normal Seri haberleşme komutları ile mümkünse kesme kullan ve alınan her byte'ı bir dizi değişkenine artırarak kaydet.
Bunu öneriyorum çünki aletten nasıl ? kaç byte bilgi çıktığını verilen bilgilerden göremiyorum.
Standart bir format kullanıyor ise aletin verdiği bilgi adedi kadar byte değişkeni alma komutlarına yerleştir.
Sonra aldıklarına bakarsın.

Daha fazla bir şey yapabileceğimi sanmıyorum. Aleti tanımıyorum data sheeti iyice okuyup alete hakim olabildiğinden emin olmalısın.

Ete

Dtmf

ete hocam gelen verılerı gormek ıcın su sekılde yaptım
;==============================================
pıc16f877
xtal=20
....
.....
.......
start:
SerIn PORTC.6,115200,[X1,X2,Y1,Y2,Z1,Z2,T1,T2]
Print At 1,1,Dec X1 : Print At 1,10,Dec X2
Print At 2,1,Dec Y1  :Print At 2,10,Dec Y2
Print At 3,1,Dec Z1   :Print At 3,10,Dec Z2
Print At 4,1,Dec T1    :Print At 4,10,Dec T2
DelayMS 500
goto start
;==========================================
verıler gelıyor fakat bıraz tutarsız
4 sayfalık data shet var orada formuller var galıba onlarla yıne bır hesaplama yapmak gerekıyor ete hocam

ete

Böyle bir sistemin Serin komutu ile çalışacağını sanmıyorum.
Hserin ile bu işi yapmaya çalışın.
Serin komutunda yazılı olan Baud rate hesaplanması gereken bir değerdir.
Normal şartlarda genel formül şöyledir.
Rakam=(1.000.000/Baudrate)-20
Örnek verecek olursak 9600 lük baud rate için
1000000/9600=104  ve 104-20=84 olarak hesaplanır ve oraya 9600 için 84 yazılır.
Ancak 115200 için hesap biraz garip oluyor.
1000000/115200=8 çıkıyor ve bundan 20 yi çıkarmaya çalışırsan eksi sayı elde edersin.
Bu durumda bu hız serin komutu için uygun değildir demek gerekir.
Öte yandan Serin komutunda değişik formatlar da kullanılabiliyor. )600 lük baud rate için formatara göre hesaplanan değerde farklı oluyor aşağıda her birinin karşısına hesap değerlerinide yazıyorum. Bu bilgileri Proton User Manual den çıkardım.

- 8 bit no parity inverted  .....16468
- 8 bit no parity true.............84

- 7 bit even parity inverted....24660
- 7 bit even partiy true..........8276

Kısaca oraya yazdığın 115200 bu komut için yanlış bir değer oluyor. Aldığın anlamsız karekterlerin sebebide bu olsa gerek.
Hserin komutunu kullandığın zaman declare komutları ile çalışma parametrelerini vermen gerek.
Unutmaman gereken şey ise Hserin kullandığında ayrılmış pinleri (RX ve TX) başka amaçlar için kullanamayacağın dır.
SOnuç olarak bu işin Serin ile yapılabileceğini düşünmüyorum. Daha doğrusu emin değilim. Ama Hserin ile  olabileceğinden eminim.
Bir diğer konu da 115200 baud rate için hızlı bir OSC frekansın olmalı. Onu hiç belirtmemişsin.
Kısa zamanda Pic MultiCalc isimli uygulamayı bul (sitede link olması gerek) ve kullanmaya başla. Osc frekanslarına göre sana otomatik declarasyonları hesaplar verir.

Ete

Dtmf

Tesekkur ederim sayin ete hocam  :) hserin komutu ile calisma yapip sonucu yazacagim.saygilarimla

Dtmf

#22
.

Dtmf

mpu6050 konu baslıgı acacaktım fakat yenı konu nasıl acılır bulamadım.

ete

Ana başlığa 'Basic programlama komut kullanımı' na geri gidersen yeni konu butonunu görebilirsin. Yeni konular ana başlıklarda açılabiliyor.
Ete

Dtmf

sagolun hocam tesekkurler.

Powered by EzPortal