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

 
 
5 страниц V  < 1 2 3 4 > »   
Reply to this topicStart new topic
> DS1307Z +AtMega128, Нет старта на TWI
MaksimYrievich
сообщение Jul 15 2011, 19:54
Сообщение #16


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

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



Цитата(ILYAUL @ Jul 13 2011, 15:04) *
1. Да, нужен осцил .
2. У Вас питания проца и DS не разные случайно?
3. И судя по коду 0xA0 проц находится в режиме "ведомого приемника". И это из-за TWAR т.к. Вы внесли в него адрес
4. А как только в TWCR Вы устанавливаете TWEA и TWEN - он вкл. режим "Ведомый приемник" и ждёт когда его адресуют
TWAR - заносится личный адрес процессора на шине TWI, если процессоров в проекте не один и они могут адрресовать друг друга - в режиме с одним процем и если он должен быть мастером там должны быть 00000000


1. А что там нужно посмотреть, то осциллографом.
2. Как вам сказать, питание платы осуществляется от преобразователя на микросхеме MC34063 +12\+5В. Здесь на сайте посоветовали. Вторая такая же на +12\-5в. Для аналоговой части. А по плате расходится из одной точки одного конденсатора каждое (+5 вольт) к своей микросхеме (AtMega64,DS1307). Вроде конденсаторов понавешал везде керамических... Вобщем разность потенциалов на меге и на DS1307 минимальна. Суммарная емкость по питанию около 4 тысяч микрофорд Благо материнок старых полно.
3. Если в TWAR ничего не записывать, то код 0xA0 меняется на 0x90.
4. Как тогда сделать "Ведущий Передатчик"?
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Jul 15 2011, 22:38
Сообщение #17


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

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



http://depositfiles.com/ru/files/i9jk81xui
1. Скачйте эту книгу и почитайте - популярно расписана шина TWI со всеми кодами и режимами работы
2. Осцил , это чтобы сигналы на шине посмотреть



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

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


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

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



Цитата(ILYAUL @ Jul 16 2011, 02:38) *
http://depositfiles.com/ru/files/i9jk81xui
1. Скачйте эту книгу и почитайте - популярно расписана шина TWI со всеми кодами и режимами работы
2. Осцил , это чтобы сигналы на шине посмотреть

1. У меня такая книга в издании. Раздел про TWI до дыр зачитал.
2. Я вот думаю, если шина грязная то может емкости на нее повесить?
Go to the top of the page
 
+Quote Post
alexeyv
сообщение Jul 18 2011, 03:53
Сообщение #19


Местный
***

Группа: Участник
Сообщений: 298
Регистрация: 26-01-09
Из: Пермь
Пользователь №: 43 940



Попытайтесь зациклить функцию старта и функцию стопа TWI и осциллографом посмотрите уровни сигналов, форму сигналов/фронтов, наличие этих сигналов на шине и отсутствуе посторонних, отсутствие разлизных выбросов на шине, проконтролируйте временные задержки согласно ДШ.

Дальше вставьте между функциями старта и стопа, фунцию посылки байта (т.е команды) и проконтролируйте наличие сигнала АСК от слейва.

Если используете дисплей для вывода каких-либо результатов, то в конце цикла поставте задержку порядка нескольких секунд, что бы успеть зафиксировать результаты. Сраните полученный статус-код с дисплея и информацию полученную с шины с помощью осцилла.

вот мой код инициализации TWI (в виде макроса):
Код
    #define twi_init()          \
do {    PORT_TWI |= _BV(PIN_SDA);\
    PORT_TWI |= _BV(PIN_SCL);\
    TWAR = TWSR = 0;    \
    TWDR = 0xFF;          \
    TWBR = TWI_TWBR;    \
    twi_enable();        \
} while (0)


Сообщение отредактировал alexeyv - Jul 18 2011, 03:59
Go to the top of the page
 
+Quote Post
MaksimYrievich
сообщение Jul 18 2011, 17:01
Сообщение #20


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

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



Сегодня ещё раз поменял микроконтроллер. Всё осталось без изменений. Неисправность микроконтроллера я решительно отбрасываю. Теперь только код из TWSR изменился и стал 0x30. И вообще получается, что все три поменяных мной микроконтроллера выдавали разные коды в TWCR после запуска подпрограммы старта. Всё что угодно кроме 0x08.

Я вообще ничего не понимаю что происходит. Такое ощущение что компилятор не записывает в TWCR то что я ему задаю, ну то есть старт например. Причём, если в строку TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN) добавить (1<<TWIE) до вида TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN)|(1<<TWIE), то в этом случае прерывание не происходит. Хотя я его разрешил стандартной функцией SEI(); перед этим. Всеръез начинаю подумывать о программной реализации i2c. 05.gif Модуль TWI для меня остается загадкой.

Осциллографа у меня нет. Достать не где. Да и не тот это случай для того что бы его покупать.



Сообщение отредактировал MaksimYrievich - Jul 18 2011, 17:02
Прикрепленные файлы
Прикрепленный файл  PH_Regulator_PHR_04_02.rar ( 78.92 килобайт ) Кол-во скачиваний: 14
 
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Jul 18 2011, 17:21
Сообщение #21


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

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



Цитата(MaksimYrievich @ Jul 18 2011, 21:01) *
Я вообще ничего не понимаю что происходит. Такое ощущение что компилятор не записывает в TWCR то что я ему задаю, ну то есть старт например. Причём, если в строку TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN) добавить (1<<TWIE) до вида TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN)|(1<<TWIE), то в этом случае прерывание не происходит. Хотя я его разрешил стандартной функцией SEI(); перед этим.

Осциллографа у меня нет. Достать не где. Да и не тот это случай для того что бы его покупать.

У Вас ведь есть файл проекта для AVRStudio - *.aps . Установите режим симуляции (Simulator2) в Select platform and device запустите отладку Debug и посмотрите что пишется в регистр TWCR


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

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


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

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



Цитата(ILYAUL @ Jul 18 2011, 21:21) *
У Вас ведь есть файл проекта для AVRStudio - *.aps . Установите режим симуляции (Simulator2) в Select platform and device запустите отладку Debug и посмотрите что пишется в регистр TWCR


Ну нужно просто Функцию SEI(); заменить на sei();. Это та Функция на которую я просто хотел обратить внимание. И вроде всё в порядке вообще то. Программа останавливается на шаге когда должен подняться флаг TWINT. И тупит там бесконечно до сброса WDT. А у Вас как?

Кстати, у меня нет почему то в списке микросхем Simulator2 - AtMega64?

Сообщение отредактировал MaksimYrievich - Jul 18 2011, 17:41
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Jul 18 2011, 18:59
Сообщение #23


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

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



Цитата(MaksimYrievich @ Jul 18 2011, 21:36) *
Ну нужно просто Функцию SEI(); заменить на sei();. Это та Функция на которую я просто хотел обратить внимание. И вроде всё в порядке вообще то. Программа останавливается на шаге когда должен подняться флаг TWINT. И тупит там бесконечно до сброса WDT. А у Вас как?

Кстати, у меня нет почему то в списке микросхем Simulator2 - AtMega64?

У меня всё на asm

Извините просто Simulator , хотя у Вас в коде везде
Код
#include "AtMega128_PHR_04_02_Init.c"
Код
#include "AtMega128_PHR_04_02_Init.h"
, а это разные Mega
Прикрепленные файлы
Прикрепленный файл  DS1337_TWI.rar ( 3.96 килобайт ) Кол-во скачиваний: 19
 


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

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


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

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



Не знаю. Что за такие проблемы. Я в отчаянии. Вообще не могу даже вызвать прерывание от модуля TWI. Флаг TWINT не сбрасывается а если сбросился то не устанавливается вообще. Регистр TWCR ведёт себя как простой регистр общего назначения - после записи в него значение в нем не меняется вообще!!!! Могу в него записать что хочу могу стереть прочитать... Ни старта ни стопа ни флага TWINT. Ребята, а есть такие кто запускал вообще модуль TWI именно на AtMega64,128?
Что бы я ни записывал в TWCR ничего не происходит. Шина молчит, в регистре статуса TWSR код не меняется и постоянно равен 0x30. Может кто сталкивался с такой проблемой? Как его запустить? Как вызвать хотя бы прерывание? Перепробывал ВСЁ. Разные коды, заменил три микроконтроллера. Может быть надо где то что то прописать помимо TWI, может прерывания какие. Ведёт себя TWI просто как мёртвый. Думал старта нет - ВООБЩЕ глушняк!!! Даже прерывание по TWINT сформировать не могу!!! Что это значит wacko.gif help.gif
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Jul 27 2011, 20:47
Сообщение #25


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

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



Если Вы смотрите в симмуляторе , то коды и флаги устанавливать надо в ручную - симмулятор служит только для проверки логики самой программы.
И кстати, как себя чувствует DS1307 ? Ну типа кварц - генерит, питание на ней есть? Не "сдохла ли?


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

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


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

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



Цитата(ILYAUL @ Jul 28 2011, 00:47) *
И кстати, как себя чувствует DS1307 ? Ну типа кварц - генерит, питание на ней есть? Не "сдохла ли?

Не может она сдохнуть потому что у нее ноги в воздухе. Вы задавали вопрос почему в коде атмега 128. Да потому что это одинаковые по адресам МК вместе с 64 и взаимозаменяемые. Сейчас МК на шине ногами и ВСЁ!! Ну и плюс резисторы.

Представляете, мужики, Пишу СТАРТ в TWCR ну и читаю сразу чтобы проверить прописалось или нет в МК. А в TWCR как был код старта так и остается. Причет TWINT как по даташиту ATMEL единицей не сбрасывается а наоборот так единицей и прописывается ибо если до этого его обнулить и потом СТАРТОМ зашить появляется единица в восьмом разряде TWCR представляете?!
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Jul 27 2011, 21:23
Сообщение #27


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

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



Цитата(MaksimYrievich @ Jul 28 2011, 01:16) *
Не может она сдохнуть потому что у нее ноги в воздухе.

Интересно , у как же она оветить тогда сможет?


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

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


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

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



Цитата(ILYAUL @ Jul 28 2011, 01:23) *
Интересно , у как же она оветить тогда сможет?

Да кокой ответить... МК старт даже не делает, вдумайтесь, на пустой шине. Прерывания по старту не наступает вообще. Глухо как в танке. В даташите на МЕГИ128 or 64 написано что регистр TWSR доступен только для чтения. У меня же в него и пишется и читается причем если его нулями проинициализировать, то получается после записи СТАРТ в регистр TWCR в нем так нули и остаются 05.gif

Я вот думаю может компилятор не в те адреса записи делает по написанному мной коду. Ну, типа TWCR должен в 0x74 должен писать а он ещё куда нибудь пишет. У меня просто версии уже кончаются...
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Jul 28 2011, 08:15
Сообщение #29


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

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



1. Запаять микросхему DS1307!!!!!
2. Запустить проект из приложеннного файла в STUDIO
2a В меню DEBUG изменить параметры в подменю ( Select platform end device) под Ваши (какой у Вас отладчик, кстати?)
2b. Изменить строчки (раскоментировать - закоменнтировать) в зависимости от выбранного DEVICE, с которым Вы работаете именно в данный момент
Код
.include "m64def.inc"
// .include "m128def.inc"

Если будут изменения не забудьте сделать SAVE и нажать F7
3. Установить BREAKPOINT на строку
Код
cpi     temp,START
в подпрограмме TWI_START
Запустить DEBUG
4.Посмотреть значение в регистре R16 (temp)
Прикрепленные файлы
Прикрепленный файл  test.rar ( 10.62 килобайт ) Кол-во скачиваний: 13
 


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

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


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

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



Цитата(ILYAUL @ Jul 28 2011, 12:15) *
какой у Вас отладчик, кстати

Сейчас попробую сделать так как вы пишите. О результатах немедленно сообщу. Теперь на счет отладчика, использую AvrStudio4.16, Build 628. Его использую как отладчик. Ну, там, смотрю как квадратики бегают, счётчики работают, конфигурирую порты и пр. А сами исходники в Programmers Notepad 2 каком то лобаю, в Help программы дословно написано v.2.0.8.718-basie.
Go to the top of the page
 
+Quote Post

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

 


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


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