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

 
 
> 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 28 2011, 11:20
Сообщение #2


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

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



Попробовал ваш код, ILYAUL. То же самое высвечивается. Код из темпа или как я вас понял из TWSR имеет значение $37. Ноги у DS1307 посадил на дорожки шины. Изменений нет. Во вложении ваш код, который я немножечко под свой девайс модифицировал, для вывода значения из TWSR.

Цитата(ILYAUL @ Jul 28 2011, 13:47) *
Я имел ввиду вот это (фото). Симмуляторы естесвеннно не рассматриваются.

Просто симулятор без двойки.
Цитата
И еще - в последнем Вашем коде, в *****_IniT.С
Код
DDRD |= 1<<PD0|1<<PD1;
    PORTD |= 1<<PD0|1<<PD1;

Стоят не закомментированы , и так как приобращении к порту PORTD допущена ошибка доллжны быть PB0 и PB1, то очень возможно , что компилятор прописал 0 по обоим выходам

Не понимаю в чём ошибка?

Прикрепленные файлы
Прикрепленный файл  test.rar ( 10.04 килобайт ) Кол-во скачиваний: 12
 
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Jul 28 2011, 13:09
Сообщение #3


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

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(MaksimYrievich @ Jul 28 2011, 15:20) *
Не понимаю в чём ошибка?

Рука дрогнула- в DDRD
Код
DDRD |= 1<<PD0|1<<PD1
;
Должно быть согласно m64def.inc

Код
; **** DDRD ****
.equ    DDD7    = 7        
.equ    DDD6    = 6
.equ    DDD5    = 5
.equ    DDD4    = 4
.equ    DDD3    = 3
.equ    DDD2    = 2
.equ    DDD1    = 1
.equ    DDD0    = 0


Код
DDRD |= 1<<DDD0|1<<DDD1
но возможно компил C и так понял , что Вы хотели
Но так как этот инит не имеет ровным счётом никакого значения для I2C- то и по фиг

Итак шина у Вас не работает и похоже на физ. уровне
Причин может быть несколько
1. Прозвонить SCL и SDA от проца к DS - есть ли контакт и совпадают ли по названиям шины между собой
2. Прсто подать питание на схему и посмотреть , есть ли на этих шинах уровень лог.1 - соответсвенно он зависит от питания Вашей схемы.
3. Не работает кварц DS1307 (32 768) - у MAXIMа есть аппликуха по данному поводу
4. По каким-то причинам она не тянет 100 khz в коде снизьте до 50000 в test.inc - проверьте


Я так понял из кода , что информацию Вы выводите на 8 LED , а что делает портВ?


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
MaksimYrievich
сообщение Jul 28 2011, 13:48
Сообщение #4


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

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



Цитата(ILYAUL @ Jul 28 2011, 17:09) *
Я так понял из кода , что информацию Вы выводите на 8 LED , а что делает портВ?

Защелкивает в регистре защёлке код с восьмиразрядной шины данных что бы горели светодиоды
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Jul 28 2011, 13:54
Сообщение #5


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

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(MaksimYrievich @ Jul 28 2011, 17:48) *
Защелкивает в регистре защёлке код с восьмиразрядной шины данных что бы горели светодиоды

А сэтими , что?

1. Прозвонить SCL и SDA от проца к DS - есть ли контакт и совпадают ли по названиям шины между собой
2. Прсто подать питание на схему и посмотреть , есть ли на этих шинах уровень лог.1 - соответсвенно он зависит от питания Вашей схемы.
и можете нарисовать подкл. светодиодов


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
MaksimYrievich
сообщение Jul 28 2011, 17:51
Сообщение #6


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

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



Цитата(ILYAUL @ Jul 28 2011, 17:54) *
А сэтими , что?

1. Прозвонить SCL и SDA от проца к DS - есть ли контакт и совпадают ли по названиям шины между собой
2. Прсто подать питание на схему и посмотреть , есть ли на этих шинах уровень лог.1 - соответсвенно он зависит от питания Вашей схемы.
и можете нарисовать подкл. светодиодов

1. Здесь 100%-ный верняк.
2. На шинах, обеих, постоянно висит +5вольт, образованных через внешние резисторы 4,7кОм.
3. Схема подключения светодиодов в приложении.

Вобщем отключил DS1307 от шины подключил 24LC512 к шине. Изменений нет прошивка вашим кодом ну + моя функция вывода, но она, сами понимаете, ничего не меняет принципиально в Вашем коде. Без маски 0xF8 код в TWSR =0x3B. Соответственно после маски, то есть 0x38.

Сообщение отредактировал MaksimYrievich - Jul 28 2011, 17:53
Эскизы прикрепленных изображений
Прикрепленное изображение
 
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
|- - 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
- - MaksimYrievich   Я даже просто включить автомат TWI не могу. В дата...   Jul 31 2011, 18:54
|- - 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 Текстовая версия Сейчас: 21st July 2025 - 15:57
Рейтинг@Mail.ru


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