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

 
 
> Из Atmega8 в Atmega16, TWI не хочет мигрировать
Basilkmv06
сообщение Jun 6 2006, 17:16
Сообщение #1





Группа: Участник
Сообщений: 13
Регистрация: 14-01-06
Пользователь №: 13 169



Очень внимательно прочитал ветку "Проблема с TWI", но вопросы остались.
Суть вопроса такова. До сихпор пользовался мегой8 и ее аппаратным TWI в слайве, но быстрый переход на мегу16 не удался. После долгих ковыряний всяких доков написал маленький софт на
LPT (что-то вроде мастера TWI). Пришел к выводу, что при таких равных условиях
1. Оба кристала подключены по одинаковой схеме;
2. Оба работают на внутреннем генераторе 8МГц;
3. Оба кристала выполняют одинаковый код
мега16 отказывается работать уже на частоте CLK ~150кГц, когда как м8 только на ~270кГц.
Обе проца 16мегагерцовые, единственное м8-PDIP, а м16- TQFP. В чем может быть пичина?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
bodja74
сообщение Jun 9 2006, 16:19
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984



А с чего Вы взяли что TWBR=0x08 это Bit Rate: 250,000 kHz ?
TWBR=0x08 это 166.666 Кгц ,что мы и имеем smile.gif

Вообщето по идее слейву должно быть все равно значение TWBR,но вполне возможно мегу 16 решили доработать и использовать TWBR для формирования длительности ACK.

PS Тяжко мне в Си разобраться sad.gif
Go to the top of the page
 
+Quote Post
Basilkmv06
сообщение Jun 9 2006, 17:13
Сообщение #3





Группа: Участник
Сообщений: 13
Регистрация: 14-01-06
Пользователь №: 13 169



Цитата(bodja74 @ Jun 9 2006, 20:19) *
А с чего Вы взяли что TWBR=0x08 это Bit Rate: 250,000 kHz ?
TWBR=0x08 это 166.666 Кгц ,что мы и имеем smile.gif

Вообщето по идее слейву должно быть все равно значение TWBR,но вполне возможно мегу 16 решили доработать и использовать TWBR для формирования длительности ACK.

PS Тяжко мне в Си разобраться sad.gif

Последняя документация на мегу16 (doc2466.pdf) гласит:
This unit controls the period of SCL when operating in a Master mode. The SCL period
is controlled by settings in the TWI Bit Rate Register (TWBR) and the Prescaler bits in
the TWI Status Register (TWSR). Slave operation does not depend on Bit Rate or Pres-caler
settings
, but the CPU clock frequency in the slave must be at least 16 times higher
than the SCL frequency. Note that slaves may prolong the SCL low period, thereby
reducing the average TWI bus clock period.

Т.е. TWBR для формирования длительности ACK не используется.
Что на счет кода? Может есть какие-то косяки?
Go to the top of the page
 
+Quote Post
bodja74
сообщение Jun 9 2006, 21:09
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984



Цитата(Basilkmv06 @ Jun 9 2006, 20:13) *
Что на счет кода? Может есть какие-то косяки?


Ну я в Си не очень,нужно чтобы спецы поглядели. smile.gif

Все что нашел не думаю что существенно.

Вот это
TWCR=0x45;
TWCR|=0x80;

Можно сразу С5 заводить.


И немного не ясно назначение последних строчек.

TWCR|=0x40; //ðàçðåøèòü áèò ïîäòâåðæäåíèÿ
TWCR&=~0x20; //ÇÀÏÐÅÒÈÒÜ START
TWCR|=0x10; //Ïåðåçàãðóçêà TWI ôîðìèðîâàòü STOP
TWCR|=0x80;

И тех же самых строк в обработчике прерывания (если я правильно я понял).

А так вроде все Ок.
Go to the top of the page
 
+Quote Post
Basilkmv06
сообщение Jun 10 2006, 05:52
Сообщение #5





Группа: Участник
Сообщений: 13
Регистрация: 14-01-06
Пользователь №: 13 169



Цитата(bodja74 @ Jun 10 2006, 01:09) *
Цитата(Basilkmv06 @ Jun 9 2006, 20:13) *

Что на счет кода? Может есть какие-то косяки?


Ну я в Си не очень,нужно чтобы спецы поглядели. smile.gif

Все что нашел не думаю что существенно.

Вот это
TWCR=0x45;
TWCR|=0x80;

Можно сразу С5 заводить.


Это просто для наглядности.
Цитата(bodja74 @ Jun 10 2006, 01:09) *
И немного не ясно назначение последних строчек.

TWCR|=0x40; //ðàçðåøèòü áèò ïîäòâåðæäåíèÿ
TWCR&=~0x20; //ÇÀÏÐÅÒÈÒÜ START
TWCR|=0x10; //Ïåðåçàãðóçêà TWI ôîðìèðîâàòü STOP
TWCR|=0x80;


Это для организации арбитража в случае конфликта на шине пишем в регистр управления сформировать STOP. и модуль перезагружается, а то что 4строки это тоже для наглядности.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Basilkmv06   Из Atmega8 в Atmega16   Jun 6 2006, 17:16
- - defunct   Цитата(Basilkmv06 @ Jun 6 2006, 20:16) ме...   Jun 6 2006, 19:10
- - GetSmart   Ух ты. Не знал, что LPT можно использовать как TWI...   Jun 6 2006, 23:29
|- - Basilkmv06   Цитата(GetSmart @ Jun 7 2006, 03:29) Ух т...   Jun 7 2006, 10:41
- - Faradey   может я не в тему а на какой частое узаете TWI? я ...   Jun 7 2006, 17:39
|- - Basilkmv06   Цитата(Faradey @ Jun 7 2006, 21:39) может...   Jun 8 2006, 15:19
- - GetSmart   А может микруха глючная? Если есть вторая, то пров...   Jun 9 2006, 00:09
- - GetSmart   Я бы не полагался на PC-i2c и для проверки связал ...   Jun 9 2006, 02:25
- - Starick   Цитата(Basilkmv06 @ Jun 6 2006, 20:16) Оч...   Jun 9 2006, 14:43
|- - Basilkmv06   Цитата(Starick @ Jun 9 2006, 18:43) Цитат...   Jun 9 2006, 15:32
- - bodja74   Внутрений генератор у мег на 1,2,4 и 8Мгц.   Jun 9 2006, 14:56
- - bodja74   Еще ,выкладывайте инициализацию TWI слейва,посмотр...   Jun 9 2006, 15:15
|- - Basilkmv06   Цитата(bodja74 @ Jun 9 2006, 19:15) Еще ,...   Jun 9 2006, 15:51
- - GetSmart   Я не особо глубоко вникал в прогу, но на первый вз...   Jun 10 2006, 07:19
- - bodja74   Арбитраж(выяснение отношений кто из мастеров первы...   Jun 10 2006, 07:55
- - Woodoo   осцилограф есть? может кинишь осцилограмки SDA/SCL...   Jun 11 2006, 06:07
- - Basilkmv06   TWI ЗАРАБОТАЛ!! Долгие размышления по пово...   Jun 13 2006, 09:44


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

 


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


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