Elektrotekno.com Ana Sayfa || Programlanabilir Cihaz ve Elemanlar || Microchip Pic Serisi


Açıklama:
Elektrik, Elektronik, Haberleşme ve Otomasyon konularının ağırlıklı olarak konuşulduğu, tartışıldığı ve bilgi paylaşımı yapıldığı forumumuza hoşgeldiniz.
Şu an Kod Paylaşım ve Soru Cevap Alanı kategorisi içerisindeki Microchip Pic Serisi forumunda bulunuyorsunuz.
Bu sayfada üyelerimizin "I2C ve SPI modu aynı anda kullanılabilir mi?" konusundaki problem, görüş ve önerileri okuyabilir ayrıca konu hakkındaki doküman, resim, proje, devre ve programlara ücretsiz olarak ulaşabilirsiniz. Üye olduktan sonra sizler de konu hakkında sorular sorabilir ya da yorum ve paylaşım yaparak birikimlerinizi aktarabilirsiniz.
Forumdan tam olarak yararlanabilmek için üye olmayı unutmayınız!

I2C ve SPI modu aynı anda kullanılabilir mi?

Kayıt: 22 Nis 2006
Mesajlar: 352

Offline
ete
Tarih: 02 01 2008 19:09

Ben tam protokolü sormuştum. Bu data sheet de yazılı olan bilgi muhtemelen. Ama daha detay lazım. Anlaşıldı data sheete bakmam gerekecek.
Bu gibi konularda ben data sheete bakarak bir tablo yaparım. Bilgi okumak için takip edilmesi gereken şartları tabloya yazarım varsa alternatifleri incelerim. Sen böyle bir çalışma yapmadın anlaşılan. Data sheete şöyle bir baktımda bir sürü çalışma modu açıklanmış sen hangisinde çalışıyrosun. Seri clok mu uyguluyorsun yoksa dahili clockmu kullanıyorsun. Differansiyel çevirim mi yoksa diğer çevirimi mi kullanıyorsun. Bunları açıkla ona göre inceleyeyim.

Ete
Kayıt: 02 Ksm 2005
Mesajlar: 136

Offline
schlen
Tarih: 02 01 2008 19:16

Basic tabanlı bir dil olan protonda yazıyorum. Program kodları şu an yanımda değil. İşteyim. Eve döndüğümde yollayabilirim. Hem üzerinde tartışabileceğimiz bir duruma getirmem gerekecek. İlgin için çok tşk ederim
Başa dön
Kayıt: 02 Ksm 2005
Mesajlar: 136

Offline
schlen
Tarih: 03 01 2008 08:43

Merhaba ETE ve Asistan yazdığım kodlar ve burada eksik kısımları belirttim şimdiden tşk ediyorum,

Ete arkadaşım, Benim için hangisini kullandığımdan çok haberleşmenin sağlıklı olması önemli. Bahsettiğin tarza bir çalışma yapamadım çünkü seri haberleşme konusunda çok yeniyim, programcılığın mantığını bilyorum ancak biraz daha pratiğe ihtiyacım var. yöntem ve bilgilendirme için tşk ederim


'****************************************************************
'* name : untıtled.bas *
'* author : [select vıew...edıtor optıons] *
'* notice : copyright (c) 2006 [select vıew...edıtor optıons] *
'* : all rights reserved *
'* date : 27.06.2006 *
'* version : 1.0 *
'* notes : *
'* : *
'****************************************************************

device=16f877

declare lcd_ınterface 4
declare lcd_dtpın portd.4
declare lcd_enpın portd.3
declare lcd_rspın portd.2
declare lcd_lınes 4

trısa=%001111
trısd=%00000000
trısc=%10010000
xtal = 4

dim rdata as word '12 bit için en uygun tnaımlama sanırım
dim dın as byte 'max186 entegresinin din girişine yollanılacak 8 bitlik bilgi
dım mode as bıt 'girişin elle mi yoksa, bilgisayar ile mi yapılacağını seçmek için.
dim sel_0 as porta.0
dim sel_1 as porta.1
dim sel_2 as porta.2
dim chs as porta.3 'elle yapılan seçimde gerekli tercihler yapıldıktan sonra komutları yollamak için
dım want as byte
start:

ıf chs=1 then 'reset ucuna basıldıktan sonra
delayms 2000 '2 saniye chs basılı olursa
ıf chs=1 then mode=0 'mode=0 olur ve giriş manual olur.
goto manual
else
mode=1 'değilse mode=1 girişler bilgisayar kontrollü olur.
goto spı
endıf

maın:
' adc den alınan bilgi rs232 ile bilgisayara gönderilecek ve aynı zamanda lcd de görüntülenecek.










manual:
dın.0=1 '*--------ilk 2 bit
dın.1=1 '*----------external clock modundan
dın.2=1 'single ended modee seçildi
dın.3=1 'unipolar mod seçildi
sel_0=dın.4 '***
sel_1=dın.5 '****
sel_2=dın.6 '***** 4,5,6. bitlerle kanal seçimi yapıldı
dın.7=1 ' başlama biti

ıf chs=1 then
want=dın
else goto manual
endıf
'*want daki değer spı üzerinden adc ye gönderilecek
spı:
dın=0
'* rs232 üzerinden dın e bilgi yüklenecek ve spı üzerinden adc ye gönderilecek
goto maın

end

metinde oluşabilecek bozulmalara karşı ekte dosyayı da yolluyorum
Başa dön
Kayıt: 22 Nis 2006
Mesajlar: 352

Offline
ete
Tarih: 03 01 2008 12:18

Kontrol Byte ının formatı doğru. Ancak neden external clock seçtin onu anlamadım. Bu durumda dışarıdan bir clock bağlaman gerekecek alete. Halbuki kendi içinde osilatörü var ve onu kullanman bana kalırsa daha doğru olacak.

Kanal seçme işini yaptıktan sonra kontrol baytını hesaplayıp MAx186 ya göndermek gerekiyor. Kanal seçme bitlerinin haricindeki kontrol bayt'ı bitleri toplam değeri 142 olacaktır. (%1xxx1110=142) Bu nedenle önce DIN=142 deyip sonra;
DIN.4=SEL_0
DIN.5=SEL_1
DIN.6=SEL_2
şeklindeki 3 satırla kontrol baytını tamamlamış olacaksın.
Sonra bunu Max186 ya göndermek gerekiyor. Bunun için shiftout komutunu kullanman gerek. Ancak dikkat edeceğin bazı hususlar var. Bunlar;
- Shiftout komutu ile gönderilen kontrol baytı Max186 nın Data_in pininden girecektir.
- MAx186 dan okunan bilgi Data-out pininden çıkan bilgi olacaktır. Bu bilgilere göre ;
Önce CS yi HIGH yapmak gerekiyor. Bunu programın başında yapman uygun olacaktır. SOnra
Low CS
SHOUT Dta_in, Clk, msbfirst,[DIN] 'Shiftout komutu ile kontrol bayt'ı gönderildi
SHIN Dta-out , Clk, msbpost,[ADC\12]' Shiftin komutu ile 12 bitlik bilgi alındı
High CS
Buraya kadar olan satırlar yardımı ile kanal seçimi yapıldı ve ADC çevrimi ADC isimli değişkene 12 bit olarak okunup alınmış oldu.
Bu satırlarda sana uymayan yalnızca Clk seçimi. Ben dahili clock kullandım sen external kullanmışsın. Şayet external kullanmakta ısrarlı isen konrol baytının ilk bitini de 1 yapman gerekecek ve 142 yerine 143 rakamını kullanman gerekecek hepsi bu kadar.

Anladığım kadarı ile otomatik mod da kanal seçimini PC denyapacak ve bu seçimi RS232 portu üzerinden Pic'e gönderip seçilen kanala ait ADC değerini okutacaksın. Bu durumda elinde birde PC programı oması gerekecek. Umarım bu programı yapmışsındır. Bu programda seri portu 9600 baud olarak kullan ve önden bir uyandırma sinyali ardından da bir yakalama sinyali mutlaka gönder. Örnek vermek gerekir ise;
PC den yollanacak bilgiler sırası ile;
- 85,85,85,85,85 '5 adet 85 sabit bilgisi bu preambl denilen uyandırma sinyalidir.
- 0,0,0,0,0 '5 adet sıfır bilgisi
- 255,255,255,255,255 '5 adet 255 bilgisi
- "SCH" yakalama sinyali
- Kanal ' kanal seçim bilgisi
buraya kadar gönderilen bilgi bir paket olup bu kadar bilgi yalnızca kanal bilgisini salimen göndermek için kullanıldı.
Ancak bu sayede Pic gelen bilgiyi kesinlikle kaçırmayacaktır.

Şimdi gelelim pic tarafına şemanda gördüğüm kadarı ile USART portunu kullanmışsın. PC den gelen TX ucu USART da RX'e girecek, PC den gelen RX ucu ise Usart da TX pinine girecek. Bunları yapmışsın.
Pic de USART kesmesi de oluşturabilirsen, sen diğer işlerle uğraşırken şayet PC den bir bilgigelirse program otomatikman Kesme kısmına gidecek ve orada aşağıdaki komutlar yardımı ile gelen bilgi okunacaktır,
HSERIN [wait("SCH"),Kanal]
bu komut önce gelen datalarda SCH bilgisini arayacak yani yakalama sinyalini. Bunu bulduktan sonra ardından gelen kanal bilgisini okuyacak ve işini bitirecektir.
Ondan sonrasında artık alınan bilgiyi değerlendirmek kalıyorki onuda yukarıda anlattım.
Bu anlattıklarımla programı yapabilmen gerekir. Sıkışırsan yine yardım istersin.

Ete
Başa dön
Kayıt: 02 Ksm 2005
Mesajlar: 136

Offline
schlen
Tarih: 03 01 2008 12:57

Bahsettiğin konuları ilk defa duydum. gerekli düzenlemeleri yaptıktan sonra program hakkında bilgilendiririm. External clock kullanmayı uyumlu çalışma için düşündüm ama internal sorun çıkarmazsa söyledeiğin gibi kullanıcam. Bilgisayardaki programı henüz hazırlamadım. ilk denemelerimi manual yaptıktan sonra bilgisayardan uygulamaya geçeceğim. Yardımların için çok tşk ederim. Hakkını helal et.
Başa dön
Kayıt: 02 Ksm 2005
Mesajlar: 136

Offline
schlen
Tarih: 10 03 2008 23:45

Programda ve devrede bazı değişiklikler yaptım. Örneğin portb yi LCD yi sürmek için kullandım, dahili pull-up dirençlerini aktif ettim. Öncelikle SPI modda aldığım bilginin LCD de görüntülenmesini yapacağım ancak programı derlediğimde hata mesajı vermekte.

ERROR [Line 1] : Variable 'VD' not found!

programınini de vereyim bi göz atın isterseniz.
http://rapidshare.com/files/98537587/tezdeneme.rar.html

Şimdiden teşekkür ederim.
Başa dön
Kayıt: 22 Nis 2006
Mesajlar: 352

Offline
ete
Tarih: 10 03 2008 23:53

Program içinde VD isimli bir değişken kullanmışsın ancak programın başında tanımlamamışsın sanırım.

Ete
Başa dön
Kayıt: 02 Ksm 2005
Mesajlar: 136

Offline
schlen
Tarih: 10 03 2008 23:56

Tanımlamama rağmen böyle bir hata veriyor. Bende anlamadım sebebini. Programı aşağıdan indirebilirsin. Bi göz atman mümkün mü? Sen dener misin derlemeyi birde sana zahmet kardeş?

http://rapidshare.com/files/98537587/tezdeneme.rar.html
Başa dön
Kayıt: 22 Nis 2006
Mesajlar: 352

Offline
ete
Tarih: 11 03 2008 08:36

Proton kullanmıyorum. Bu nedenle derleyici yok elimde. Bakmam mümkün değil.
Hatanın mutlak bir sebebi vardır. Araştır bulursun.
Ete
Başa dön
Kayıt: 02 Ksm 2005
Mesajlar: 136

Offline
schlen
Tarih: 19 03 2008 17:19

Programı sorunsuz derledim ancak hiç bir değişiklik yapmadım. İlginçtir ama durum böyle. Yalnız LCD den normalde görüntü aldığım halde, max186 ile haberleştiğime dair bir görüntü alamıyorum. Kullandığım pic 4 Mhz' de çalışıyor, oysa max186nın dahili osilatörü 2 Mhz de çalışıyor. Sorun buradan kaynaklanıyor olabilir mi?
Başa dön


Sayfaya git Önceki  1, 2

I2C ve SPI modu aynı anda kullanılabilir mi?


Benzer Konular

- 4 kutsal kitap türkçe meal ve hadisler aynı programda

- Vodafone Staj Defteri (Aynı zamanda GSM için süper bir kaynak)
- Aynı dosya silici (Duplicate File Remover)
- mikrobasic ve proton aynı 16f628+ds1302 devresi
- pic 2 fonksiyonu aynı anda işleyebilirmi ? yardım !
- arkadaşlar +/- 12v u aynı adaptörden alabilmenin bi yolu warmı
- Aynı dosyaları ve resimleri temizleyin...
- ram deki bir veriyi roma kaydetme için nasıl bi c kodu kullanılabilir - acil
- yıldız Üçgen Faz kontrollü Soft Star ICBT kullanılabilir.

- Tek Pic ile 2 step motoru aynı anda sürmek...!

- Rasgele Metin Oluşturucu [Şifre Oluştururken Kullanılabilir] (ASP)


Sitemize üyelik ve içeriğin indirilmesi tamamen ücretsizdir. Sitemizde paylaşılan tüm dokümanlar (Tezler, makaleler, ders notları, sınav soru cevaplar, projeler) paylaşımcıların bireysel çalışmaları olup telif hakları kendilerine aittir ya da açık bir şekilde kamusal alana yerleştirilmiş dokümanların birer kopyalarıdır. Kişilerin bireysel çalışmalarını sitemizde yüklemesinde, sitemizde paylaşıma teşvik eden puanlama sisteminin de etkisi büyüktür. Bunlara rağmen hala size ait olan ve burada bulunmasına izin vermediğiniz dokümanlar varsa iletişim bölümünden yöneticilere bildirmeniz durumunda derhal silineceklerdir.
Powered by phpBB | Translated by phpBB Türkiye | Ads by Google Adsense | Design by Crazy Bat based
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71