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

 
 
> AT91SAM9263 и I2C, Не запускается.
sashad
сообщение Oct 26 2011, 14:54
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 6-07-05
Пользователь №: 6 587



Не идут синхроимпульсы через TWCK.
Сконфигурировал аппаратный TWI по даташит, пытаюсь записать байт, если выполнить пошагово в отладчике, то после AT91C_BASE_TWI->TWI_THR = data; обмен идет нормально.
Если выполнять код без остановки, то проходят 2 - 3 синхроимпульса, потом на порту устанавливается единица, причем процесс носит случайный характер, может застрять в 0 или 1, также варьируется количество синхроимпульсов.

Даже не знаю в какую сторону копать , ПулАП установлен 2,5кОм.

Если поставить останов на while, обмен также идет нормально, если после while, опять начинается ерунда, как будто процессор мешает работе модуля TWI, если ядро остановить отладчиком, то все нормально.

AT91C_BASE_TWI->TWI_THR = data;
while(!(AT91C_BASE_TWI->TWI_SR & AT91C_TWI_TXCOMP));
return;

Сообщение отредактировал sashad - Oct 26 2011, 14:56
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
DpInRock
сообщение Nov 6 2011, 10:48
Сообщение #2


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Цитата
Да вообще-то это известный факт

Вот эта ветка тоже бы могла стать "общеизвестным фактом".

К слову, я действительно никогда не использую флаги ошибок периферии (любой). За бессмысленностью.
--
Ошибки не существует, пока не выяснены точно условия ее возникновения.
Ибо случайные сбои могут быть вызваны некачественным изготовлением микросхемы.
А вот регулярные - чаще всего ошибкой разработчиков.
И вот регулярные сбои достаточно легко определить. И задокументировать.

Пока вот такой задокументированности я не встречал. (Правда и не искал, ибо проблемы не стояло).

Сообщение отредактировал DpInRock - Nov 6 2011, 10:55


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
sasamy
сообщение Nov 6 2011, 12:21
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(DpInRock @ Nov 6 2011, 14:48) *
Пока вот такой задокументированности я не встречал. (Правда и не искал, ибо проблемы не стояло).


Проблема там - у TWI нет FIFO и он почти у всей линейки не подключен к PDC (только начиная с at91sam9g.. они догадались сделать это), любая незначительная задержка записи в регистр для передачи - контроллер автоматом отпраляет STOP и завершает ее.

Сообщение отредактировал sasamy - Nov 6 2011, 12:21
Go to the top of the page
 
+Quote Post
DmitryM
сообщение Nov 7 2011, 04:12
Сообщение #4


Знающий
****

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



Цитата(sasamy @ Nov 6 2011, 16:21) *
Проблема там - у TWI нет FIFO и он почти у всей линейки не подключен к PDC (только начиная с at91sam9g.. они догадались сделать это), любая незначительная задержка записи в регистр для передачи - контроллер автоматом отпраляет STOP и завершает ее.

Решается прерываниями.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Nov 7 2011, 08:03
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(DmitryM @ Nov 7 2011, 08:12) *
Решается прерываниями.

"Решается", ага. Только если система "тянет" 45кГц прерываний, что бывает далеко не всегда.
Go to the top of the page
 
+Quote Post
DmitryM
сообщение Nov 7 2011, 19:26
Сообщение #6


Знающий
****

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



Цитата(aaarrr @ Nov 7 2011, 12:03) *
"Решается", ага. Только если система "тянет" 45кГц прерываний, что бывает далеко не всегда.

Мы говорим о конкретных камнях или в теории?
Имхо, изначально медленную I2C постоянно турзучить?? Что-то в консерватории надо поменять.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Nov 7 2011, 19:43
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(DmitryM @ Nov 7 2011, 23:26) *
Мы говорим о конкретных камнях или в теории?
Имхо, изначально медленную I2C постоянно турзучить?? Что-то в консерватории надо поменять.

Если вспомнить теорию, то "изначально медленная" I2C уже более 10 лет поддерживает скорости до 3.4Мбит/с.
Если же спуститься на грешную землю, то хоть в атмеловских поделиях и заявлена скорость всего 400кбит/с,
кривизна реализации требует именно упомянутой выше частоты прерываний даже при использовании PDC.
В консерватории действительно надо что-то менять. Но сделать это должны атмеловские инженеры.
Go to the top of the page
 
+Quote Post
DmitryM
сообщение Nov 8 2011, 05:29
Сообщение #8


Знающий
****

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



Цитата(aaarrr @ Nov 7 2011, 23:43) *
Если вспомнить теорию, то "изначально медленная" I2C уже более 10 лет поддерживает скорости до 3.4Мбит/с.
Если же спуститься на грешную землю, то хоть в атмеловских поделиях и заявлена скорость всего 400кбит/с,
кривизна реализации требует именно упомянутой выше частоты прерываний даже при использовании PDC.
В консерватории действительно надо что-то менять. Но сделать это должны атмеловские инженеры.

Если Вас не устраивает Atmel'овская реализация используйте свою софтовую, никто же не запрещает и не настаивает, но не надо во всеуслышание заявлять о глючности TWI на AT91SAM. TWI AT91SAM работает в соответствии с datasheet. Про грабли TWI RM9200 я писал здесь на форуме, но это тоже обходится не слишком большими телодвижениями.
Бывают реализации и хуже.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Nov 8 2011, 10:30
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(DmitryM @ Nov 8 2011, 09:29) *
...не надо во всеуслышание заявлять о глючности TWI на AT91SAM.

Почему же не надо? Очень даже надо. Хотя бы для того, чтобы те, кто впервые сталкивается с TWI, не питали лишних иллюзий и не тратили зря время.

Не спорю, его можно использовать, но далеко не во всех случаях. Если кто-то готов поделиться историей успеха при работе в связке с SAA7113 или AD9887 - с удовольствием послушаю.
Go to the top of the page
 
+Quote Post
DmitryM
сообщение Nov 8 2011, 12:56
Сообщение #10


Знающий
****

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



Цитата(aaarrr @ Nov 8 2011, 14:30) *
Почему же не надо? Очень даже надо. Хотя бы для того, чтобы те, кто впервые сталкивается с TWI, не питали лишних иллюзий и не тратили зря время.

Не спорю, его можно использовать, но далеко не во всех случаях. Если кто-то готов поделиться историей успеха при работе в связке с SAA7113 или AD9887 - с удовольствием послушаю.

Ну дык это не глючность, а ограниченность. Eeprom 24LC работает, сканер клавиатуры LM8333 работает, кодеки серии TLV320 (Texas), ForteMedia работает, это ближайшее что по памяти. Хотя странно, у приведенных Вами микросхем максимальная частота 100кГц, откуда там 45кГц прерываний? Но всей инфраструктуры не знаю, оспаривать не буду.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Nov 8 2011, 14:06
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(DmitryM @ Nov 8 2011, 16:56) *
Ну дык это не глючность, а ограниченность. Eeprom 24LC работает, сканер клавиатуры LM8333 работает, кодеки серии TLV320 (Texas), ForteMedia работает, это ближайшее что по памяти.

Дык удручает именно эта ограниченность. Когда на этапе проектирования не можешь сказать, будут проблемы, или на этот раз обойдется.

Цитата(DmitryM @ Nov 8 2011, 16:56) *
Хотя странно, у приведенных Вами микросхем максимальная частота 100кГц, откуда там 45кГц прерываний?

"Там" и до прерываний толком не доходит: SAA7113 на SAM7X при чтении в произвольный момент времени обрывает передачу (NAK ловит по всей видимости), AD9887 на SAM3U просто не отзывается по своему адресу. При этом те же микросхемы на других хостах (в т.ч. программных на тех же процессорах) работают без малейших нареканий.

EEPROM'ы работают, всякие TLV и TVP из тех, что мне попадались - тоже.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- sashad   AT91SAM9263 и I2C   Oct 26 2011, 14:54
- - sashad   Пришлось сделать програмный I2C   Nov 3 2011, 18:38
|- - aaarrr   Цитата(sashad @ Nov 3 2011, 22:38) Пришло...   Nov 3 2011, 19:31
- - Aleph   Попробуйте сразу после Цитата(sashad @ Oct 26...   Nov 4 2011, 09:07
- - DpInRock   Неча на TWI пенять. Работает безукоризненно.   Nov 4 2011, 12:27
|- - aaarrr   Цитата(DpInRock @ Nov 4 2011, 16:27) Рабо...   Nov 4 2011, 19:23
|- - sasamy   Цитата(DpInRock @ Nov 4 2011, 16:27) Неча...   Nov 6 2011, 10:25
- - Aleph   Цитата(aaarrr @ Nov 4 2011, 20:23) Работа...   Nov 4 2011, 23:01
- - SimpleSoft   Если посылаете 1 байт то сразу засылайте STOP, а п...   Nov 5 2011, 07:47
- - DpInRock   ЦитатаРаботает непредсказуемо на всей линейке AT91...   Nov 5 2011, 08:46
|- - aaarrr   Цитата(DpInRock @ Nov 5 2011, 12:46) Если...   Nov 5 2011, 09:21
- - DpInRock   Логично предположить, что если TWI работает с сотн...   Nov 5 2011, 10:57
|- - aaarrr   Цитата(DpInRock @ Nov 5 2011, 14:57) Логи...   Nov 5 2011, 12:32
||- - singlskv   Цитата(aaarrr @ Nov 8 2011, 17:06) Дык уд...   Nov 8 2011, 18:28
|- - aaarrr   Цитата(sasamy @ Nov 6 2011, 16:21) Пробле...   Nov 7 2011, 09:16
- - *rust*   Полностью разделяю точку зрения aaarrr. Могу конкр...   Nov 11 2011, 09:40
- - sonycman   Цитата(*rust* @ Nov 11 2011, 13:40) Заста...   Dec 29 2011, 07:22


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

 


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


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