i2c, spi, uartseri haberleşme

Başlatan elektrogr, 15 Şubat 2013, 01:37:06

elektrogr

Herkese merhaba,
Bir kart üzerinde n adet pici birbirleriyle haberleştirmek istiyorum, data güvenliği ve hız önemli , bir adet master olacak ve slavelerden isteği adresleri okuyacak ve yazacak, hangisini kullanmalıyım?
I2C?
SPI?
uart?

buzkırıcı

İmza Atmayı bilmem Parnak Bassam olur mu?

camby

evet uart üzerinden rs485 mantıklı olur iletişim için.

Erol YILMAZ

#3
CANBUS mantıklı olur.



Güncelleme: Aynı kart üzerinde olduğu için biraz lüks olur ama ne sağlar ?

1) Sistemi çok hızlı ve problemsiz bir şekilde çalıştırmanı sağlar.

2) Hatasız olur, (Error-Free)
   Bit Monitoring.
   Bit Stuffing.
   Frame Check.
   Acknowledgement Check.
   Cyclic Redundancy Check.

3) Hızlı olur (1 Mbit/Max)
   10 bin mesaj/sn mümkün olabiliyor.

4) Donanım Byte değil Frame ile muhattap olacağı için bir sürü gereksiz kesme vs ile uğraşmaz mcu ya bol vakit kalır vs...

camby

ben de yazarken aynı kart üzerinde kısmını kaçırmışım. Aynı kart üzerinde iken 485 çok da gerekli değil.

haydarpasamikro

Eğer aynı kart üzerinde olacaksa haberleşme için PIC16F877A ki özellikle A serisinde PSP birimi var. Paralel Slave port. PORTD 8-bit data alma-gönderme uçları. PortE ise CS,RD,WR kontrol uçları. Böylece birbirine bağlı birçok mikrodentleyiciye byte veri gönderebilirsiniz. CS ile chip select, mikrodentleyici seçimi, RD ile okuma, WR ile yazma emri. Bu kadar basit.
Mikro Dünyası.Haydarpaşa Teknik ve Endüstri Meslek Lisesi Mikrodenetleyici Atl. Şefi

berat23

pin sayısı önemliyse spi,değilse psp ile paralel haberleşme. aynı kart üzerinde rs485 veya can mantıklı değil.

elektrogr

#7
Alıntı yapılan: haydarpasamikro - 15 Şubat 2013, 14:44:54
Eğer aynı kart üzerinde olacaksa haberleşme için PIC16F877A ki özellikle A serisinde PSP birimi var. Paralel Slave port. PORTD 8-bit data alma-gönderme uçları. PortE ise CS,RD,WR kontrol uçları. Böylece birbirine bağlı birçok mikrodentleyiciye byte veri gönderebilirsiniz. CS ile chip select, mikrodentleyici seçimi, RD ile okuma, WR ile yazma emri. Bu kadar basit.

Zaten canbus hiç kullanmadım, paralel mantıklı gibi gözüküyor ama çok fazla bacak kullanacak biraz hesap kitap yapmam lazım...

mesaj birleştirme:: 15 Şubat 2013, 15:59:00

Alıntı yapılan: berat23 - 15 Şubat 2013, 15:49:16
pin sayısı önemliyse spi,değilse psp ile paralel haberleşme. aynı kart üzerinde rs485 veya can mantıklı değil.
spi, i2c den daha hızlı olduğu içinmi önerdiniz? Biraz araştırma yaptım uart çok kullanılmış, tercih sebebi neden acaba?

skara1214

uart basit çünkü printf yaz yolla gitsin i2c de adres tanıt v.s spi da iyidir ama uart en kolayı mesafe 2 metreden azsa sıkıntı olmuyor zaten aynı kart üzerinde demişsin
Herkes ölür ama herkes gerçekten yaşamaz

Erol YILMAZ

uart basit,

gönderilen veri 8 bit,
gelen adres mi ? data mı ?   9. bitle hallediliyor. yada sırasını takip edilebilir.

Aynı anda gönderince olanları düzeltebiliriz.

Yanlış bit aktarımı olduğunu anlamak için CRC koyabiliriz.

Modbus'a doğru gidiyor iş, her byte için bir kesme oluşturursak kesmeler de yük oluşturacak biraz.

bunları halledebilmek için ciddi EMEK ve ZAMAN lazım.

Halledilmişi var : CAN-BUS

Ben aynı pcb üzerinde birden fazla mcu iletişimi için CANBUS kullanacağımı pek sanmıyorum
ama  bazen neden olmasın diye de düşünüyorum :)


Sistem Multi-Master ise CAN-BUS sanırım zorunlu gibi...

haydarpasamikro

SPI ve I2C master-slave haberleşmedir. Yani bir taraf hattı yönetir. Clock sinyalleri tetiklenir master tarafından. Ama tüm mikrodenetleyiciler aynı anda nasıl hattı kontrol edecek. Yani bir tane mikrodenetleyici master olacak, diğerleri slave. Öyleyse uygun olabilir. Yoksa yazılım yükünüz artacaktır.

Uart ile yapmak gerekirse ben Token Ring yöntemini tavsiye edebilirim. Şöyle ki:

1.mikronun TX ucu 2. mikronun RX ucuna
2.mikronun TX ucu 3.mikronun RX ucuna
...
Son mikronun TX ucu 1.mikronun RX ucuna

bir halka oluşturuyoruz. Gelen data byte içerisinde adres bilgisi de gönderilerek sadece gelecek veri ilgili mikro tarafından alınacak ilgili değilse TX ucundan diğer mikroya paslayacak.
Mikro Dünyası.Haydarpaşa Teknik ve Endüstri Meslek Lisesi Mikrodenetleyici Atl. Şefi

berat23

Alıntı yapılan: elektrogr - 15 Şubat 2013, 15:57:50
Zaten canbus hiç kullanmadım, paralel mantıklı gibi gözüküyor ama çok fazla bacak kullanacak biraz hesap kitap yapmam lazım...

mesaj birleştirme:: 15 Şubat 2013, 15:59:00
spi, i2c den daha hızlı olduğu içinmi önerdiniz? Biraz araştırma yaptım uart çok kullanılmış, tercih sebebi neden acaba?
hızlı olduğu için önerdim, spi veya uart farketmez,bunlaran biri olabilir keyifne göre. hata denetimine de çok ihtiyaç olacağını sanmıyorum.

edit:uart ile haydarpaşamikronun önerisi mantıklı,mesaj atarken gördüm. hız derdin yoksa onu da kullanabilrsn.

skara1214

#12
Alıntı yapılan: haydarpasamikro - 15 Şubat 2013, 17:17:23
SPI ve I2C master-slave haberleşmedir. Yani bir taraf hattı yönetir. Clock sinyalleri tetiklenir master tarafından. Ama tüm mikrodenetleyiciler aynı anda nasıl hattı kontrol edecek. Yani bir tane mikrodenetleyici master olacak, diğerleri slave. Öyleyse uygun olabilir. Yoksa yazılım yükünüz artacaktır.

Uart ile yapmak gerekirse ben Token Ring yöntemini tavsiye edebilirim. Şöyle ki:

1.mikronun TX ucu 2. mikronun RX ucuna
2.mikronun TX ucu 3.mikronun RX ucuna
...
Son mikronun TX ucu 1.mikronun RX ucuna

bir halka oluşturuyoruz. Gelen data byte içerisinde adres bilgisi de gönderilerek sadece gelecek veri ilgili mikro tarafından alınacak ilgili değilse TX ucundan diğer mikroya paslayacak.

hocanın dediği yöntemin adı daisy chain  internette araştırıp kendine göre uydurabilirsin.tabi burada slaveler nasıl cevap verecekler mastıra?
Herkes ölür ama herkes gerçekten yaşamaz

haydarpasamikro

Slave yok. Bir mikronun gönderdiğini diğeri alacak. Kendisini ilgilendiren data ise alacak. Değilse gönderecek. Yalnız hatta datanın karşı tarafa gidip gitmediğini anlamak için "aldım" diye bir kontrol datası halkada dönüp gönderene geri ulaşaması lazım ki hattın bütünlüğü, iletim raporu, vs.. bilinsin.
Mikro Dünyası.Haydarpaşa Teknik ve Endüstri Meslek Lisesi Mikrodenetleyici Atl. Şefi

mufitsozen

Kullanacaginiz PIC'in datasheetine bakarsaniz SPI hizinin FOSC/4 ile limitli olacagini gorursunuz (genel olarak).

Buda ornegin 20Mhz hizi olan bir MCUda SPI hizi (bitrate) 5Mhz olur anlamina gelir.

Ayni kartin uzerindeki PIClerin haberlesmesi icin bu hiz size fazlasi ile yeter.
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.