Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

I2C интерфейс основи
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=10332
Страница 1 от 2

Автор:  polinom [ Пет Юли 20, 2012 9:56 pm ]
Заглавие:  I2C интерфейс основи

Ще съм благодарен на някой (най-вече човек с практичен опит ) да ми разясни едни пример за комуникация между модули използваща I2C интерфейса. Говоря за 8 битови PIC контролери (ако има значениe по конкретно PIC18f8720) и C18 компилатора на Microchip . Знам как комуникират,последователността от сигнали и тяхното значение, знам какво правят библиотечните функции предоставени в MPLAB (i2c.h имам предвид ), но някак си не мога да съставя коректна програма. Ето едно мое кодче( моля не се смейте ):
Код:
#include<p18f8720.h>
#include<stdio.h>
#include<i2c.h>
#pragma config WDT =OFF , OSC = HS , MODE = MC
unsigned char ch[] = "info";
void main(void)
{   
   SSPADD = 19;
   
   OpenI2C(SLAVE_7, SLEW_ON);
   StartI2C();
   puts(ch);
   StopI2C();
}

Целта ми е да се пращат някакви битове ,в случая низа ch="info", нямам конкретен устройство към което искам да го пратя. Може да го коментирате и дадете препоръки как да го организирам. И накрая не мога да разбра в режим Master как мога да адресирам повече от един slave, по скоро как изпращам адреса на slave.

Автор:  Cekins [ Пет Юли 20, 2012 10:08 pm ]
Заглавие:  Re: I2C интерфейс основи

Не стават така тия работи... Това не е пералня с две програми ...

Не се сърди ама в интернет има писано предостатъчно кое, как и защо. Освен това в даташита на почти всеки дивайс го има описан подробно. И като знаеш последователността тогава какво трябва да има след StartI2C?.

Автор:  Н'бабане Гт'муан'га [ Съб Юли 21, 2012 1:43 am ]
Заглавие:  Re: I2C интерфейс основи

puts() не може да вади данни на I2C освен ако не си дефинирал собствена функция _putchar()
Което ти май не си направил. Така, че позвай хелпа и функциите за трансфер на данни с I2C

Автор:  polinom [ Съб Юли 21, 2012 2:54 pm ]
Заглавие:  Re: I2C интерфейс основи

добре за puts() ето пример от http://www.electro-tech-online.com/cust ... ries-7.pdf
Code Example: unsigned char string[] = “data to send”;
putsI2C(string);
Иначе съм напълно съгласен с 1-вото мнение че не стават нещата туко така

Автор:  Н'бабане Гт'муан'га [ Съб Юли 21, 2012 3:53 pm ]
Заглавие:  Re: I2C интерфейс основи

Puts() и putsI2C() имат леека разлика помежду си...

Автор:  Cekins [ Съб Юли 21, 2012 4:44 pm ]
Заглавие:  Re: I2C интерфейс основи

Едва ли смисъла на I2C е да се пращат някви данни някъде в небитието. Та нали за това е целия гърч с адреси, тристейтнати линии и т.н. Като искаш да пращаш данни в "етера" ползвай SPI или UART...

Автор:  dan [ Съб Юли 21, 2012 5:38 pm ]
Заглавие:  Re: I2C интерфейс основи

Полиноме, защо си го слагаш този таралеж в гащите???
По калпав интерфейс от I2C няма. НЯМА! За начало по-добре направи нещото я с SPI, я по друг начин, ама да вземеш I2C-то за начало е направо мазохизъм. Накрая (особено ако си нервак ) дори и да го пуснеш нещото, няма да си съвсем сигурен защо и как работи. И 'защо онзи път не стана'....

Автор:  Dimitar [ Съб Юли 21, 2012 6:12 pm ]
Заглавие:  Re: I2C интерфейс основи

dan, I2C-то си е много хубав интерфейс даже и си има специфични приложения. Недейте така отказва хората и също така няма нищо лошо да се почне с него. Концепцията му не е кой знае колко трудна. Във всеки случай несравнимо по-лесна и проста от други серийни интерфейси като USB, Ethernet и т.н. Ако имаш накачени 10 чипа един за друг I2C-то е много по-добро от SPI и иска само 2 жици, докато SPI-я ще иска 12. Каква е далаверата да е серийното тогава, като става с жици като за паралелна шина. Та всичко си има ниши и приложения, а и дори I2C-то да няма приложение за сега не е зле да го знае като концепция.

polinom-е, като за начало се опитай да си изясниш концепцията на I2C интерфейса и превключи на мастър, вместо на слейв :D .

Автор:  dan [ Съб Юли 21, 2012 6:31 pm ]
Заглавие:  Re: I2C интерфейс основи

Аз не оспорвам предимствата на I2C-то. Даже съм го използвал точно за свързване на няколко сензори на една шина. Просто си е скапан интерфейса за начало (аз поне останах с впечатлението, че "Полинома" сега започва да се занимава).

Автор:  Dimitar [ Съб Юли 21, 2012 7:07 pm ]
Заглавие:  Re: I2C интерфейс основи

Ами и аз съм научил I2C-то веднага след RS232-то, ама не се сещам това с нещо да ми е попречило :D .

Автор:  MYXATA [ Съб Юли 21, 2012 9:15 pm ]
Заглавие:  Re: I2C интерфейс основи

dan написа:
...
По калпав интерфейс от I2C няма. НЯМА! За начало по-добре направи нещото я с SPI, я по друг начин, ама да вземеш I2C-то за начало е направо мазохизъм. Накрая (особено ако си нервак ) дори и да го пуснеш нещото, няма да си съвсем сигурен защо и как работи. И 'защо онзи път не стана'....

Dan, защо се изказваш неподготвен?
то и преди сме дискутирали и2ц, има си положителни страни и отрицателни, но с такова изказване означава само едно -> не си се занимавал достатъчно с микроконтролери ;)
Помня и Цецо не е възхитен о и2ц, но при положение, че във всички мобилни девайси от най-жълтите до айпадите и самсуните ->всичкото сезори са им на и2ц(има малки изключения, но те са за high speed ).

Полиноме
ети ти сбито начално 4етиво
http://www.robot-electronics.co.uk/acat ... orial.html

Автор:  dan [ Нед Юли 22, 2012 9:53 pm ]
Заглавие:  Re: I2C интерфейс основи

Уффф, не ми се обяснява, но... ще трябва.
1. Моя първоначален опит с I2C беше на нулева серия pic24. Еррата на този контролер беше... абе дълга. Та може още от тогава да има нещо по-скоро емоционално в отношението ми.
2. И горе съм споменал, че и2ц-то си има място.
3.Тук става въпрос за връзка между два контролера. => едва ли има нужда да е точно и2ц.
4. Имал съм вземане-даване с чипове, на които фронтовете на импулсите трябваше да бъдат до незнамси-колко нс, за да отчетат правилно данните
5. Ако човекът няма осцилоскоп под ръка (както е обикновено при начинаещите) ще има да се чуди дали , да речем, насрещното у-во не е изпратило ACK, или контролера не го е разбрал ...
6. Муха, пишкомерството кой колко се е занимавал с контролери или каквото и да е друго ми е чуждо. Тук има няколко образа, с които предполагам, че с удоволствие можете да обмените малко пишкометрични данни, но по-добре отвори нова тема, че да не осираме и тази.

Автор:  Н'бабане Гт'муан'га [ Пон Юли 23, 2012 2:45 am ]
Заглавие:  Re: I2C интерфейс основи

dan написа:
6. Муха, пишкомерството кой колко се е занимавал с контролери или каквото и да е друго ми е чуждо. Тук има няколко образа, с които предполагам, че с удоволствие можете да обмените малко пишкометрични данни, но по-добре отвори нова тема, че да не осираме и тази.


Поименно колега, поименно! :D

Автор:  Cekins [ Пон Юли 23, 2012 9:13 pm ]
Заглавие:  Re: I2C интерфейс основи

@dan - че е крив на пиковете крив е.

Ама с 18-ки само с готови библиотеки съм работил и всичките са си бачкали ок. Въобще и не съм го разучавал модула им.

За 24-ките с малко инат си направих една библиотека на асемблер.

Колкото до осцилоскопа - първите си устройства съм ги пускал без скоп. А досега само с един чип имах зор с пускането, ама вината не беше в хардуера.

И в общи линии не можеш да бягаш постоянно от този интерфейс - има доста интересни джаджи само с такъв. Даже честно казано го предпочитам за комуникация с няколко различни джаджи по платката. Примерно комбинацията RTC, EEPROM, термометър/и (и евентуално някой друга джиджавка) си става супер само на две жици.

Автор:  Цецо [ Вто Юли 24, 2012 8:42 am ]
Заглавие:  Re: I2C интерфейс основи

I2C е рядко дърво и точка по въпроса :) Към ден днешен, за да ползвам I2C, трябва да ми плащат поне двойна заплата :) Предпочитам да си изрутя 12 жици и да си пусна 10 SPI дивайса, от колкото да побъркам процесора от следене на евенти и обикаляне из безмислени стейт машини с 10 I2C дивайса.

А 1MHz I2C пък е 20 годишен ръждив голф с нови лети джанти. :)

Мнението ми да не се приема като препоръка.

Страница 1 от 2 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/