atmega16+ds1307 i2c sorularım

Başlatan ilhan_mkp, 08 Ocak 2013, 23:57:05

ilhan_mkp



arkadaşlar ds1307 i2c ile haberleşiyor daha önce bu rtcyi basic ile kullandım.
şimdi atmega16 ile asm ile kullanmak istiyorum fakat  avr ile i2c nasıl kullanılır hiç bilmiyorum.

şu ana kadar anladıklarımı yazayım.
0x00 adresi saniye bcd formatında 0,1,2,3bitler birler basamağı 4,5,6bitler onlar basamağı
0x00 adresi 7.bit low ise osilatör aktif high ise pasif

0x01 adresi bcd olayları aynı 7.bit rezerve

0x02 adresi 0,1,2,3.bitler saat birler 6.bit high ise 12saat modu aktif ve 4.bit saat onlar basamağı 5.bit öğleden önce sonra bilgisi
6.bit low ise 24 saat modu aktif 5.bit saat onlar basamağı

adresler ne içeriyor anladım ama  i2c bilgim sıfır okudum okudum bişi anlamadım.
şimdi bu dataları nasıl gönderip alıcam avrde bu i2c olayı sanırım twi diye geçiyor.
iletişim hızı ve kuralları hakkında biraz ip ucu verirseniz atmega16 datasheetini biraz inceleyince gerisi gelecek sanırım.




bocek

1 ya da 0. işte 'bit'ün mesele..


ilhan_mkp

hocam örneklere baktım biraz bişiler şekillendi ama ben hala i2c olayını anlamış değili değilim adım adım atmega16 data sheeti üzerinden yardımcı olsanız örneklerden değilde datasheetlerden bişiler yapmayı öğrensem.

yazma adresini nasıl göndericez
slave bize ne cevap vericek cevap verezse ne olur bunları merak diyorum.

bocek

#4
Siz asm istediğiniz için o örneği verdim ama c'de daha anlaşılır örnekler var.
i2c için en yaygın kütüphane Peter Fleury'ninkidir.
Şurda:
http://homepage.hispeed.ch/peterfleury/group__pfleury__ic2master.html

hem web sayfasında hem de kodların içinde satır satır açıklamalar var. i2c nasıl başlatılır, baud rate nasıl ayarlanır, okuma/yazma adresi nasıl verilir, slave'den cevap gelmezse ne olur vs. hepsi açık ve net.
1 ya da 0. işte 'bit'ün mesele..

ilhan_mkp

hocam c olmasinda sıkıntı yok anlayinca asmye kendim uyarlamaya calisirim daha öğretici olur

Kabil ATICI

i2c formatı iletişimde veriyi kim gönderiyorsa veri gönderdikten sonraki saat sinyalinde alıcıdan bir ack (kabul sinyali) genellikle 0 şeklinde veri bekler. master veya slave fark etmez. Eğer bu ack sinyali gelmezse verini alınmadığı kabul edilir ve o andaki veri iletimi sonlandırılır.(i2c sonlandırma işlem ile) Ve o adres için tekrar baştan başlanır.
ambar7

ilhan_mkp

nekadar süre gelmezse sonlanırmak gerekir.
data sheette bunu nereden çıkartırım

Kabil ATICI

SCL tarafından sağlanan 1 saat darbesi. Çünkü gelen ikinci saat darbesinde diğer baytın başlaması gerekir. Bu sorun ancak aletlerin iletişim frekansından yüksek olursa, bozulur veya bir nedenle sinyal bozulursa oluşur ki bu durumda zaten baştan başlamayı gerektirir. Sadece karar vereceğin aletin ne kadar baştan başlatacağın. Çünkü sürekli baştan başlatırsan sistemin sonsuz döngüyü girer. Bunun için belli bir denemeden sonra hata olarak geri bildirim yapılmalıdır.
ambar7

mehmet

I2C için önce eeprom(24Cxx) ile başlasaydınız keşke.

Saygılar...
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr