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

 
 
> 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
5 страниц V  < 1 2 3 4 5 >  
Start new topic
Ответов (30 - 44)
ILYAUL
сообщение Jul 28 2011, 09:47
Сообщение #31


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

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



Цитата(MaksimYrievich @ Jul 28 2011, 13:24) *
Теперь на счет отладчика, использую AvrStudio4.16, Build 628.

Я имел ввиду вот это (фото). Симмуляторы естесвеннно не рассматриваются.

И еще - в последнем Вашем коде, в *****_IniT.С
Код
DDRD |= 1<<PD0|1<<PD1;
    PORTD |= 1<<PD0|1<<PD1;

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


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

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


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

Группа: Участник
Сообщений: 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
Сообщение #33


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

Группа: Свой
Сообщений: 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:33
Сообщение #34


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

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



Заменил ещё раз микросхему код стал равен $38. сейчас буду пробовать снизить скорость

Можно DS1307 Выпаять а EEPROMку посадить на шину. Снижение скорости ничего не дало ошибку с кодом про DDD признаю, исправил.

Сообщение отредактировал MaksimYrievich - Jul 28 2011, 13:40
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Jul 28 2011, 13:45
Сообщение #35


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

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



Цитата(MaksimYrievich @ Jul 28 2011, 17:33) *
Можно DS1307 Выпаять а EEPROMку посадить на шину.

Попробуйте и покажите как вкл. LED и вопрос выше


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

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


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

Группа: Участник
Сообщений: 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
Сообщение #37


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

Группа: Свой
Сообщений: 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
Сообщение #38


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

Группа: Участник
Сообщений: 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
ILYAUL
сообщение Jul 28 2011, 19:01
Сообщение #39


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

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



Цитата(MaksimYrievich @ Jul 28 2011, 15:20) *
Просто симулятор без двойки.

Я чего-то не могу понять, Вы используете симмулятор т.е. связи через специальные отладочные устройства с SDUDIO у Вас нет. Они перечислены в том скрине который я Вам выкладывал , когда написал -
Цитата
.... не симмуляторы

Симмулятор - в отличии от эммуляторов работает в ручную т.е. каждый бит можно установить и сбросить просто нажав мышкой на этот бит в окне I/O View в том числе и выставить необходимый код 0x08. Зная логику своей программы , Вы можете только проверить ее исполнение выставляя необходимые условия в РУЧНУЮ.
C отладочным устройством - в studio передается реальный код , полученный процессором - так вот есть у Вас хоть одно отладочное устройсво из приведенного мною списка?
Эскизы прикрепленных изображений
Прикрепленное изображение
 


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

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


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

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



Цитата(ILYAUL @ Jul 28 2011, 23:01) *
C отладочным устройством - в studio передается реальный код , полученный процессором - так вот есть у Вас хоть одно отладочное устройсво из приведенного мною списка?

К сожалению нет таких устройств
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Jul 28 2011, 19:47
Сообщение #41


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

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



Цитата(MaksimYrievich @ Jul 28 2011, 23:44) *
К сожалению нет таких устройств

А программатор есть?
Очень возможно , что всё давно и прекрасно работает , но отладчик НЕОБХОДИМО купить ( понятно , что придётся потратиться , но оно того стоит (время , нервов и сил экономит - мама не горюй) - всё станет значительно проще , я вон код из другой темы написал и отладил за полчаса


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

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


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

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



Цитата(ILYAUL @ Jul 28 2011, 23:47) *
А программатор есть?
Очень возможно , что всё давно и прекрасно работает , но отладчик НЕОБХОДИМО купить ( понятно , что придётся потратиться , но оно того стоит (время , нервов и сил экономит - мама не горюй) - всё станет значительно проще , я вон код из другой темы написал и отладил за полчаса

Программатор есть конечно. А по поводу что всё работает согласиться не могу с вами. А о каком отладчике идёт речь и вкратце что он делает и по каким проводам подключается?
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Jul 28 2011, 19:59
Сообщение #43


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

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



Цитата(MaksimYrievich @ Jul 28 2011, 23:53) *
Программатор есть конечно. А по поводу что всё работает согласиться не могу с вами. А о каком отладчике идёт речь и вкратце что он делает и по каким проводам подключается?

Они все в списке кроме симмуляторов. Откройте AVR STUDIO - HELP - ATMEL AVR Tools ON-line Help и в левом столбце с AVR ONE по ICE200 про них можно почитать. Я использую dragon.
Программатором сможете записать код , который мы с Вами сегодня рассматривали и посмотрите , что даст Ваш индикатор - по идее должен мигать светодиод позиции 8


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

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


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

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



Цитата(ILYAUL @ Jul 28 2011, 23:59) *
Программатором сможете записать код , который мы с Вами сегодня рассматривали и посмотрите , что даст Ваш индикатор - по идее должен мигать светодиод позиции 8

Гореть по идее а не мигать, чтоб мигать я такого в Вашем коде не увидел. А почему восьмой то? Это какому коду должно соответствовать по вашему? Единице или 128?

Да прекрасно всё пишется уже целый день его загоняю. По вашему коду загорается или 0x20? или 0x38. Причем они грязные какие то. То есть чтобы, например, 0x38 получилось надо выполнить операцию "И" с содержимым регистра TWSR в котором реально появляется код 0x3B после старта TWI. Скажите а у Вас какие коды читаются из TWSR прямо такие как по книжке?

Сообщение отредактировал MaksimYrievich - Jul 28 2011, 20:11
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Jul 28 2011, 20:55
Сообщение #45


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

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



Цитата(MaksimYrievich @ Jul 29 2011, 00:06) *
Гореть по идее а не мигать, чтоб мигать я такого в Вашем коде не увидел. А почему восьмой то? Это какому коду должно соответствовать по вашему? Единице или 128?

Да прекрасно всё пишется уже целый день его загоняю. По вашему коду загорается или 0x20? или 0x38. Причем они грязные какие то. То есть чтобы, например, 0x38 получилось надо выполнить операцию "И" с содержимым регистра TWSR в котором реально появляется код 0x3B после старта TWI. Скажите а у Вас какие коды читаются из TWSR прямо такие как по книжке?

Надо было написать так 0x08
Я кое что подправил, если не бдет 0x08 ничего гореть не будет
Все коды указаны в файле test.inc
Прикрепленные файлы
Прикрепленный файл  test.rar ( 10.94 килобайт ) Кол-во скачиваний: 11
 


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

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post

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

 


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


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