Elektrotekno.com Ana Sayfa || Pic ve diğer işlemci ve denetleyiciler ile yapılmış devreler, projeler


Mikrodenetleyicilerde I2C Protokolu kullanimi

Kayıt: 02 Ksm 2009
Mesajlar: 34

Offline
eemozbulut
Tarih: 21 07 2010 10:47

Arkadaslar I2C seri haberlesme prokolu kullanan varsa ccs c dili yada mikroc uzerinde nasil kullanilir anlatabilirmisiniz? Yada elinizde bu konu ile ilgili kaynak varsa paylasabilirmisiniz?


Reklamlar

5 Kullanıcı bu konu için eloman arkadaşımıza teşekkür ettiler

Kayıt: 10 Arl 2009
Mesajlar: 43

Offline
robotechno
Tarih: 21 07 2010 15:12

bi suna bak istersen ww1.microchip.com/downloads/en/devicedoc/i2c.pdf
hangi işlemci kullanacaksın
Başa dön
Kayıt: 14 Tem 2009
Mesajlar: 221

Offline
salih-46
Tarih: 21 07 2010 15:36

ccs c ile i2c protokolü


Merhaba
Aşağıdaki uygulamayı çok önce yapmış ve board üzerinde denemiştim ccs c ile i2c uygulaması için bir örnek olabilir...
kolay gelsin

Mikrodenetleyicilerde I2C Protokolu kullanimi

**********************************
#INCLUDE <16F877A.H>
#USE DELAY (CLOCK=4000000)
#use fast_io (b)
#use fast_io (c)
#include <LCD420.C>
#define use_portb_lcd true
#use i2c(master,sda=pin_c4,scl=pin_c3,slow=100000)
char saniye=0x00,dakika=0x09,saat=0x10,hafgun=0x02,aygun=0x30,ay=0x06,yil=0x09,kont=0x90;
char saniyebir,saniyeon,dakikabir,dakikaon,saatbir,saaton,aygunbir,aygunon,aybir,ayon,yilbir,yilon;
//
ds1307_yaz()
{
i2c_start();
i2c_write(0xd0);
i2c_write(0x00);
i2c_write(saniye);
i2c_write(dakika);
i2c_write(saat);
i2c_write(hafgun);
i2c_write(aygun);
i2c_write(ay);
i2c_write(yil);
i2c_write(kont);
i2c_stop();
}
//
ds1307_oku()
{
i2c_start();
i2c_write(0xd0);
i2c_write(0x00);
i2c_stop();
i2c_start();
i2c_write(0xd1);
saniye=i2c_read(1);
dakika=i2c_read(1);
saat=i2c_read(1);
hafgun=i2c_read(1);
aygun=i2c_read(1);
ay=i2c_read(1);
yil=i2c_read(1);
i2c_stop();
}
//
cevir_dt()
{
saniyebir=saniye&0x0f;
saniyeon=saniye&0xf0;saniyeon=saniyeon>>4;
dakikabir=dakika&0x0f;
dakikaon=dakika&0xf0;dakikaon=dakikaon>>4;
saatbir=saat&0x0f;
saaton=saat&0xf0;saaton=saaton>>4;
aygunbir=aygun&0x0f;
aygunon=aygun&0xf0;aygunon=aygunon>>4;
aybir=ay&0x0f;
ayon=ay&0xf0;ayon=ayon>>4;
yilbir=yil&0x0f;
yilon=yil&0xf0;yilon=yilon>>4;
}
//
void main()
{
set_tris_c(0x01);
lcd_init();
if (input(pin_c0))
{
ds1307_yaz();
delay_ms(10);
while (input(pin_c0));
}
while(1)
{
ds1307_oku();
cevir_dt();
printf(lcd_putc,"\fT:%01d%01d/%01d%01d/20%01d%01d ",aygunon,aygunbir,ayon,aybir,yilon,yilbir); // 02d% kullanımına dikkat:aygun'ü 2 basamaklı ve desimal formda gösteriri
//
switch(hafgun)
{
case 1:printf(lcd_putc,"PZT");break;
case 2:printf(lcd_putc,"SAL");break;
case 3:printf(lcd_putc,"CRS");break;
case 4:printf(lcd_putc,"PER");break;
case 5:printf(lcd_putc,"CUM");break;
case 6:printf(lcd_putc,"CTS");break;
case 7:printf(lcd_putc,"PAZ");break;
}
//
printf(lcd_putc,"\nSaat:%01d%01d/%01d%01d/%01d%01d",saaton,saatbir,dakikaon,dakikabir,saniyeon,saniyebir);
delay_ms(1000);
}}


***********************************
Başa dön
Kayıt: 02 Ksm 2009
Mesajlar: 34

Offline
eemozbulut
Tarih: 23 07 2010 18:43

kullanacagim entegre dsPIC33fj256gp710... Fakat ilk i2c'nin calisma mantigini anlamak icin proteus ta 16f877i kullaniorum. Yapmak istedigimi kisaca anlatayim. 5 voltluk bir gerilim uyguluyorum. 16f877nin icinde bulunan harici adc ile bu 5 boltu ornekliyorum ve giriste 5 voltu pot ile degistiriorum. Sonuc olarak bunu calistirdim. Ama yapmak istedigim pot ile uygulayacagim gerilimi adc ile cevirip i2c ile DAC(MAX5821) a aktarip cikis almak. Fakat bu isi yapamadim. Takildigim nokta 16f877 de ki i2c yi aktif hale getirip SDA ve SDL den sinyal alamiyorum. Pic in icindeki i2c yi nasil aktif hale getirebilirm?
Başa dön
Kayıt: 14 Tem 2009
Mesajlar: 221

Offline
salih-46
Tarih: 23 07 2010 20:09

i2c


yukarıda vermiş olduğum uygulamayı max5821'e göre uyarlayabilirsin...
Başa dön
Kayıt: 02 Ksm 2009
Mesajlar: 34

Offline
eemozbulut
Tarih: 27 07 2010 23:48

i2c_start();
i2c_write(0xd0); ? buradaki 0x90 adresini nerden buldun?
i2c_write(0x00);
i2c_stop();
i2c_start();
i2c_write(0xd1);
saniye=i2c_read(1); ?parantez icindeki 1 nerden geldi?
dakika=i2c_read(1);
saat=i2c_read(1);
hafgun=i2c_read(1);
aygun=i2c_read(1);
ay=i2c_read(1);
yil=i2c_read(1);
i2c_stop();
}



dostum sanirim bu isten biraz anliorsun eger vaktin vrsa msn ekleyebilirmisin. 10 gun icinde bitirmem gereken bir bitirme tezi var ve su anda gercekten elim kolum bagli duruorum. burada soracam fakat burada bekleme suresi gercekten cok uzun oluor. msnimi vereyim eklersen sevinirim. ozbulut_fatih@hotmail.com
Başa dön



Mikrodenetleyicilerde I2C Protokolu kullanimi


Benzer Konular
- dsa iletişim protokolu
- Resimli Simulink Kullanimi Turkce
- Mikrodenetleyicilerde I2C Protokolu kullanimi

- Dijital Filtreleme ADC-DAC kullanimi

- enerji analizoru nedir kullanimi tanimi yapisi
- haberleşme protokolu yardım
- pic basic pro ile usart kullanimi
- s7 200 Micromaster USS protokolu video anlatımı ve proje
- 16f877 keypad yapimi ve kullanimi

- TEİAS Ile Yapilan Kisa Devre Analizleri Protokolu

- Visul Basic ile Modbus Protokolu kullanma - Örnek kodlar-

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 Turkiye | Ads by Google Adsense | Design by Crazy Bat based