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

 
 
> SAM7 + Mega8 и I2C
beer_warrior
сообщение Mar 10 2007, 17:35
Сообщение #1


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

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



Работаю со связкой - SAM7 + Mega8. SAM7 пишет управляющий байт и читает байт статуса.
И вот интересная картина получается. Поставил как возврат статуса константу 0x55.
1. После включения питания первое чтение 0x55, второе 0xFF, все последующие - 0x55.
2. После записи первое чтение 0xFF, все последующие - 0x55.

На код грешить боюсь - для связки мега-мега обкатан многократно. SAM7 без особых проблем работает с 24с02 на той же шине.

Мне кажется допускаю какую-то логическую неувязку в работе с шиной.(Не закрываю обмен или что-то подобное)


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
beer_warrior
сообщение Mar 10 2007, 20:35
Сообщение #2


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

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



Цитата
TWI_RHR; // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Не понял смысла.


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


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(beer_warrior @ Mar 10 2007, 20:35) *
Цитата
TWI_RHR; // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Не понял смысла.

Читаем мусор который с очень большой вероятностью возникнет в TWI_RHR
после выставления AT91C_TWI_MSEN
А еще после AT91C_TWI_MSEN
1 = As soon as data byte is transferred from TWI_THR to internal shifter or if a NACK error is detected, TXRDY is set at the same time as TXCOMP and NACK. TXRDY is also set when MSEN is set (enable TWI).

Так что искать логику в TWI на SAM7 нет смысла, нужно искать пути как заставить его работать smile.gif
Особенно повеселило вот это из даташита:
In master read mode, if a NACK bit is received, the STOP is automatically performed.

для байтового обмена Atmel рекомендует такие последовательности:
чтение
Код
//* Set control register and send start
*AT91C_TWI_CR = AT91C_TWI_START | AT91C_TWI_MSEN | AT91C_TWI_STOP;

//* Wait complete by TXCOMP or TXRDY
Status = *AT91C_TWI_SR;
while (!(status & AT91C_TWI_TXCOMP)){
Status = *AT91C_TWI_SR; }

//* Get data
Value = *AT91C_TWI_RHR;

запись
Код
//* Set control register
*AT91C_TWI_CR = AT91C_TWI_START | AT91C_TWI_MSEN | AT91C_TWI_STOP;

//* Set Data register for start transmission
*AT91C_TWI_THR = 0XAA;

//* Wait end transmission
Status = *AT91C_TWI_SR;
while (!(status & AT91C_TWI_TXCOMP)){
Status = *AT91C_TWI_SR; }

то есть START и STOP выставляем одновременно перед приемом передачей 1 байта
только ИМХО, там все равно не все чисто !
например при записи вы можете вобще не выставлять AT91C_TWI_START
передача начнется в любом случае при записи *AT91C_TWI_THR = 0XAA;

Кстати, а чем еще у Вас занята мега ?
Разрешены ли какие-то прерывания еще ?
Если разрешены, то сколько времени они занимают ?
какая частота i2c ?
это все имеет значение sad.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- beer_warrior   SAM7 + Mega8 и I2C   Mar 10 2007, 17:35
- - singlskv   Цитата(beer_warrior @ Mar 10 2007, 17:35)...   Mar 10 2007, 18:07
- - beer_warrior   SAM работает поллингом, проще некуда: Кодbool Read...   Mar 10 2007, 19:09
- - beer_warrior   Еще интересный эффект всплыл. Попробовал в промежу...   Mar 10 2007, 19:40
|- - singlskv   Цитата(beer_warrior @ Mar 10 2007, 19:40)...   Mar 10 2007, 20:02
- - beer_warrior   Код//---------------------------------------------...   Mar 10 2007, 20:14
|- - singlskv   для начала попробуйте вот так: Цитата(beer_warrior...   Mar 10 2007, 20:28
- - beer_warrior   ЦитатаТак что искать логику в TWI на SAM7 нет смыс...   Mar 10 2007, 21:47
|- - singlskv   Цитата(beer_warrior @ Mar 10 2007, 21:47)...   Mar 10 2007, 22:06
- - beer_warrior   Значит так, проблема решена следующим образом: Код...   Mar 10 2007, 22:13
|- - singlskv   Цитата(beer_warrior @ Mar 10 2007, 22:13)...   Mar 10 2007, 22:49
- - beer_warrior   ЦитатаЯ думаю что переносить пока рано С мегой там...   Mar 10 2007, 22:37
- - beer_warrior   ЦитатаЯ бы в Вашем коде тоже кое-что поменял. Согл...   Mar 10 2007, 23:34
|- - singlskv   Цитата(beer_warrior @ Mar 10 2007, 23:34)...   Mar 11 2007, 02:23
- - singlskv   ЦитатаЦитата основная проблема TWI на SAM7 это то,...   Mar 11 2007, 01:42
- - beer_warrior   Цитата"Модуль TWI прекрасно подходит для обме...   Mar 11 2007, 11:18
|- - singlskv   Цитата(beer_warrior @ Mar 11 2007, 11:18)...   Mar 15 2007, 03:08
- - _dem   Кстати, решение по остановке TWI у SAM есть - про...   Aug 3 2007, 15:12
- - SasaVitebsk   Забавно иногда смотреть. Разные программисты в раз...   Aug 3 2007, 19:04
|- - singlskv   Цитата(SasaVitebsk @ Aug 3 2007, 23:04) К...   Aug 3 2007, 22:14
- - SasaVitebsk   Мужчина!   Aug 4 2007, 18:52
|- - singlskv   Цитата(SasaVitebsk @ Aug 4 2007, 22:52) М...   Aug 4 2007, 19:26
- - Kirill Frolov   Цитата(beer_warrior @ Mar 10 2007, 21:35)...   Aug 6 2007, 23:33


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

 


RSS Текстовая версия Сейчас: 25th June 2025 - 21:42
Рейтинг@Mail.ru


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