27.10.2010, 18:49
|
|
Почётный гражданин KAZUS.RU
Регистрация: 06.06.2008
Сообщений: 1,530
Сказал спасибо: 78
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
|
Неправильно симулируется DS1307
Написал программу чтения по I2C DS1307 (мк at89c2051), но программа никак не хочет правильно симулироватся в Протеусе (7.6 SP0), как ни странно микросхема инициализируется (галочка автоматической инициализации не поставлена), но не позволяет выбрать адрес чтения (записи тоже), с сигналом стоп читает циклически всю память (реальные данные читает правильно), без этого сигнала, хотя, реально там повторный старт, читает до бесконечного адреса!, т.е. несуществующие ячейки памяти (адрес ›3F). Глюк Протеуса или ...?
Последний раз редактировалось nonamedov; 27.10.2010 в 19:52.
|
|
|
|
27.10.2010, 19:49
|
|
Супер-модератор
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,509 раз(а) в 956 сообщении(ях)
|
Re: Неправильно симулируется DS1307
Сообщение от nonamedov
|
или ...?
|
Точно или... Я эту модель в свое время проштудировал и вдоль и поперек, был глюк с импульсным выходом, но к версии 7.6 он уже давно исправлен. И еще глазки выше поднимаем - там есть подветка (если непонятно смотри приложенный рисунок).
|
|
|
|
27.10.2010, 20:07
|
|
Почётный гражданин KAZUS.RU
Регистрация: 06.06.2008
Сообщений: 1,530
Сказал спасибо: 78
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
|
Re: Неправильно симулируется DS1307
Сейчас не имею возможности посмотреть (дорогой моб. инет.), если можно напишите конкретно, из-за чего может быть. Повторяю, DS1307 инициализируется, читается пишется, но ..., как я уже писал ..., с чужим кодом (программа чтения AT24Cxx) протеус вообще отказался симулировать, сославший на чрезмерную нагрузку
вот старт и стоп код
Цитата:
|
I2C_START:
SETB CLK
SETB SDA
CALL DELAY
CLR SDA
CALL DELAY
RET
I2C_STOP:
SETB CLK
CLR SDA
NOP
NOP
NOP
SETB SDA
CALL DELAY1
RET
|
|
|
|
|
27.10.2010, 22:08
|
|
Почётный гражданин KAZUS.RU
Регистрация: 06.06.2008
Сообщений: 1,530
Сказал спасибо: 78
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
|
Re: Неправильно симулируется DS1307
Свел программу только к обмену по I2C, стало ясно, что повторный старт не работает, подпрограмма "стоп" тоже работает своеобразно, если она вызывается, то память читается циклически, если нет, до бесконечного адреса, в остальном не заметил ничего подозрительного. Если это не ошибка протеуса, то даже не знаю что думать?
|
|
|
|
27.10.2010, 22:13
|
|
Супер-модератор
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,509 раз(а) в 956 сообщении(ях)
|
Re: Неправильно симулируется DS1307
1. Ссылку на подветку Протеуса я Вам указал не только к тому, чтобы посмотреть, а к тому, что вопросы, касающиеся конкретно Протеуса, задаются там!!! Не забивайте общую ветку CADов вопросами по программе, имеющей свой раздел!!!
2. Да, Чехов сказал: "Краткость - сестра таланта", но ... не настолько. Моих "телепатических способностей" хватает только предсказать, что поскольку DELAY=1год, а тактовая частота МК 1 ГГц вы имеете то, что имеете. В таких случаях здесь (а точнее там, куда показано стрелкой на картинке в моем посте выше) принято выкладывать зазипованный проект Протеуса с неработающей микропрограммой, а также указать версию Протеуса (ну до этого Вы додумались раньше) и чем компилировали. А гадать по десятку строчек кода из которых половина НОПы - можно до окончания 21 века. Еще добавлю, что поскольку 89-я серия тихо уходит в прошлое, то те глюки модели, которые в ней имели место остались без исправлений разработчиком со старых версий.
|
|
|
|
27.10.2010, 23:24
|
|
Почётный гражданин KAZUS.RU
Регистрация: 06.06.2008
Сообщений: 1,530
Сказал спасибо: 78
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
|
Re: Неправильно симулируется DS1307
1. Постараюсь непременно сделать так, как Вы сказали. Спутало меня название раздела.
2.
Цитата:
|
Моих "телепатических способностей" хватает только предсказать, что поскольку DELAY=1год, а тактовая частота МК 1 ГГц вы имеете то, что имеете.
|
Сомневаетесь в моей вменяемости, если нет, то зачем писать такое?!
Цитата:
|
(ну до этого Вы додумались раньше)
|
спасибо, что не исключаете у меня хотя бы какой-то мыслительной способности.
Цитата:
|
Еще добавлю, что поскольку 89-я серия тихо уходит в прошлое, то те глюки модели, которые в ней имели место остались без исправлений разработчиком со старых версий.
|
Очень даже вероятно, с кодом я уже сделал все мыслимые и немыслимые изменения, а проблема повторного старта так и осталась ((((((.
|
|
|
|
28.10.2010, 00:34
|
|
Супер-модератор
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,509 раз(а) в 956 сообщении(ях)
|
Re: Неправильно симулируется DS1307
Сообщение от nonamedov
|
Сомневаетесь в моей вменяемости
|
Угадали, зачем выкладывать "огрызки" кода, если по ним ничего нельзя определить. Ваши три NOP чему равны? А DELAY? Если для Вас тайминги не имеют значения, то незачем было и вообще поднимать тему - парьтесь самостоятельно со своими глюками. А то, что модель RTC рабочая, вот - любуйтесь, причем это было сделано более двух лет назад еще в какой то старой версии, с Пиками я уже давно не работаю, равно как и с DS1307 (есть более новые и качественные RTC):
|
|
|
|
28.10.2010, 02:09
|
|
Почётный гражданин KAZUS.RU
Регистрация: 06.06.2008
Сообщений: 1,530
Сказал спасибо: 78
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
|
Re: Неправильно симулируется DS1307
Просто не стоит спрашивать слишком уж очевидные вещи, это оскорбительно( нет, я не придирчивый, скорее самоироничный).
Цитата:
|
Если для Вас тайминги не имеют значения
|
Я этого не говорил,
а если конкретно, то
NOP=1мкс(кварц на 12МГц), а
Цитата:
|
DELAY:
MOV R3, #4
DJNZ R3, $
RET
|
Заранее предупреждаю, что с тем же (не)успехом вместо нопов использовалась и delay.
|
|
|
|
28.10.2010, 22:08
|
|
Супер-модератор
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,509 раз(а) в 956 сообщении(ях)
|
Re: Неправильно симулируется DS1307
Ну в общем вот, дальше сами. Я не спец по 89-й серии, поэтому "тихо умыкнул" готовую разработку отсюда:
http://www.atomlink.ru/~courier/ds1307/ds1307.htm
Загнал в Протеус и проверил. С I2C все пучком, а вот с One-wire у автора разработки где-то накладочка. До 10 градусов показывает ничего, а дальше лажа. Копаться в чужом коде, да еще для 89-х у меня нет ни времени, ни желания.
|
|
|
|
29.10.2010, 01:22
|
|
Почётный гражданин KAZUS.RU
Регистрация: 06.06.2008
Сообщений: 1,530
Сказал спасибо: 78
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
|
Re: Неправильно симулируется DS1307
Проблема была на более высоком уровне, т.е. не в подпрограммах чтения, записи, стоп , старт и пр., и даже не в таймингах, к которым I2C более чем толерантен, для чтения с произвольного адреса надо было применять процедуру “random read” (т.е |start|write_device_address+WriteBit+Ack| write_data_addressstart+ack|start|write_device_add ress+ReadBit+ack|read_data+nack|stop|), а у меня получалось последовательное чтение всей памяти. Вывод: не читать убогие переводы даташитов на русском (ответ нашел в даташите на AT24CXX), а протеус тут не причем.
Спасибо Halex07, эту ссылку я уже рассматривал, но хотелось свое (вот с 1Wire будут большие проблемы!).
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
ATmega64 и DS1307
|
sersne |
Микроконтроллеры, АЦП, память и т.д |
1 |
08.06.2010 21:54 |
ATmega128 + DS1307
|
alberio |
Микроконтроллеры, АЦП, память и т.д |
0 |
24.05.2010 03:16 |
Не симулируется генератор
|
kr11507 |
Proteus, KiCAD и другие ECAD |
29 |
11.01.2010 10:04 |
RTC DS1307, контроллер, LCD... какая идеология работы?
|
chapa |
Микроконтроллеры, АЦП, память и т.д |
4 |
24.11.2009 18:28 |
DS1307 не запускается
|
shaggyone |
Микроконтроллеры, АЦП, память и т.д |
9 |
09.10.2009 07:18 |
Часовой пояс GMT +4, время: 03:46.
|
|