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

 
 
> DS1307Z +AtMega128, Нет старта на TWI
MaksimYrievich
сообщение Jul 11 2011, 20:44
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 79
Регистрация: 10-08-09
Пользователь №: 51 828



Здравствуйте! Столкнулся с проблемой. Модуль TWI отказывается инициировать на шине состояние START. Точнее я не знаю, может оно и создается, но только после установки флага TWINT в TWCR в регистр TWSR почему то загружается значение (0xEC) вместо обещанного (0x08). Я в шоке. Чего я только не пробовал. Сразу приведу функцию установки состояния START. Если кто сталкивался с подобной проблемой подскажите в чём тут дело?
Код
                   //Инициализация i2c шины.
    TWBR     |= 1<<TWBR6|1<<TWBR5|1<<TWBR1|1<<TWBR0; //Резонатор 14.7456МГц.
    TWSR     &= (~((1<<TWPS1)|(1<<TWPS0)));  
    TWAR    |= 1<<TWA0|1<<TWA1|1<<TWA3|1<<TWA5;  //задано произвольно просто чтоб было. МК - мастер.
    TWAR    &= (~((1<<TWGCE)));                                    //запрещаю всякие там общие вызовы моего МК.
    DDRD    |= 1<<PD0|1<<PD1;                                      //SDA и SCL делаю как выходы + PullAp.
    PORTD    |= 1<<PD0|1<<PD1;

//*************************************************
//А это сама функция старт i2c соединения
//*************************************************
static unsigned char i2c_start(void)
{

TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);     //Устанавливается состояние START
while (!(TWCR & (1<<TWINT)));           //Задержка до установки флага TWINT. Он означает что
                    //состояние START было передано
if ((TWSR & 0xF8) == START)            //Проверяем значение в TWI Status Register
        {WriteDisplay(0x30);
      return(0);}
   else
      {WriteDisplay(0x31);
      WriteIndLed(TWSR);
      return(1);}
}

Почему то после прогона МК этой функции светодиоды зажигаются так, что это соответствует коду (0xEC). Значение "0" на дисплее не видел ни разу хоть умри. Кстати для чистоты эксперимента выпаял с шины все девайсы кроме DS1307Z - часы. sad.gif

Сообщение отредактировал IgorKossak - Jul 12 2011, 07:29
Причина редактирования: Оформление кода
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
MaksimYrievich
сообщение Jul 31 2011, 18:54
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 79
Регистрация: 10-08-09
Пользователь №: 51 828



Я даже просто включить автомат TWI не могу. В даташитах любой масти написано, что как только в TWCR записать 1 в разряд TWEN, автомат TWI должен взять управление выводами SDA и SCL на себя. Причем как сконфигцрированы эти выводы не важно.
Так вот если выводы МК AtMega128 SDA и SCL сконфигурировать как:
Код
DDRD = 0x03;
PORTD = 0<<DDD0|0<<DDD1;

то на выходе, МК, на этих ногах будут ноли, не взирая на внешние подтягивающие разисторы. Как только в TWCR записать 1 в разряд TWEN, автомат TWI должен взять управление выводами SDA и SCL на себя. Так вот в моём случае хоть записывай туда чего хочешь хоть не записывай там всегда остаются нули. Если же выводы МК AtMega128 SDA и SCL сконфигурировать как:
Код
DDRD = 0x00;
PORTD = 1<<DDD0|1<<DDD1;

то на выходе, МК, на этих ногах будут 1. И нолей я ни разу в жизни не увидел на осциллографе. Хоть обзаписывайся в TWCR чего угодно. Я вот думаю может чего то ещё необходимо для нормальной работы TWI в AtMega128 или AtMega64 инициализировать, фъюзы там выставить какие нибудь. Потому что не бывает так... Я поменял 4 МК. Ситуация одинаковая со всеми МК причем все МК рабочие!!!! и не работал только долбаный TWI. Я не знаю что можно назвать помехами, но в моем случае при установке на осциллографе цены деления на 5mV/дел. Колебания переменной состсвляющей на шинах SCL, SDA не превышают 1 деления. То есть просто идеально. Блок питания +5Вольт выполнен на MC34063.

ILYAUL скажите а в симуляторе, фото которого вы приложили в предыдущем топике вы ручками поднимаете? В частности больше всего интересует значения в TWSR и особенно 0x08 в TWSR? И если нет, то что это за версия AVRSTUDIO у вас?

Сообщение отредактировал MaksimYrievich - Jul 31 2011, 18:41
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- MaksimYrievich   DS1307Z +AtMega128   Jul 11 2011, 20:44
- - alexeyv   1. Инициализировать регистры надо полностью, избав...   Jul 12 2011, 04:59
- - MaksimYrievich   Нет осциллографа. Сейчас попробую переписать код и...   Jul 12 2011, 08:12
- - alexeyv   погоняй в цикле старт-condition и стоп-condition с...   Jul 12 2011, 08:17
- - ILYAUL   Не знаю , конечно , но вот эти строчки мне абсолют...   Jul 12 2011, 10:44
|- - MaksimYrievich   Цитата(ILYAUL @ Jul 12 2011, 14:44) Не зн...   Jul 12 2011, 21:30
|- - ILYAUL   Цитата(MaksimYrievich @ Jul 13 2011, 01:3...   Jul 13 2011, 06:06
|- - MaksimYrievich   Цитата(ILYAUL @ Jul 13 2011, 10:06) Шина ...   Jul 13 2011, 09:27
- - ILYAUL   Вы прескалер убрали?   Jul 13 2011, 09:45
|- - MaksimYrievich   Цитата(ILYAUL @ Jul 13 2011, 13:45) Вы пр...   Jul 13 2011, 09:48
|- - ILYAUL   Цитата(MaksimYrievich @ Jul 13 2011, 13:4...   Jul 13 2011, 10:28
|- - MaksimYrievich   Цитата(ILYAUL @ Jul 13 2011, 14:28) Вы , ...   Jul 13 2011, 10:38
|- - ILYAUL   Цитата(MaksimYrievich @ Jul 13 2011, 14:3...   Jul 13 2011, 10:44
|- - MaksimYrievich   Цитата(ILYAUL @ Jul 13 2011, 14:44) SCL S...   Jul 13 2011, 10:46
|- - ILYAUL   Цитата(MaksimYrievich @ Jul 13 2011, 14:4...   Jul 13 2011, 11:04
|- - MaksimYrievich   Цитата(ILYAUL @ Jul 13 2011, 15:04) 1. Да...   Jul 15 2011, 19:54
- - ILYAUL   http://depositfiles.com/ru/files/i9jk81xui 1. Скач...   Jul 15 2011, 22:38
|- - MaksimYrievich   Цитата(ILYAUL @ Jul 16 2011, 02:38) http:...   Jul 15 2011, 22:56
- - alexeyv   Попытайтесь зациклить функцию старта и функцию сто...   Jul 18 2011, 03:53
- - MaksimYrievich   Сегодня ещё раз поменял микроконтроллер. Всё остал...   Jul 18 2011, 17:01
|- - ILYAUL   Цитата(MaksimYrievich @ Jul 18 2011, 21:0...   Jul 18 2011, 17:21
|- - MaksimYrievich   Цитата(ILYAUL @ Jul 18 2011, 21:21) У Вас...   Jul 18 2011, 17:36
|- - ILYAUL   Цитата(MaksimYrievich @ Jul 18 2011, 21:3...   Jul 18 2011, 18:59
- - MaksimYrievich   Не знаю. Что за такие проблемы. Я в отчаянии. Вооб...   Jul 27 2011, 19:50
- - ILYAUL   Если Вы смотрите в симмуляторе , то коды и флаги...   Jul 27 2011, 20:47
|- - MaksimYrievich   Цитата(ILYAUL @ Jul 28 2011, 00:47) И кст...   Jul 27 2011, 21:16
|- - ILYAUL   Цитата(MaksimYrievich @ Jul 28 2011, 01:1...   Jul 27 2011, 21:23
|- - MaksimYrievich   Цитата(ILYAUL @ Jul 28 2011, 01:23) Интер...   Jul 27 2011, 21:32
- - ILYAUL   1. Запаять микросхему DS1307!!!!...   Jul 28 2011, 08:15
|- - MaksimYrievich   Цитата(ILYAUL @ Jul 28 2011, 12:15) какой...   Jul 28 2011, 09:24
|- - ILYAUL   Цитата(MaksimYrievich @ Jul 28 2011, 13:2...   Jul 28 2011, 09:47
- - MaksimYrievich   Попробовал ваш код, ILYAUL. То же самое высвечивае...   Jul 28 2011, 11:20
|- - ILYAUL   Цитата(MaksimYrievich @ Jul 28 2011, 15:2...   Jul 28 2011, 13:09
||- - MaksimYrievich   Цитата(ILYAUL @ Jul 28 2011, 17:09) Я так...   Jul 28 2011, 13:48
||- - ILYAUL   Цитата(MaksimYrievich @ Jul 28 2011, 17:4...   Jul 28 2011, 13:54
||- - MaksimYrievich   Цитата(ILYAUL @ Jul 28 2011, 17:54) А сэт...   Jul 28 2011, 17:51
|- - ILYAUL   Цитата(MaksimYrievich @ Jul 28 2011, 15:2...   Jul 28 2011, 19:01
|- - MaksimYrievich   Цитата(ILYAUL @ Jul 28 2011, 23:01) C отл...   Jul 28 2011, 19:44
|- - ILYAUL   Цитата(MaksimYrievich @ Jul 28 2011, 23:4...   Jul 28 2011, 19:47
|- - MaksimYrievich   Цитата(ILYAUL @ Jul 28 2011, 23:47) А про...   Jul 28 2011, 19:53
|- - ILYAUL   Цитата(MaksimYrievich @ Jul 28 2011, 23:5...   Jul 28 2011, 19:59
|- - MaksimYrievich   Цитата(ILYAUL @ Jul 28 2011, 23:59) Прогр...   Jul 28 2011, 20:06
|- - ILYAUL   Цитата(MaksimYrievich @ Jul 29 2011, 00:0...   Jul 28 2011, 20:55
|- - MaksimYrievich   Цитата(ILYAUL @ Jul 29 2011, 00:55) Надо ...   Jul 29 2011, 21:10
|- - ILYAUL   Цитата(MaksimYrievich @ Jul 30 2011, 01:1...   Jul 29 2011, 22:12
|- - MaksimYrievich   Цитата(ILYAUL @ Jul 30 2011, 02:12) 1. Чт...   Jul 30 2011, 05:36
|- - ILYAUL   Цитата(MaksimYrievich @ Jul 30 2011, 09:3...   Jul 30 2011, 19:29
|- - MaksimYrievich   Цитата(ILYAUL @ Jul 30 2011, 23:29) Сообщ...   Jul 31 2011, 09:13
|- - ILYAUL   Цитата(MaksimYrievich @ Jul 31 2011, 13:1...   Jul 31 2011, 16:19
|- - MaksimYrievich   Цитата(ILYAUL @ Jul 31 2011, 20:19) Хрень...   Jul 31 2011, 17:20
|- - ILYAUL   Цитата(MaksimYrievich @ Jul 31 2011, 21:2...   Jul 31 2011, 18:26
- - MaksimYrievich   Заменил ещё раз микросхему код стал равен $38...   Jul 28 2011, 13:33
|- - ILYAUL   Цитата(MaksimYrievich @ Jul 28 2011, 17:3...   Jul 28 2011, 13:45
|- - ILYAUL   Цитата(MaksimYrievich @ Jul 31 2011, 22:5...   Jul 31 2011, 19:18
- - MaksimYrievich   Да это здоровская штука. У меня такой нет. Пока н...   Jul 31 2011, 19:28
- - ILYAUL   В младшем byte Fuses давайте выставим в 4 и 5 бите...   Jul 31 2011, 19:45
|- - MaksimYrievich   Цитата(ILYAUL @ Jul 31 2011, 23:45) Похож...   Aug 1 2011, 17:36
- - MaksimYrievich   Усовершенствовал программатор. Перепаял AtMega64 н...   Aug 2 2011, 17:12
- - ILYAUL   Я так понял , что наконец-то всё заработало. Тогда...   Aug 2 2011, 17:36
- - MaksimYrievich   Далее установил бит M103C как на рисунке, прошил и...   Aug 2 2011, 17:42
- - ILYAUL   Цитата(MaksimYrievich @ Aug 2 2011, 21:42...   Aug 2 2011, 17:46


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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 13:08
Рейтинг@Mail.ru


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