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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> TWI at91rm9200
sergeeff
сообщение Jan 30 2007, 22:36
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Коллеги!

Удалось ли кому реально использовать TWI для работы с EEPROM? Перепробовал все доступные примеры. Все работают абы как. На форуме www.at91.com народ рекомендует плюнуть на аппаратную реализацию и сделать все программно.

Какие есть мнения на сей счет?
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Jan 31 2007, 00:58
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Если не ошибаюсь блок единый для всех AT91. По сравнению с AT90 конечно отдыхает. Но тем не менее, с EEPROM работает нормально. (После некоторого секса). Исходники брал на Сахаре.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Jan 31 2007, 19:31
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Проблема, как часто бывает, лежала в области hardware. На шине i2c pull-up резисторы на 3.3 В стояли по 4к7. Поставили 1к5 - все железно заработало.
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Feb 1 2007, 16:17
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Кстати, а никто не делал TWI на прерываниях? А то либо система получается склонная к зависанию, либо таймауты ручками прикручивать.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Feb 1 2007, 18:08
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(beer_warrior @ Feb 1 2007, 17:17) *
Кстати, а никто не делал TWI на прерываниях? А то либо система получается склонная к зависанию, либо таймауты ручками прикручивать.



А про какие timeout'ы вопрос. Дождаться конца передачи? Или ack?
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Feb 1 2007, 18:48
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Я имею в виду оборванную транзакцию. Неважно ожидание ACK/NACK или TX_RDY/RX_RDY. Там запросто можно зависнуть в вечном ожидании. Впрочем часа два уже пишу.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
DmitryM
сообщение Dec 14 2010, 17:15
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840



Озадачился загрузкой с TWI в связи с проблемами с AT45. Благо на плате разведены часы DS1337 и доп.флешка серии 25. Вместо часов еепромину и поставил.
Написал прошивалку еепром (использую прерывания).
В процессе отладки обнаружил следующий феффект:
при первом чтении блока данных контроллер выставляет NACK и транзакция прекращается, понятное дело. И статусные регистры, само собой, о nack не слова. Сначала читал по байту, но долговато, неинтересно. Решил тем что, если сначала прочитать один байт, а потом повторить уже чтение всего блока данных, то считывается весь блок со всеми ACK, NACK и прочими соответствиями. Заинтересовало то, что RomBoot делает по такому же алгоритму. Идут две попытки чтения. Есть энтузиасты проверить?? На двух экземплярах, на которых пробовал, эффект воспроизводится.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Dec 14 2010, 18:10
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Я с прерываниями сделал согласно последним примерам Atmel'a. Все там работает, единственное надо TWI задать максимальный приоритет прерывания.
Go to the top of the page
 
+Quote Post
DmitryM
сообщение Dec 15 2010, 02:08
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840



Цитата(sergeeff @ Dec 15 2010, 00:10) *
Я с прерываниями сделал согласно последним примерам Atmel'a. Все там работает, единственное надо TWI задать максимальный приоритет прерывания.


А не дадите ссылку на пример с прерываниями, то все что видел - это polling
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Dec 15 2010, 04:48
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(DmitryM @ Dec 15 2010, 08:08) *
А не дадите ссылку на пример с прерываниями, то все что видел - это polling


Прикрепленные файлы
Прикрепленный файл  basic_twi_eeprom_project_at91sam9g20_ek_iar.zip ( 130.83 килобайт ) Кол-во скачиваний: 21
 
Go to the top of the page
 
+Quote Post
kovigor
сообщение Dec 15 2010, 06:02
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(beer_warrior @ Jan 31 2007, 06:58) *
Если не ошибаюсь блок единый для всех AT91. По сравнению с AT90 конечно отдыхает. Но тем не менее, с EEPROM работает нормально. (После некоторого секса). Исходники брал на Сахаре.


С EEPROM работает без особых проблем. Хотя сам этот блок в AT91 - редкое барахло ...
Go to the top of the page
 
+Quote Post
DmitryM
сообщение Dec 15 2010, 06:09
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840



Речь про AT91RM9200, а не про современные. В текущих, по крайней мере семерках, этого эффекта нет.
Go to the top of the page
 
+Quote Post
freeman_
сообщение Dec 17 2010, 05:18
Сообщение #13





Группа: Участник
Сообщений: 11
Регистрация: 2-12-10
Пользователь №: 61 334



Общаюсь через TWI на AT91RM9200 c RTC. В отладке через JTAG все отлично работает. А при запуске вне отладчика перестают выставляться флаги RXRDY и TXRDY. С чем это может быть связано?

Сообщение отредактировал freeman_ - Dec 17 2010, 05:18
Go to the top of the page
 
+Quote Post
DmitryM
сообщение Dec 17 2010, 16:07
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840



Цитата(freeman_ @ Dec 17 2010, 11:18) *
Общаюсь через TWI на AT91RM9200 c RTC. В отладке через JTAG все отлично работает. А при запуске вне отладчика перестают выставляться флаги RXRDY и TXRDY. С чем это может быть связано?


Если работаете через прерывания и они у вас не одни, нужно использовать __ARMLIB_isrEnableIRQ, иначе прерывания пропадают ( это CW1.5). Или как здесь уже говорили, высший приоритет.
Go to the top of the page
 
+Quote Post
freeman_
сообщение Dec 20 2010, 04:40
Сообщение #15





Группа: Участник
Сообщений: 11
Регистрация: 2-12-10
Пользователь №: 61 334



нет для TWI прерывания не использую
Go to the top of the page
 
+Quote Post

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

 


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


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