реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
Eugene.L
сообщение Jul 16 2009, 12:22
Сообщение #1





Группа: Новичок
Сообщений: 3
Регистрация: 6-01-09
Пользователь №: 42 952



Доброго времени суток всем. С армами дружу совсем недавно, вот столкнулся с проблемой решения которой пока не нахожу.
Контроллер сопряжен через I2C с ЦАПом ad5315 по средствам I2C. МК должен работать в режиме МАСТЕР соотвественно ЦАП в режиме СЛЕЙВ. Задача проста, послать по шине адрес ЦАПа, указатель (Pointer) и значения старший байт и младший, всего получается 4 байта.
Как я понял, необходимо для начала записать в регистр I2С0ADR - адрес ведомого устройства т.е. моего ЦАПа(или этот регистр хранит адрес самого МК при работе в слейв режиме???). Далее в I2С0DAT пишем поинтер, после чего :
I2С0CONCLR = 0x000000FF; //Clear all I2C settings
I2С0CONSET = 0x00000040; //Enable the I2C interface
I2С0CONSET = 0x00000020; //Start condition
НО!! после данных операций мне же надо проверить бит подтверждения ACK? Проверяю его вычитав I2С0STAT, но почемуто ЦАП мне не присылает его. В чем я неправ?
2й вопос
Возможно ли повторить данные операции для передачи последующих данных?
Зарание спасибо!
П.С. если у кого тоуже есть готовая процедурка для подобных задач, буду очень признателен если позволите на нее взглянуть. smile.gif
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 16 2009, 12:51
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Eugene.L @ Jul 16 2009, 15:22) *
Доброго времени суток всем. С армами дружу совсем недавно...

Ну, поскольку I2C контроллеру используемому в LPC уже десятки лет, то достаточна и дружба с, например, 51 smile.gif.
Цитата
П.С. если у кого тоуже есть готовая процедурка для подобных задач, буду очень признателен если позволите на нее взглянуть. smile.gif

Берем образцы исходников работы с I2C с сайта призводителя. На этом форуме тоже неоднократно выкладывались, в том числе и мной.
Годятся и можество примеров любых филипсовских контроллеров и соответственно тонны описаний работы.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Eugene.L
сообщение Jul 16 2009, 14:56
Сообщение #3





Группа: Новичок
Сообщений: 3
Регистрация: 6-01-09
Пользователь №: 42 952



Цитата(zltigo @ Jul 16 2009, 15:51) *
Ну, поскольку I2C контроллеру используемому в LPC уже десятки лет, то достаточна и дружба с, например, 51 smile.gif.

Берем образцы исходников работы с I2C с сайта призводителя. На этом форуме тоже неоднократно выкладывались, в том числе и мной.
Годятся и можество примеров любых филипсовских контроллеров и соответственно тонны описаний работы.


Спасибо за скорый ответ. Нашел проблему такиsmile.gif....дело было d подтягивающих резисторах, чуток с номиналом ошибся, теперь почти все гуд...
Вот написал процедуру для передачи по И2С:
Код
void SetDACI2C(int Point, int DACh,int DACl)
{
I2C0CONCLR     = 0x000000FF;                    //Clear all I2C settings
I2C0CONSET     = 0x00000040;                     //Enable the I2C interface
I2C0CONSET     = 0x00000020;
     while(I2C0STAT!= 0x08);
I2C0DAT = 0x18;                                                      //Send Address of AD5315
I2C0CONCLR     = 0x08;
     while(I2C0STAT!= 0x18);
I2C0DAT = Point;                                                      //Send Pointer for select DAC#
I2C0CONCLR     = 0x08;
     while(I2C0STAT!= 0x28);
I2C0DAT = DACh;                                                     // Send High Byte of value
I2C0CONCLR     = 0x08;
     while(I2C0STAT!= 0x28);
I2C0DAT = DACl;                                                     // Send Low Byte of value
I2C0CONCLR     = 0x28;


но теперь новая трабла, когда передаю байт данных I2C0DAT = Point; мне в подтверждение приходит код 0x08h (START Transmitted). не подскажете в чем ошибка?
Спасибо
Причина редактирования: Оформление цитаты исходника.
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Jul 16 2009, 20:27
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



У меня после передачи старт-условия есть
I2CONCLR = 0x20; //--- Сбрасываем флаг обработки старт условия ---

Но вы бы лучше поискали исходники чьи-нибудь, что вам предлагали.
У меня как-то посложнее написано. Попытки обработать ситуёвины нестандартные предусмотрены.
Go to the top of the page
 
+Quote Post
Eugene.L
сообщение Jul 17 2009, 06:51
Сообщение #5





Группа: Новичок
Сообщений: 3
Регистрация: 6-01-09
Пользователь №: 42 952



Цитата(SasaVitebsk @ Jul 16 2009, 23:27) *
У меня после передачи старт-условия есть
I2CONCLR = 0x20; //--- Сбрасываем флаг обработки старт условия ---

Но вы бы лучше поискали исходники чьи-нибудь, что вам предлагали.
У меня как-то посложнее написано. Попытки обработать ситуёвины нестандартные предусмотрены.

Спасибо, помоглоsmile.gif
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 14th July 2025 - 20:16
Рейтинг@Mail.ru


Страница сгенерированна за 0.01376 секунд с 7
ELECTRONIX ©2004-2016