avatar_Hattuşa

2 MCU Usartsız Haberleşme

Başlatan Hattuşa, 05 Kasım 2021, 22:34:37

Hattuşa

slm
@ete hocam 2 adet 16f1827 yi usart kullanmadan data yollamak istiyorum. mümkün olduğunca az bağlantı ile.
haberleşme tek yönlü olsa da olur, yani master 2-3 byte bilgiyi slave alacak ve değerlendirecek. bunu en basit nasıl yapabilirim. (Usart pinlerimi başka işlem için kullanacağım için bu işlem için kullanmak istemiyorum)
bunu nasıl yapabilirim? öneriniz nedir?

ahmet_zxc

soru ETE hocama gelmiş ama kendimizce cevaplasak kimse kızmaz herhalde..

yazılımsal uart tanımlayabileceğin(1. öneri) gibi, herhangibir dijital pin i 1 0 yaparak bile 2-3 byte veriyi yollayabilirsin..

ete

Ahmet cevabı vermiş ekleme yapayım.
- Serout + Serin (veya Serout2 + Serin2 )komutlarıda seri haberleşme yapar ama usart pinlerini kullanmadan herhangi bir pin üzerinden çalışabilirler.

- I2C ile haberleşebilirsin.

- Shiftout +Shiftin ile haberleşebilirsin (SPI)

Her birinin detaylarını görmek için ders notlarım veya MCS de ekrana SErin yazıp kursorü üzerine getir ve F1 (veya Fn+F1)  tuşuna basın basic komutu açıklaması ekrana gelecektir.
Yanlış hatırlamıyor isem

bazılarına bu konuda örnek vermiş idim sitede bulabilirsen araştır derim.

Ete

Hattuşa

Alıntı yapılan: ahmet_zxc - 06 Kasım 2021, 02:10:06soru ETE hocama gelmiş ama kendimizce cevaplasak kimse kızmaz herhalde..

yazılımsal uart tanımlayabileceğin(1. öneri) gibi, herhangibir dijital pin i 1 0 yaparak bile 2-3 byte veriyi yollayabilirsin..

dikatsizliğim için özür dilerim, bu site paylaşım sitesi elbette herkes bilgi ve tecrübesini paylaşacak ben yazarken buna dikkat etmeden yazmışım, sorum tüm site takipcilerineydi.

Hattuşa

hocam sizin bir çalışmanız elimde mevcuttu ne var ki konuya yeterince hakim olamadığım için ben beceremedim. spi için MCU nun SDA,SCL pinleri dışında başka pinlerle bu işi yapmak istiyorum. başka örnek varmı acaba?

ete

SPI kullanmak ve herhangi bir pin gurubu ile bu işi halletmek istersen he riki tarafta 3 adet pin kullanman gerekir. Aksi halde senkron tutturamazsın.
1 pin CLK olarak çalışacak
2. pin DATA hattı olarak çalışacak
3. Nolu pin ise haberleşme habercisi olarak çalışması gerekir. Gönderen taraf 3 nolu pini HIGH yapıp bilgiyi yollamalı alan taraf ise bir şekilde 3 nolupinin HIGH olmasını beklemelidir. HIGH yakalanınca SHIFTIN ile gelen bilgileri almalıdır. Gerisi komut işi onu yaparsın artık.
İşlemcinin SPI portunu kullanırsan dahili Buffer çalışacağı için ne zaman yollarsan yolla alan taraf bilgiyi kaçırmaz alır bekletir ve sonradanbufferdan okunur bu bilgi. Bu fonksiyonu 3 cü pin ile sağlamış olacaksın.

Ete


Ete

Hattuşa

@ete hocam sizin 7. dersteki serout2 komutu ile yapılmış tek pinli haberleşmeyi kullansam devremde sıkıntı çıkarır mı?

ete

Sistem çalışırsa sürekli çalışacaktır çalışmaz ise o zaman sıkıntı var demektir. Başka bir yol bulman gerekir. En güzeli denemek.

Ete

Hattuşa

Alıntı yapılan: ete - 06 Kasım 2021, 17:53:50Sistem çalışırsa sürekli çalışacaktır çalışmaz ise o zaman sıkıntı var demektir. Başka bir yol bulman gerekir. En güzeli denemek.

Ete

hocam sıkıntı çıkarırsa alıcı katı çıkarır, alıcı katım ise 12f1822 ana mainde hiç bir işlemim yok, program yoğunluklu olarak int kesmesi ve timer0 - timer1 kullanımı ve interrupt içinde çalışacak. bakalım isisde test edeyim orda da sıkıntı çıkarmazsa çalışır diye düşünüyorum

Hattuşa

arkadaşlar şöyle bir sorun ile karşılaştım.bir devre için 2 adet işlemci kullandım. ana işlemcim 18f4520 ve slave olan işlemcim ise 12f1822 ve ben ikisini haberleştirdim sorun yoktu.Ancak;
12F1822 de timer0,timer1 ve timer2 yi 12khz lik bir frekans ürettim (her bir timer ayrı ayrı 3 adet) bu seferde 12f1822 ne USART,ne SPI hiç bir şekilde data alımı yapmıyor, datasheetinde SPI için timer 2 yi kullandığı yönünde bilgi var gibi, Usart için emin değilim. sonuç olarak bu tip haberleşmelerde timer kullanılıyor sanırım.
12F1822 de mclre ile birlikte 3 pinim boşta kaldı, sizden bu 3 pinle nasıl bir mantıkla data alabilirim. alınan datalar (her bir frekans için ayrı ayrı 1 er adet) toplam 3 byte lik bir değeri ana işlemciden çekmem lazım.
Ne önerirsiniz?



 

pwm3434

Pro tr pek bir fikrim yok ama geçici bir çözüm için sırası ile timer ları programı ilave edebilirsin. Başka bir çözüm ise 3 timer için 3 ayrı slaw işlemci de kullanabilirsin. Dediğim gibi sadece geçici olarak.

alisumer

#11
Benim bildiğim ne spi nede uart timer kullanmıyor slave zaten harici olarak tetikleniyor master de osilator tetikliyor diye hatırlıyorum sorunun başka birşey olmalı mesela timer kesmesi kullanıyorsan data alma esnasında kesmeler sıkıntı olabilir sanırım birkaç kesme birden kullanıyorsun bayrak temizliği de sorun olabilir bence kullandığın program için eleyerek hata bulmaya çalış karmaşık bir program canlanıyor gözümde ufak biryerde detay atlamışsındır bence spi o şartlarda en iyi çözüm
DÜZELTME: evet spi de timer 2 seçenekler arasında varmış fakat osc tetiklemesi gibi bir seçenek dururken timer2 kullanan yoktur sanırım bende kullanmadığımıdan bu seçeneği görmemişim bile kusura bakmayın
Hep meraktan

Hattuşa

Alıntı yapılan: alisumer - 22 Kasım 2021, 23:19:44Benim bildiğim ne spi nede uart timer kullanmıyor slave zaten harici olarak tetikleniyor master de osilator tetikliyor diye hatırlıyorum sorunun başka birşey olmalı mesela timer kesmesi kullanıyorsan data alma esnasında kesmeler sıkıntı olabilir sanırım birkaç kesme birden kullanıyorsun bayrak temizliği de sorun olabilir bence kullandığın program için eleyerek hata bulmaya çalış karmaşık bir program canlanıyor gözümde ufak biryerde detay atlamışsındır bence spi o şartlarda en iyi çözüm

slave tarafında 3 timerin tamamı interrupt ile kullanılıyor. spi konusunda zayıfım sanırım.

alisumer

Ayrıca hepsinden 12khz üreticeksen neden tek timer ile kesmeye gidip üç bacağa da puls vermiyorsun benmi anlamadım amaçladığın şeyi
Hep meraktan

alisumer

hayali konuşuyorum şöyle bir şey olabilir mesela kesmeye gittin kesme içerisinde kesmeleri kapattın yeni kesme olmasın diye spi cs bacağı da kesme kullandığı için bu esnada data gelirse alamaz sanırım veriyi
Hep meraktan

Powered by EzPortal