| Форум РадиоКот https://radiokot.ru/forum/ |
|
| Аппаратный I2C https://radiokot.ru/forum/viewtopic.php?f=58&t=151791 |
Страница 1 из 1 |
| Автор: | EclipsV [ Ср янв 17, 2018 04:28:49 ] |
| Заголовок сообщения: | Аппаратный I2C |
Доброго времени суток,столкнулся со странным поведением I2C. На шине два устройства PCF8574AT(одно устройство дисплей,второе размножитель портов) и мастер pic16f690. Проблема с инициализацией шины, она иногда виснет.Вот код который использую: void I2C_Start(){ I2C_Wait(); SEN=1; while(!SEN); } void I2C_Stop(){ I2C_Wait(); PEN=1; } void I2C_Wait(){ while((SSPSTAT&0x04)||(SSPCON2&0x1F)); } void I2C_TX(char buf_w){ I2C_Wait(); SSPBUF=buf_w; while(!R_W); } Проблема в циклах while(!SEN);while(!R_W), тут и зависает программа.Если их убрать проблем не возникает все работает как надо. Но в документации CN_00735a от микрочипа они есть. |
|
| Автор: | -=Vovka=- [ Ср янв 17, 2018 06:27:10 ] |
| Заголовок сообщения: | Re: Аппаратный I2C |
Поищите на сайте микрочипа, может там есть эррата насчет i2c... В циклы надо добавить переменную-счетчик и по ее обнулению вылет из цикла. Насколько мне известно, с железным i2c мало кто работает: намучившись, переходят на программный... |
|
| Автор: | EclipsV [ Чт янв 18, 2018 02:24:33 ] |
| Заголовок сообщения: | Re: Аппаратный I2C |
Если есть аппаратная поддержка, то думаю не стоит городить велосипед. Еще разобрал программу нашел 2 причины зависания:в первом случае неправильно выставил для одной из микрух ACK/NACK, вторая это проблема с подключеным PIc2Kit в режиме DEBUG без него все работает. Спасибо за совет, добавил счетчик при опросе флагов. |
|
| Автор: | VHEMaster [ Чт янв 25, 2018 18:39:25 ] |
| Заголовок сообщения: | Re: Аппаратный I2C |
Сколько геморроя у меня было когда два PICа пытался подружить между собой по I2C... Тут подводных каменей не сосчитать. |
|
| Автор: | -=Vovka=- [ Пт янв 26, 2018 06:11:00 ] |
| Заголовок сообщения: | Re: Аппаратный I2C |
Сколько раз я не пытался сделать на аппаратном i2c - заканчивалось программным... |
|
| Автор: | КРАМ [ Пт янв 26, 2018 15:33:38 ] |
| Заголовок сообщения: | Re: Аппаратный I2C |
Вопросы только со слейвом. Аппаратный мастер работает без проблем. В теме, по моему, никто вопрос про слейв не ставил. К слову, в PIC24FJ256GA702 мастер I2C вообще отлично работает через DMA. |
|
| Автор: | EclipsV [ Чт фев 08, 2018 02:31:51 ] |
| Заголовок сообщения: | Re: Аппаратный I2C |
Слейв пробавал на макетке, проблем не заметил.Но опять же в режиме DEBUG=ON, возможны зависания на флаге SEN. |
|
| Автор: | -=Vovka=- [ Чт фев 08, 2018 08:12:36 ] |
| Заголовок сообщения: | Re: Аппаратный I2C |
возможны зависания на флаге SEN. Таймером или циклом отслеживать...
|
|
| Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|


