|
Из Atmega8 в Atmega16, TWI не хочет мигрировать |
|
|
|
Jun 6 2006, 17:16
|
Группа: Участник
Сообщений: 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. В чем может быть пичина?
|
|
|
|
|
 |
Ответов
|
Jun 13 2006, 09:44
|
Группа: Участник
Сообщений: 13
Регистрация: 14-01-06
Пользователь №: 13 169

|
TWI ЗАРАБОТАЛ!! Долгие размышления по поводу косяков привели к следующим выводам: 1.С ростом скорости передачи на линиях SDA SCL фронтов сигналов (очевидно заметна емкость длинного кабеля от LPT). 2.Эти ошибки отображаются в регистре статуса как TWSR=0x00. 3.Согласно документации АТМЕЛА Status $00 indicates that a bus error has occurred during a Two-wire Serial Bus transfer. A bus error occurs when a START or STOP condition occurs at an illegal position in the format frame. Examples of such illegal positions are during the serial transfer of an address byte, a data byte, or an acknowledge bit. When a bus error occurs, TWINT is set. To recover from a bus error, the TWSTO flag must set and TWINT must be cleared by writing a logic one to it. This causes the TWI to enter the not addressed slave mode and to clear the TWSTO flag (no other bits in TWCR are affected). The SDA and SCL lines are released, and no STOP condition is transmitted. ошибка обрабатывалась так //TWCR|=0x40; //Разрешить бит подтверждения //TWCR&=~0x20; //Запретить START //TWCR|=0x10; //перезагрузить TWI сформировав STOP //TWCR|=0x80; Данный текст отлично работает в меге8. Но в меге16 TWI не перезагружается и при этом удерживает 0 на ноге SCL, сей факт для меня остался загадкой!
4.В меге16 обработку TWSR=0x00 сделал так TWCR=0x41;//отключить модуль TWI TWCR=0xC5;//подклучить модуль TWI Все заработало!!!!!
Если у кого есть соображения по поводу данной непонятки, то поясните. Зарание благодарен.
|
|
|
|
Сообщений в этой теме
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 bodja74 А с чего Вы взяли что TWBR=0x08 это Bit Rate: 250,... Jun 9 2006, 16:19 Basilkmv06 Цитата(bodja74 @ Jun 9 2006, 20:19) А с ч... Jun 9 2006, 17:13  bodja74 Цитата(Basilkmv06 @ Jun 9 2006, 20:13) Чт... Jun 9 2006, 21:09   Basilkmv06 Цитата(bodja74 @ Jun 10 2006, 01:09) Цита... Jun 10 2006, 05:52 GetSmart Я не особо глубоко вникал в прогу, но на первый вз... Jun 10 2006, 07:19 bodja74 Арбитраж(выяснение отношений кто из мастеров первы... Jun 10 2006, 07:55
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|