Юстас Опубликовано 6 ноября, 2016 Автор Поделиться Опубликовано 6 ноября, 2016 @demos_1 я и == пробовал, у меня протеус бейсик не любит. Вешается сразу. 3 часа назад, Геннадий сказал: Если обе кнопки (1 и 2) соединить последовательно и подключить к одному выводу порта, то "нажаты обе?" можно исключить. Отличная идея, чтож я сразу не допёр))) 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
dm37 Опубликовано 6 ноября, 2016 Поделиться Опубликовано 6 ноября, 2016 (изменено) @Юстас проект движется? На ассемблере макросы написали? и схему бы... Изменено 6 ноября, 2016 пользователем dm37 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
20% скидка на весь каталог электронных компонентов в ТМ Электроникс!Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!Перейти на страницу акции Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
Юстас Опубликовано 6 ноября, 2016 Автор Поделиться Опубликовано 6 ноября, 2016 @dm37 сегодня занят был весь день, в соседний город ездил. С пол часа только за компом. Пытаюсь освоить RAM на асме) 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Особенности хранения литиевых аккумуляторов и батареекПотеря емкости аккумулятора напрямую зависит от условий хранения и эксплуатации. При неправильном хранении даже самый лучший литиевый источник тока с превосходными характеристиками может не оправдать ожиданий. Технология, основанная на рекомендациях таких известных производителей литиевых источников тока, как компании FANSO и EVE Energy, поможет организовать правильный процесс хранения батареек и аккумуляторов. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
COKPOWEHEU Опубликовано 6 ноября, 2016 Поделиться Опубликовано 6 ноября, 2016 А в чем проблема с ОЗУ? Там же всего 4 команды - ld, st, lds, sts. Ну не считая работы со стеком. И отображения регистров на ОЗУ... Понятно почему проблемы 0 Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз. Часть моих наработок. Ссылка на комментарий Поделиться на другие сайты Поделиться
Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
dm37 Опубликовано 6 ноября, 2016 Поделиться Опубликовано 6 ноября, 2016 @Юстас немного подкорректировал код на ассемблере (см. вложение), попробуйте сформировать импульс p.s. все файлы добавить в проект, думаю разберётесь pulse.7z 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Юстас Опубликовано 6 ноября, 2016 Автор Поделиться Опубликовано 6 ноября, 2016 (изменено) @COKPOWEHEU как в ОЗУ перебирать адреса? Допустим у меня в ОЗУ распаложен массив знаков индикации, например: 1 = 0bxxxxxxxx по адресу 0х60 2 = 0bxxxxxxxx по адресу 0х61 и т.д..... В полноценный 8бит порт, у меня в прерывании постоянно сливается код из переменной. На порту висит семисегментник. Допустим PINC .0 , отвечает у меня за инкримент на +1 адрес в ОЗУ и у меня тут же в переменую скопируется данные из этой ячеки и вывалятся в порт с индикатором. Типа нажал на кнопку, высветилась 1, нажал ещё раз на тебе 2 и т.д... @dm37 Просто огромное нечеловеческое спасибо за помощь)) Попробую разобраться.... Изменено 6 ноября, 2016 пользователем Юстас 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
dm37 Опубликовано 6 ноября, 2016 Поделиться Опубликовано 6 ноября, 2016 @Юстас пока остановитесь на формировании импульса, вы сразу за всё хватаетесь ))) доберёмся и до динамической индикации 6 минут назад, Юстас сказал: Типа нажал на кнопку, высветилась 1, нажал ещё раз на тебе 2 и т.д.. у вас так не получится, пока не обработаете дребезг контактов, и не сделаете задержку между нажатиями клавиш + динамической индикации пока нет, надо по порядку всё делать 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Юстас Опубликовано 6 ноября, 2016 Автор Поделиться Опубликовано 6 ноября, 2016 @dm37 что-то не получается объединить листинги. Компилятор ошибку выдаёт. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
dm37 Опубликовано 6 ноября, 2016 Поделиться Опубликовано 6 ноября, 2016 необходимо указать файл с которого всё начинается (т.е. main.asm) на файле правой кнопкой мыши (у меня это называется "Set As Entry File") 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
COKPOWEHEU Опубликовано 6 ноября, 2016 Поделиться Опубликовано 6 ноября, 2016 Цитата как в ОЗУ перебирать адреса? Имеется что-то вроде ld temp, X+ ? Цитата пока остановитесь на формировании импульса, вы сразу за всё хватаетесь ))) Поддерживаю! Но пусть лучше сам составляет алгоритм, лучше подскажем чем давать готовые решения. 0 Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз. Часть моих наработок. Ссылка на комментарий Поделиться на другие сайты Поделиться
dm37 Опубликовано 6 ноября, 2016 Поделиться Опубликовано 6 ноября, 2016 1 минуту назад, COKPOWEHEU сказал: Но пусть лучше сам составляет алгоритм, лучше подскажем чем давать готовые решения. с алгоритмом, думаю, надо помочь, а вот реализовывать самому 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
COKPOWEHEU Опубликовано 6 ноября, 2016 Поделиться Опубликовано 6 ноября, 2016 Как раз наоборот. Главное в программировании - умение составить алгоритм, а вовсе не знание синтаксиса какого-то языка. Цитата немного подкорректировал код на ассемблере (см. вложение), попробуйте сформировать импульс мне кажется, у вас там слишком разделен код. Много исходных файлов, которые только затрудняют чтение. Предлагаю в 3-й раз. ТС, у вас есть переменная с временем отсчета таймера (ее менять нельзя, она задается пользователем) и флаг старта. Поскольку таймер уже есть, используем его. Опишите по-русски, как должна работать программа. 0 Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз. Часть моих наработок. Ссылка на комментарий Поделиться на другие сайты Поделиться
dm37 Опубликовано 6 ноября, 2016 Поделиться Опубликовано 6 ноября, 2016 2 минуты назад, COKPOWEHEU сказал: Много исходных файлов, которые только затрудняют чтение. почему, разделяем по функционалу 1) инициализацию (Init) описали и забыли, зачем её тянуть за собой везде 2) в прерывании реализовали формирование импульса, потом динамическую индикацию, потом обработку клавиатуры (отдельный файл, сделали и забыли) 3) в основном теле программы реализовываем корректировку длительности импульса и формирование информации для вывода на индикатор, возможно сохранение в eeprom, может функционал будет дальше развиваться 4) ну и определения и макросы в отдельный файл Код всё равно не маленький будет, в одном файле трудно всё искать В 04.11.2016 в 23:51, dm37 сказал: алгоритм работы словами: в прерывании если флаг на запуск установлен, то проверяем счётчик (t_imp_count) на достижение нуля если ноль, то выключаем соленоид и t_imp_count = t_imp и сбрасываем флаг, если нет то включаем соленоид и t_imp_count = t_imp_count -1 если ничего не напутал ))) а алгоритм формирования импульса пока предложил такой, вот реализовываем... 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Григорий Т. Опубликовано 6 ноября, 2016 Поделиться Опубликовано 6 ноября, 2016 А зачем ещё один флаг? Достаточно выставить длительность импульса в t_imp_count. 0 Никогда не спорьте с дураком - люди могут не заметить между вами разницы Ссылка на комментарий Поделиться на другие сайты Поделиться
COKPOWEHEU Опубликовано 6 ноября, 2016 Поделиться Опубликовано 6 ноября, 2016 Да, вариант Григория реализовать еще проще. Цитата почему, разделяем по функционалу Потому что это НЕ разделение по функционалу. Логично было бы вынести в отдельный модуль все что связано с индикацией (инициализация, работа, деинициализация), клавиатура (инициализация, работа, деинициализация) и т.д. Другое дело, что эти куски настолько маленькие что выносить их в отдельные файлы не имеет особого смысла. 0 Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз. Часть моих наработок. Ссылка на комментарий Поделиться на другие сайты Поделиться
Юстас Опубликовано 6 ноября, 2016 Автор Поделиться Опубликовано 6 ноября, 2016 (изменено) 44 минуты назад, COKPOWEHEU сказал: Опишите по-русски, как должна работать программа. Дано: 1: (кнопка "1" отвечает за запуск соленоида, длительность импульса устанавливает оператор кнопками "2" и "3") 2: (кнопка "2" отвечает за инкремент переменной отвечающую за длительность импульса) 3: (кнопка "3" отвечает за декремент переменной отвечающую за длительность импульса) 4: (также 4-ёх значный семисегментный индикатор отвечает за визуализацию длительности импульса) 5: (наш интервал времени для импульса ограничен 200 мс) Сам процес такой: 1: Кнопками 2 и 3 устанавливаем нужную длительность импульса для соленоида. Если цифра превышает максимально заданный параметр (в нашем варианте это 200 мс), то инкремент дальше не пойдёт, так и останется 200. Тоже самое и с декрементом. Цифры не могут стать меньше нуля. 2: Индикатор параллельно нам отображает наши манипуляции с этими кнопками. 3: Если надоело играть с кнопками 2 и 3 и нас устраивает длительность импульса, то... 4: ...можно смело брать кнопки (которыми мы пользуемся застёгивая куртки) в руки, давить ногой на кнопку 1 и шлёпать заготовки. 5: В аппарате стоит возвратная пружина и после срабатывания соленоида, она автоматом возвращает шток в исходное положение. Алгоритм: 1: Если кнопка 1 нажата, то... 2: на соленоид подаётся высокое DC-напряжение на время интервала, заданного импульсом. 3: Если интервал был равен 0 то соленоид даже не чихнёт) 4: Далее соленоид находится в режиме ожидания следующего нажатия кнопки 1. Изменено 6 ноября, 2016 пользователем Юстас 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Григорий Т. Опубликовано 6 ноября, 2016 Поделиться Опубликовано 6 ноября, 2016 3 минуты назад, Юстас сказал: также 4-ёх значный семисегментный индикатор А было, вроде, три сегмента? Аппетиты растут? И я бы пересмотрел дискретность установки длительности, 100 раз жать на кнопку очень утомительно. 0 Никогда не спорьте с дураком - люди могут не заметить между вами разницы Ссылка на комментарий Поделиться на другие сайты Поделиться
Юстас Опубликовано 6 ноября, 2016 Автор Поделиться Опубликовано 6 ноября, 2016 @Григорий Т. Если кнопку держать, то цифры будут бежать быстрее. Хм опять я что-то упустил,,, Да в предыдущей плате стоял 4 значный индикатор((( 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
COKPOWEHEU Опубликовано 6 ноября, 2016 Поделиться Опубликовано 6 ноября, 2016 Я имел в виду не ТЗ а ваше решение алгоритма по приведенному мной, а лучше, Григорием (вместо отдельного флага - установка переменной обратного отсчета) ТЗ. Ну и UI возможно, стоит изменить. Например, кнопка 2 отвечает за изменяемый разряд числа, а кнопка 3 - за его увеличение. Можно добавить кнопку уменьшения разряда. Но это подождет - сначала выдача импульса. Ах да, 4-значный индикатор для 8-битной переменной многовато 0 Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз. Часть моих наработок. Ссылка на комментарий Поделиться на другие сайты Поделиться
Юстас Опубликовано 6 ноября, 2016 Автор Поделиться Опубликовано 6 ноября, 2016 (изменено) Все мои алгоритмы пока не увенчались успехом. Попробовал на бейсике написать для ускорения процесса, ну чуток сдвинулся с мёртвой точки. Как заработает более по человечески, так перенесу алгоритм на ассемблер. Изменено 6 ноября, 2016 пользователем Юстас 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
COKPOWEHEU Опубликовано 6 ноября, 2016 Поделиться Опубликовано 6 ноября, 2016 Так сначала текстом опишите что пытаетесь сделать. Там пара действий всего. 0 Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз. Часть моих наработок. Ссылка на комментарий Поделиться на другие сайты Поделиться
Юстас Опубликовано 6 ноября, 2016 Автор Поделиться Опубликовано 6 ноября, 2016 По ходу тему пора переименовывать как-то по другому)) 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Юстас Опубликовано 6 ноября, 2016 Автор Поделиться Опубликовано 6 ноября, 2016 @COKPOWEHEU У меня уже всё смешалось, люди.... кони.... Может сначала антидребезг организовать? Нажал кнопку, поднялся флаг что кнопка была нажата. В прерывании проверили флаг ап, а флаг поднят. Сразу говорим всем кнопкам:- хоть усри... что делайте, а 50 мс я даже не отреагирую на вас. Короче запустили отсчёт 50мс, по 1 мс в каждом прерывании, а между этим херачим динамическую индикацию в основном цикле. Параллельно контролим флаг окончания отсчёта. Как только 50мс прошло, поднимаем флаг окончания отсчёта антидребезга. И даём импульс на соленоид. Ну и всё заново. Не знаю, правильно ли я осмыслил данный алгоритм.... 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
COKPOWEHEU Опубликовано 6 ноября, 2016 Поделиться Опубликовано 6 ноября, 2016 не надо метаться из стороны в сторону. Обработка клавиатуры и индикация несколько сложнее выдачи импульса. 0 Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз. Часть моих наработок. Ссылка на комментарий Поделиться на другие сайты Поделиться
Юстас Опубликовано 6 ноября, 2016 Автор Поделиться Опубликовано 6 ноября, 2016 Подали импульс, подождали пока не окончится время интервала импульса, отключили. 3 действия всего) 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.