Picproje Elektronik Sitesi

DERLEYİCİLER => MikroC - PIC => Konuyu başlatan: ogy - 21 Ocak 2014, 22:07:05

Başlık: 32 bitlik veriyi 4 ayrı byte olarak almak?
Gönderen: ogy - 21 Ocak 2014, 22:07:05
Merhaba,

Seri porttan  K3e3143 şeklinde veri alıyorum.Burada 'K', '3e', '31', '43' sayılarını 4 ayrı değişkene atmak istiyorum.Bunu MicroC PIC ile nasıl yapabilirim?Sanırım pointer kullanmam gerekiyor ama nasıl yapacağımı anlayamadım.
Başlık: Ynt: 32 bitlik veriyi 4 ayrı byte olarak almak?
Gönderen: LukeSkywalker - 21 Ocak 2014, 22:09:31
Bu veriler zaten uart üzerinden byte byte gelir. Uart uzerinden 32 bitlik veri bir anda gonderilemezki.
Başlık: Ynt: 32 bitlik veriyi 4 ayrı byte olarak almak?
Gönderen: selimkoc - 21 Ocak 2014, 22:33:05
UART üzerinden byte olarak transfer gerçekleşir. Dizi değişkenine aktarak yapabilirsiniz.
Başlık: Ynt: 32 bitlik veriyi 4 ayrı byte olarak almak?
Gönderen: kudretuzuner - 21 Ocak 2014, 22:41:28
Merhaba,
Data, 'K' olarak gönderilmez."K" harfi  HEX'4B' olarak yollanır.C# bilmiyorum ama VB.Net'te PC'ye hex olarak gelen dataların DEC değerleri okunur.Yani PIC'in "K" harfi için yolladığı HEX'4B' değeri DEC75 olarak okunur.
Alıntı"Burada 'K', '3e', '31', '43' sayılarını 4 ayrı değişkene atmak "
Bakınız
http://www.asciitable.com/ (http://www.asciitable.com/)
Başlık: Ynt: 32 bitlik veriyi 4 ayrı byte olarak almak?
Gönderen: camby - 21 Ocak 2014, 22:47:33
FF ile and işlemi yapıpı kalan değeri byte'a convert ederseniz yada byte'ın içine atarsanız ilk byte'ı elde edersiniz.

2. byte için de önce 8 birim sağa kaydırıp aynı işlemi yapmak gerekiyor.

Diğerleri de aynı mantıkda devam ediyor.

Ama dedikleri gibi uart zaten byte gönderiyor.
Başlık: Ynt: 32 bitlik veriyi 4 ayrı byte olarak almak?
Gönderen: ogy - 22 Ocak 2014, 00:15:50
Cevap yazan tüm hocalar sağolun.Uart'tan verilerin byte byte gelebileceği kısmını unutmuşum ben.Terminalden o formatta okuyunca kafam karıştı.Gelen verileri diziye alarak hallettim.Teşekkürler.
Başlık: Ynt: 32 bitlik veriyi 4 ayrı byte olarak almak?
Gönderen: kimlenbu - 22 Ocak 2014, 11:53:43
ola ki kullanmak isteyen olur,

#define BYTE(var,index) *(((unsigned char*)&var)+index)

preprocessor makrosu ile byte okuma ve yazma yapılabiliyor.

degisken =0x1234;

ise

BYTE(degisken,0) ile 4'ü elde edebiliyorsunuz,

BYTE(degisken,0)=5; derseniz de degisken 1235 oluyor.
Başlık: Ynt: 32 bitlik veriyi 4 ayrı byte olarak almak?
Gönderen: selimkoc - 22 Ocak 2014, 15:52:19
@kimlenbu

Bilgi için teşekkürler...
Başlık: Ynt: 32 bitlik veriyi 4 ayrı byte olarak almak?
Gönderen: yamak - 22 Ocak 2014, 16:07:28
Alıntı yapılan: kimlenbu - 22 Ocak 2014, 11:53:43
ola ki kullanmak isteyen olur,

#define BYTE(var,index) *(((unsigned char*)&var)+index)

preprocessor makrosu ile byte okuma ve yazma yapılabiliyor.

degisken =0x1234;

ise

BYTE(degisken,0) ile 4'ü elde edebiliyorsunuz,

BYTE(degisken,0)=5; derseniz de degisken 1235 oluyor.
BYTE(degisken,0) ile  0x34 elde edilir 0x4 değil. zaten 0x1234 16 bitlik bir sayı.
Başlık: Ynt: 32 bitlik veriyi 4 ayrı byte olarak almak?
Gönderen: muhittin_kaplan - 22 Ocak 2014, 16:11:46
bilgisayara mı göndereceksin ?
c# mı yada vb.net  mi kullanıyorsun.