Proteus, KiCAD и другие ECAD Разработчик так или иначе сталкивается с системами автоматизированного проектирования. Данный раздел - по САПР. |
20.03.2022, 21:29
|
|
Частый гость
Регистрация: 11.02.2007
Сообщений: 23
Сказал спасибо: 5
Сказали Спасибо 5 раз(а) в 3 сообщении(ях)
|
Re: Cимулятор SimuIIDE
У меня почти получилось сделать главную функцию TM1638 - вывод на индикаторы введённых данных. Нужно посмотреть сначала как на реале происходит индикация. Для этого у меня на монтажной плате установлен PIC16F786A и мне как-то удалось вывести через него на индикатор какую-то белиберду из засвеченных сегментов. Это было где-то год назад. Сейчас я тупо хочу вывести 8 цифр и засветить две линейки светодиодов. Я взялся за тяжёлый случай, а именно индикатор с ОА. Кто сталкивался с этим поймёт меня. Китайцы делают макетные платы под эту микросхему с индикаторами с ОК, где очень удобно складывать введённые цифры в линейный массив регистров. TM1638 тупо отображает эти регистры на индикаторе. А вот с ОА - это взрыв извращения.
Так выглядит текущая эмуляция.
|
|
|
Эти 2 пользователя(ей) сказали Спасибо fifan за это сообщение:
|
|
|
21.03.2022, 08:54
|
|
Прописка
Регистрация: 24.04.2008
Адрес: г. Клинцы, Брянская обл.
Сообщений: 140
Сказал спасибо: 37
Сказали Спасибо 74 раз(а) в 65 сообщении(ях)
|
Re: Cимулятор SimuIIDE
Отличная работа!
На выходе можно получить:
а) отдельную модель контроллера TM1638, а также ему подобные
б) модели нескольких реальных плат с индикаторами, светодиодами, кнопками
Проверю, можно ли сделать модели на основе микроконтроллеров.
__________________
С уважением, Роенко С.А., Клинцы.
|
|
|
|
22.03.2022, 20:08
|
|
Частый гость
Регистрация: 11.02.2007
Сообщений: 23
Сказал спасибо: 5
Сказали Спасибо 5 раз(а) в 3 сообщении(ях)
|
Re: Cимулятор SimuIIDE
Допиливаю ввод данных с автоинкрементом адреса. Нужно будет организовать переключатель ОА/ОК т.к. вывод на индикатор в корне отличается для индикаторов с ОА/ОК. Пока не получается заполнить буфер регистров дисплея, а отобразить данные с буфера не так уж сложно. Конечным этапом будет работа с клавиатурой. Там нужно будет организовать опрос кнопок по прерыванию. Пока в этом проекте я не использовал прерывания.
|
|
|
|
23.03.2022, 00:15
|
|
Прописка
Регистрация: 24.04.2008
Адрес: г. Клинцы, Брянская обл.
Сообщений: 140
Сказал спасибо: 37
Сказали Спасибо 74 раз(а) в 65 сообщении(ях)
|
Re: Cимулятор SimuIIDE
Автор программы поддержал идею создания моделей таким образом. Проблем с помещением их в оболочку (логический символ, корпус, плату) не будет.
__________________
С уважением, Роенко С.А., Клинцы.
|
|
|
Сказали "Спасибо" Fizik_S
|
|
|
23.03.2022, 18:45
|
|
Частый гость
Регистрация: 11.02.2007
Сообщений: 23
Сказал спасибо: 5
Сказали Спасибо 5 раз(а) в 3 сообщении(ях)
|
Re: Cимулятор SimuIIDE
Обнаружил баг программы. Абсолютно не работает инструкция ADDWF F, D микроконтроллера PIC16F877. Регистр участвующий в этой инструкции никак не меняется в двух вариантах данного операнда. По идее регистр f должен сложится с аккумулятором w и результат должен положится в тот же регистр или в w.
По моему проекту. Данные переданные источником (использовал мелкий пик) передаются и принимаются эмулятором TM1638, но происходит порча принятых данных - разбираюсь. По индикации никак не идёт. Похоже нагрузка на каждый порт пика сегментов одного индикатора и одновременно анодов или катодов засветки индикаторов ОА/ОК не работает. Наверное нужно будет ставить транзисторные ключи. Хотел обойтись без них. Это для симуляции. Реальный пользователь будет использовать только один из ОА/ОК 10/8 знакоместных индикаторов.
Ещё наверное в эмуляторах для простоты не учитывают реальную частоту микросхемы. Нашёл в даташите на TM1638 только максимальную частоту синхронизации - 450 кГц, минимальная - прочерк, я использую порядка 8 кГц.
|
|
|
|
23.03.2022, 20:08
|
|
Прописка
Регистрация: 24.04.2008
Адрес: г. Клинцы, Брянская обл.
Сообщений: 140
Сказал спасибо: 37
Сказали Спасибо 74 раз(а) в 65 сообщении(ях)
|
Re: Cимулятор SimuIIDE
Сообщил о проблеме на основном форуме.
По проекту: я бы сделал 2 схемы - одну на индикаторах с ОК, другую с - ОА, клавиатуру лучше поставить KeyPAD и сделать подписи на кнопки - будет намного компактнее и симпатичнее.
С PIC такие проблемы, думаю потому, что ими редко кто занимается. На форуме сообщения об ошибках в основном по AVR, причем это либо ARDUINO, либо MEGA328.
Теперь будем ждать версию с исправлениями.
__________________
С уважением, Роенко С.А., Клинцы.
|
|
|
|
23.03.2022, 21:47
|
|
Прописка
Регистрация: 24.04.2008
Адрес: г. Клинцы, Брянская обл.
Сообщений: 140
Сказал спасибо: 37
Сказали Спасибо 74 раз(а) в 65 сообщении(ях)
|
Re: Cимулятор SimuIIDE
Получил ответ от автора:
Цитата:
|
ADDWF is working correctly in both variants, the problem must be other.
The only reason that comes to my mind is a wrong baksel.
|
Если я правильно понял, проблема может быть в другом месте ...
В подобных случаях я делал так (немного геморрно, но результат 100%):
открываю 2 программы 0.4.15 (стабильная) и 1.0.0 (с подозрением на ошибки);
на схеме достаточно разместить подозрительный МК (чтобы в старой версии не собирать схему). Исходник прошивки один и тот-же в обеих программах. Запускаю отладку в подозрительных местах и делаю шаги по очереди в каждой программе. В мониторе контроллера сравниваю содержимое регистров после выполнения каждой команды делаю выводы.
__________________
С уважением, Роенко С.А., Клинцы.
|
|
|
|
25.03.2022, 22:05
|
|
Частый гость
Регистрация: 11.02.2007
Сообщений: 23
Сказал спасибо: 5
Сказали Спасибо 5 раз(а) в 3 сообщении(ях)
|
Re: Cимулятор SimuIIDE
Всё же не работает упомянутая мною инструкция сложения. Я добился установкой бита 5 конечного регистра адреса, чтобы для моего применения сложить адрес с числом #20. Поясню подробнее. Приходит у меня в контроллер адрес с 0 по 15. Теперь, чтобы найти этот адрес в ячейке микроконтроллера с адреса #20 по логике мне нужно сложить адрес с #20. Я так и делаю, но операнд сложения даёт мне число просто адреса с 0 по 15, а не с #20 по #3f.
По проекту. Добился полной правильной передачи и приёма данных по трёхпроводной шине TM1638. Теперь нужно организовать вывод на дисплейный модуль. Но в этом симуляторе нет возможности организовать задержку данных как в Протеусе. В свойствам индикатора только электрические характеристики: напряжение, ток и сопротивление (зачем оно?). С давних времён у меня всегда получалась динамическая индикация. Здесь нет. Давно ещё с программирования на МК48/МК51 я запомнил формулу: 50/n, где n - число знакомест индикатора. Формула даёт время в миллисекндах с какой нужно вызывать процедуру отдачи байта засветки на сегменты и выборки знакоместа индикатора. В этом симуляторе хоть ты раньше этого время обновляешь индикатор, хоть позже никакой разницы - постоянное дёрганье сегментов индикатора. Мрак.
|
|
|
|
27.03.2022, 19:39
|
|
Частый гость
Регистрация: 11.02.2007
Сообщений: 23
Сказал спасибо: 5
Сказали Спасибо 5 раз(а) в 3 сообщении(ях)
|
Re: Cимулятор SimuIIDE
Т. к. автор симулятора не гарантирует работу PIC микроконтроллеров с прерываниями, то я не буду продолжать дальше попытки продвижения проекта. По опыту работы с TM1638 других пользователей необходимо организовывать прерывания каждые 2,5...3,3 мс (300...400 Гц). Это необходимое условие для динамической индикации и опроса клавиатуры.
|
|
|
|
25.08.2022, 20:14
|
|
Прохожий
Регистрация: 25.08.2022
Сообщений: 2
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Cимулятор SimuIIDE
Добрый день.
Экспериментирую с SimulIDE, отлаживаю микроконтроллерное устройство с датчиками, сервомашинками и прочими механизмами. Есть проблема: нужно "смоделировать физику", как действия механизмов отражаются на показаниях датчиков. Простейший пример: связка мотор+энкодер, нужно чтобы вращение ротора мотора давало импульсы с энкодера. Пример посложнее: надо чтобы после N оборотов мотора срабатывал концевой выключатель. Есть и другие примеры... в общем надо как-то описать эту модель взаимодействия датчиков и механизмов, чтобы посмотреть как микроконтроллер с прошивкой это отрабатывает (в том числе и нештатные ситуации вроде обрыва датчика или заклинивания).
Как это можно решить? Пока вижу три пути:
1. моделировать физику в сторонней программе, данные с SimulIDE пробросить через DBus, сокеты, TCP/IP или ещё как-нибудь.
2. приделать плагины к SimulIDE, в которых описывать модель поведения. На C++ или может быть, QML.
3. (наверное, самое интересное решение): моделировать физику средствами самого SimulIDE а ля аналоговый компьютер.
Пока экспериментирую с методом (1) через DBus (не слишком удобно), но подумываю о методе (3), вроде бы всё реально: идеальные компоненты для вычислений (интегратор, перемножитель и т.п.) сделать несложно, только хотелось бы их графически разделить от электрической части схемы (линии другого цвета или может быть, нарисовать схему для модели где-то отдельно, и соединить её через туннели).
Какие ещё идеи есть по этому поводу?
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 05:16.
|
|