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

 
 
5 страниц V  « < 2 3 4 5 >  
Reply to this topicStart new topic
> DS1307Z +AtMega128, Нет старта на TWI
MaksimYrievich
сообщение Jul 29 2011, 21:10
Сообщение #46


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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



Цитата(MaksimYrievich @ Jul 31 2011, 21:20) *
Скажите а у Вас что читается из TWSR. Или читалось когда либо?

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

Все коды взяты из абсолюно рабочего проекта- на столе лежит .

Стирайте этот код. И можете показать как запрограммированы FUSES
Эскизы прикрепленных изображений
Прикрепленное изображение
 


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

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


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

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


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

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



Цитата(MaksimYrievich @ Jul 31 2011, 22:54) *
ЯILYAUL скажите а в симуляторе, фото которого вы приложили в предыдущем топике вы ручками поднимаете? В частности больше всего интересует значения в TWSR и особенно 0x08 в TWSR? И если нет, то что это за версия AVRSTUDIO у вас?

Это не симмулятор, это реальное состояние TWI/ Я Вам писал , что существуют специальные отладчики проектов , которые объединяются в одну систему
AVRStudio + отладчик ( в моём случае AVRDRAGON) + разрабатываемая плата . Поэтому в Студио , я вижу реально , что происходит с процессором , ничего не симмулируя ручками.
Я использую туже , что у Вас , в ней меньше ошибок , чем в предыдущих и последующих
Эскизы прикрепленных изображений
Прикрепленное изображение
 


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

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


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

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



Да это здоровская штука. У меня такой нет. sad.gif Пока нет. А знаете почему ваш код с последними добавлениями не хочет работать? Выполнение программы в нем просто не доходит до записи значения на светодиоды. зацикливаясь на проверке сброса флага TWSTO. Якобы после формирования состояния стоп на шине он должен быть сброшен. В моем случае ничего не сбрасывается даже флаг TWINT тупо записывается в TWCR и всё. Я в отчаянии sad.gif

Кстати, а вот у меня в TWSR в не значащих разрядах всегда считывается какое то значение хотя я его туда естественно не закидывал сам.

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


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

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



В младшем byte Fuses давайте выставим в 4 и 5 бите галочки , при условии , что в Вашей программе они означают запись 1-цы т.е в младшем $FF и получим самый длинный из возможных сбросов
Цитата
Выполнение программы в нем просто не доходит до записи значения на светодиоды. зацикливаясь на проверке сброса флага TWSTO

Да я видел ,проверил на своём проекте
Да и в личку загляните

Так, возможно нащупал:
Цитата
ATmega103
Compatibility Mode
By programming the M103C fuse, the ATmega128 will be compatible with the ATmega103
regards to RAM, I/O pins and interrupt vectors as described above. However, some new features
in ATmega128 are not available in this compatibility mode, these features are listed below:
• One USART instead of two, Asynchronous mode only. Only the eight least significant bits of
the Baud Rate Register is available.
• One 16 bits Timer/Counter with two compare registers instead of two 16-bit Timer/Counters
with three compare registers.
• Two-wire serial interface is not supported.
• Port C is output only.
• Port G serves alternate functions only (not a general I/O port).
• Port F serves as digital input only in addition to analog input to the ADC.
• Boot Loader capabilities is not supported.
• It is not possible to adjust the frequency of the internal calibrated RC Oscillator.
• The External Memory Interface can not release any Address pins for general I/O, neither
configure different wait-states to different External Memory Address sections.



Похоже осталось только сбросить этот fuse в Extended Fuse Byte - второй справа, т.е убрать галочку и вернитесь к первому варианту test.asm - проверьте



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

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


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

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



Цитата(ILYAUL @ Jul 31 2011, 23:45) *
Похоже осталось только сбросить этот fuse в Extended Fuse Byte - второй справа, т.е убрать галочку и вернитесь к первому варианту test.asm - проверьте

Похоже, что вы правы! Главное обратите внимание, что с завода два этих типа МК AtMega128,64 идут прошитыми как раз в режиме совместимости! Сейчас буду пробовать.

Только сначала необходимо переписать программу моего программатора ибо когда я её писал я ваще забыл про третий конфигурационный байт и даже не вывел его чтение на форму программы. Это само по себе не проблема, благо знаком с разными языками программирования, но потребует некоторого времени для переключения меня самого с CИ++ на Делфи. За образец мной брался код программатора из "В.Н. Баранов, Применение микроконтроллеров AVR: схемы, алгоритмы, программы" и переклёпывался с Windows98 на XP. One minit`s please!!!!
Go to the top of the page
 
+Quote Post
MaksimYrievich
сообщение Aug 2 2011, 17:12
Сообщение #59


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

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



Усовершенствовал программатор. Перепаял AtMega64 на 128-ю, первую самую. Благо не ушатал её своими перепайками. И на самом деле этот бит сброшен оказался.
Получается, что два одинаковых и самых старших представителя семейства AtMega, с завода прошиваются в режиме совместимости с каким то обрубком - AtMega103, не имеющим TWI !!! И в таком виде поставляются в продажу!!!!! Господи... Какая кощунственность!!! sad.gif
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Aug 2 2011, 17:36
Сообщение #60


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

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



Я так понял , что наконец-то всё заработало. Тогда - поздравляю biggrin.gif .
Ну и я на будущее изучил D/S - этих MEGA - никогда сними не работал , но вдруг пригодится


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

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

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

 


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


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