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

 
 
> 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, 19:01
Сообщение #3


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

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


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

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


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

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


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

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


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

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


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

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


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

Группа: Свой
Сообщений: 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
MaksimYrievich
сообщение Jul 29 2011, 21:10
Сообщение #10


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

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



Цитата(ILYAUL @ Jul 29 2011, 00:55) *
Надо было написать так 0x08


Где написать?
Цитата(ILYAUL @ Jul 29 2011, 00:55) *
Я кое что подправил, если не бдет 0x08 ничего гореть не будет
Все коды указаны в файле test.inc

Сейчас прочитаю и запущу ваш код на своем МК. Попробовал, ничего и не горит.

Сообщение отредактировал MaksimYrievich - Jul 29 2011, 21:23
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Jul 29 2011, 22:12
Сообщение #11


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

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



Цитата(MaksimYrievich @ Jul 30 2011, 01:10) *
Где написать?

Я писал
Цитата
по идее должен мигать светодиод позиции 8

Надо было 0x08
Цитата(MaksimYrievich @ Jul 30 2011, 01:10) *
Сейчас прочитаю и запущу ваш код на своем МК. Попробовал, ничего и не горит.

Хреново!
1. Что это за плата, в Москве найду?
2. Питание на мс подается вообще?
3. Осцил не нашли?


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

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


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

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



Цитата(ILYAUL @ Jul 30 2011, 02:12) *
1. Что это за плата, в Москве найду?
2. Питание на мс подается вообще?
3. Осцил не нашли?

1. В Москве не найти она моего изготовления.
2. Конечно да.
3. Нашел осциллограф. Померял питание. Очень чистое. Как у кота... Переменки на питании самой микросхемы отсутствует - строгая прямая линия +5 Вольт. Теперь про линии SDA и SCL. Полсле запитывания на обеих этих шинах +5 вольт и больше ничего не проскакивает. К нолю ни одна из шин не подтягивается. Изменений нет на шинах вообще
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Jul 30 2011, 19:29
Сообщение #13


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

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



Цитата(MaksimYrievich @ Jul 30 2011, 09:36) *

Вот после этих строчек
Код
ldi   temp,0x00
sts  TWAR,temp

Вставить
Код
        ldwi  Z,ILYAUL
Cycle1:
        lds temp,TWSR
        st  Z, temp
        rcall   WriteIndLed
        rjmp    Cycle1

Сообщите код который будет гореть


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

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


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

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



Цитата(ILYAUL @ Jul 30 2011, 23:29) *
Сообщите код который будет гореть

0x39 горит. Я так понимаю что это 0x38. (0x39 & 0xF8 = 0x38).



Сообщение отредактировал MaksimYrievich - Jul 31 2011, 14:24
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Jul 31 2011, 16:19
Сообщение #15


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

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



Цитата(MaksimYrievich @ Jul 31 2011, 13:13) *
0x39 горит. Я так понимаю что это 0x38. (0x39 & 0xF8 = 0x38).

Хрень какая-то. Откуда Вы берете эту маску -0xF8? Где она накладывается?

Код
                               ldi temp ,1<<TWINT|1<<TWSTO; В команде ничего не изменять!!!
                                sts   TWCR,temp
Cycle2:
         lds   temp,TWCR
         sbrc TEMP,TWSTO
         rjmp Cycle2

Перед
Код
     ldwi  Z,ILYAUL
Cycle1:
        lds temp,TWSR
        st  Z, temp
        rcall   WriteIndLed
        rjmp    Cycle1


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

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


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

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



Цитата(ILYAUL @ Jul 31 2011, 20:19) *
Хрень какая-то. Откуда Вы берете эту маску -0xF8? Где она накладывается?

В даташите так написано. Вам вот такие строки не знакомы?
Код
static unsigned char i2c_start(void)
{
TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);     //Устанавливается состояние START
while (!(TWCR & (1<<TWINT)));           //Задержка до установки флага TWINT. Он означает что
                    //состояние START было передано
if ((TWSR & 0xF8) == 0x08)            //Проверяем значение в TWI Status Register
      return(0);
   else
      return(1);
}

Так вот 0xF8 это маска. Которую программист должен накладывать самостоятельно ибо в регистре TWSR состояние автомата TWI показывают только старшие 5 разрядов. Я конечно этой маски в вашем коде не вижу. Поэтому я вам и пишу в ответах на ваши вопросы два кода состояния: 1) без маски - это тот код который я получаю на светодиоды по вашей программе и он 100 пудово из TWSR = 0x39(это то что я из всего TWSR читаю), и второй код который я умственно умножаю в голове на 0xF8. Тогда он будет равен табличному значению- 0x38. Так что путаться здесь не в чем. Скажите а у Вас что читается из TWSR. Или читалось когда либо?

Попробовал загнал Ваш код с последними изменениями. Ничего не пишет на светодиодах. Что Вы думаете об этом? В приложении ваш код с учётом последних изменений- для контроля моих действий.

Сообщение отредактировал MaksimYrievich - Jul 31 2011, 17:34
Прикрепленные файлы
Прикрепленный файл  test_1_.rar ( 10.01 килобайт ) Кол-во скачиваний: 12
 
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, 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 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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


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


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