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

 
 
> Проблема с интерфейсом I2C, Не могу считать байт
Via4eslav
сообщение Apr 1 2007, 13:26
Сообщение #1





Группа: Новичок
Сообщений: 2
Регистрация: 1-04-07
Пользователь №: 26 671



Привет всем заглянувшим)
Пытаюсь организовать интерфейс I2C между lpc2106 и eeprom 24LC16B(не по прерываниям). Запись байта вроде бы проходит. Только не знаю, как проверить?? Чтение воплощаю через random read. По статусным кодам весь процесс протекает хорошо. Но вместо нужного мне байта в регистре I2DAT находится предыдущая информация (0xA1). Как достать нужный мне байт??? Кстати, среда программирования CrossWorks 1.3.
Контрольные вопросы:
1.Как проверить пишутся данные в ПЗУ, если чтение не удается??
2.Разумно ли пользоваться отладчиком в таких задачах??
3.Как прочитать байт из внешнего ПЗУ??
Вот кусок проги :

I2CONSET=(1<<I2C_STA); // повторное состояние старт
I2CONCLR=(1<<I2C_SI); // сброс бита прерывания
I2CONCLR=(1<<I2C_STA); // чистим бит старта
I2DAT=0xa1; // операция на чтение
I2CONCLR=(1<<I2C_SI); // сброс бита прерывания
data=I2DAT; // тут вся проблема: data =0xa1, вместо нужного мне записанного байта
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Via4eslav
сообщение Apr 2 2007, 07:23
Сообщение #2





Группа: Новичок
Сообщений: 2
Регистрация: 1-04-07
Пользователь №: 26 671



в А1 содержится номер блока, а адрес блока передается раньше.
почему не обновляется регистр данных??? А1 предыдущее содержимое регистра..
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 2 2007, 13:08
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Via4eslav @ Apr 2 2007, 06:23) *
в А1 содержится номер блока, а адрес блока передается раньше. почему не обновляется регистр данных??? А1 предыдущее содержимое регистра..
Дайте весь минимально необходимый код. В ваших строчках не видно ожидания окончаний обмена. и еще:
I2CONCLR=(1<<I2C_SI); // сброс бита прерывания
I2CONCLR=(1<<I2C_STA); // чистим бит старта
лучше объединить в одну команду I2CONCLR=(1<<I2C_SI)|(1<<I2C_STA);


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 09:27
Рейтинг@Mail.ru


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