|
|
  |
DS1307Z +AtMega128, Нет старта на TWI |
|
|
|
Jul 29 2011, 21: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
|
|
|
|
|
Jul 29 2011, 22:12
|

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

|
Цитата(MaksimYrievich @ Jul 30 2011, 01:10)  Где написать? Я писал Цитата по идее должен мигать светодиод позиции 8 Надо было 0x08 Цитата(MaksimYrievich @ Jul 30 2011, 01:10)  Сейчас прочитаю и запущу ваш код на своем МК. Попробовал, ничего и не горит. Хреново! 1. Что это за плата, в Москве найду? 2. Питание на мс подается вообще? 3. Осцил не нашли?
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
|
Jul 30 2011, 05:36
|
Частый гость
 
Группа: Участник
Сообщений: 79
Регистрация: 10-08-09
Пользователь №: 51 828

|
Цитата(ILYAUL @ Jul 30 2011, 02:12)  1. Что это за плата, в Москве найду? 2. Питание на мс подается вообще? 3. Осцил не нашли? 1. В Москве не найти она моего изготовления. 2. Конечно да. 3. Нашел осциллограф. Померял питание. Очень чистое. Как у кота... Переменки на питании самой микросхемы отсутствует - строгая прямая линия +5 Вольт. Теперь про линии SDA и SCL. Полсле запитывания на обеих этих шинах +5 вольт и больше ничего не проскакивает. К нолю ни одна из шин не подтягивается. Изменений нет на шинах вообще
|
|
|
|
|
Jul 30 2011, 19:29
|

Профессионал
    
Группа: Свой
Сообщений: 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 Сообщите код который будет гореть
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
|
Jul 31 2011, 09:13
|
Частый гость
 
Группа: Участник
Сообщений: 79
Регистрация: 10-08-09
Пользователь №: 51 828

|
Цитата(ILYAUL @ Jul 30 2011, 23:29)  Сообщите код который будет гореть 0x39 горит. Я так понимаю что это 0x38. (0x39 & 0xF8 = 0x38).
Сообщение отредактировал MaksimYrievich - Jul 31 2011, 14:24
|
|
|
|
|
Jul 31 2011, 16:19
|

Профессионал
    
Группа: Свой
Сообщений: 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
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
|
Jul 31 2011, 17:20
|
Частый гость
 
Группа: Участник
Сообщений: 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
|
|
|
|
|
Jul 31 2011, 18:26
|

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

|
Цитата(MaksimYrievich @ Jul 31 2011, 21:20)  Скажите а у Вас что читается из TWSR. Или читалось когда либо?
Попробовал загнал Ваш код с последними изменениями. Ничего не пишет на светодиодах. Что Вы думаете об этом? В приложении ваш код с учётом последних изменений- для контроля моих действий. Все коды взяты из абсолюно рабочего проекта- на столе лежит . Стирайте этот код. И можете показать как запрограммированы FUSES
Эскизы прикрепленных изображений
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
|
Jul 31 2011, 18: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
Эскизы прикрепленных изображений
|
|
|
|
|
Jul 31 2011, 19:18
|

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

|
Цитата(MaksimYrievich @ Jul 31 2011, 22:54)  ЯILYAUL скажите а в симуляторе, фото которого вы приложили в предыдущем топике вы ручками поднимаете? В частности больше всего интересует значения в TWSR и особенно 0x08 в TWSR? И если нет, то что это за версия AVRSTUDIO у вас? Это не симмулятор, это реальное состояние TWI/ Я Вам писал , что существуют специальные отладчики проектов , которые объединяются в одну систему AVRStudio + отладчик ( в моём случае AVRDRAGON) + разрабатываемая плата . Поэтому в Студио , я вижу реально , что происходит с процессором , ничего не симмулируя ручками. Я использую туже , что у Вас , в ней меньше ошибок , чем в предыдущих и последующих
Эскизы прикрепленных изображений
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
|
Jul 31 2011, 19:28
|
Частый гость
 
Группа: Участник
Сообщений: 79
Регистрация: 10-08-09
Пользователь №: 51 828

|
Да это здоровская штука. У меня такой нет.  Пока нет. А знаете почему ваш код с последними добавлениями не хочет работать? Выполнение программы в нем просто не доходит до записи значения на светодиоды. зацикливаясь на проверке сброса флага TWSTO. Якобы после формирования состояния стоп на шине он должен быть сброшен. В моем случае ничего не сбрасывается даже флаг TWINT тупо записывается в TWCR и всё. Я в отчаянии  Кстати, а вот у меня в TWSR в не значащих разрядах всегда считывается какое то значение хотя я его туда естественно не закидывал сам.
Сообщение отредактировал MaksimYrievich - Jul 31 2011, 19:40
|
|
|
|
|
Jul 31 2011, 19:45
|

Профессионал
    
Группа: Свой
Сообщений: 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 - проверьте
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
|
Aug 1 2011, 17:36
|
Частый гость
 
Группа: Участник
Сообщений: 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!!!!
|
|
|
|
|
Aug 2 2011, 17:12
|
Частый гость
 
Группа: Участник
Сообщений: 79
Регистрация: 10-08-09
Пользователь №: 51 828

|
Усовершенствовал программатор. Перепаял AtMega64 на 128-ю, первую самую. Благо не ушатал её своими перепайками. И на самом деле этот бит сброшен оказался. Получается, что два одинаковых и самых старших представителя семейства AtMega, с завода прошиваются в режиме совместимости с каким то обрубком - AtMega103, не имеющим TWI !!! И в таком виде поставляются в продажу!!!!! Господи... Какая кощунственность!!!
Эскизы прикрепленных изображений
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|