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

 
 
> 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
Ответов
singlskv
сообщение Mar 11 2007, 01:42
Сообщение #2


дятел
*****

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



Цитата
Цитата

основная проблема TWI на SAM7 это то, что он работает в "синхронном" режиме То есть ему глубоко наплевать на то что мега держит линию SCL в 0(пока данные не готовы)и у него (SAM7) весь трансфер происходит "синхронно"то есть SAM7 вобще не мониторит состояние линии SCL перед тем как начать передачу!

Опс! Спасибо за наколку. Как-то внимания не обращал.

А они(Atmel) нигде об этом прямо и не пишут
У них есть только одна фраза на этот счет в документации:
"Модуль TWI прекрасно подходит для обмена информацией с EEPROM производства Atmel"
примерно так smile.gif

>> if(hTimer_1ms) hTimer_1ms();
>> if(hTimer_1s) hTimer_1s();
Насколько бысторо выполняются эти 2 функции ?
Цитата
Цитата

Я бы в Вашем коде тоже кое-что поменял.

Согласен, код писан 3 года назад и с тех пор кочует по проектам. Вижу косяки, только руки не доходят преписать.

Код
        case TWS_DATAW_ACK:
            //SLAVE has been transmit a byte and got ACK
            //SLAVE transmit next byte
            {
            break;
            }

любая транзакция(прерывание) по i2c должна заканчиваться записью TWINT в TWCR
иначе будем бесконечно ловить прерывания
по этому в конце switch обязательно должно быть:
default:
TWCR=(1<<TWINT)|(1<<TWEN)|(1<<TWEA)|(1<<TWIE);

так же обязательно ловить код
#define I2C_BUS_ERROR 0xF8

примерно так:
case (I2c_BUS_ERROR):
TWCR= (1<<TWINT)|(1<<TWSTO)|(1<<TWEN)|(1<<TWEA)|(1<<TWIE);

продолжение следует ....
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_RHR; // !!!!!!...   Mar 10 2007, 20:35
|- - singlskv   Цитата(beer_warrior @ Mar 10 2007, 20:35)...   Mar 10 2007, 21:26
- - 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
- - 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 Текстовая версия Сейчас: 28th June 2025 - 22:47
Рейтинг@Mail.ru


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