Комментарии 18
Перевод делал явно не схемотехник. Читаешь, слова вроде русские, а смысла нет совсем. Например:
P.S. Можно же было схему сделать кликабельной.
Две клавиши соединены между каждой из шин клавиш и общей шиной
P.S. Можно же было схему сделать кликабельной.
+3
Дескрипторы DMA расписаны неплохо, но 50 восклицательных знаков в тексте, это 50 восклицательных знаков.
16 бит на пиксель тоже не особо заметно. В лучшем случае, палитра на 64 цвета.
В целом, еще раз доказано, что 32 бита с машинным циклом в 1 такт — это мощь.
16 бит на пиксель тоже не особо заметно. В лучшем случае, палитра на 64 цвета.
В целом, еще раз доказано, что 32 бита с машинным циклом в 1 такт — это мощь.
+2
когда общая шина меняет состояние, а шины данных меняют своё состояние утягивания вверх/вниз, нужно вставить какую-то задержку, чтобы встроенный утягивающий вверх/вниз резистор сменил контракт и установил паразитную ёмкость на нужный уровень. Но мы не хотим ждать!
В таких случаях я делаю проще. У нас уже есть необходимая задержка для устаканивания всех переходных процессов — сам период опроса.
Вы СНАЧАЛА читайте состояние кнопок, потом переключайте шину. Первое чтение скорей всего будет нерелевантным, но шину можно выставить в начале инициализации периферии — пока она пройдёт первое чтение произойдет уже после успокоения всех процессов. А скорей всего можно сделать ещё проще — игнорировать первые нажатия в течении 2-3 кадров после старта.
0
акцентировали один из самых ужастных участков перевода.
Там паразитная емкость — фемтофарады, даже не пико. Разработчик просто не в курсе про дребезг контактов и способов его лечения.
Там паразитная емкость — фемтофарады, даже не пико. Разработчик просто не в курсе про дребезг контактов и способов его лечения.
0
Увы, пикофарады набираются очень быстро. И если прочитать кнопку сразу после установки уровня на шине чрез пару тактов на 48Мгц то будут проблемы. Я даже так «сенсорную кнопку» изобретать, резистор подтяжки в 500К и без проблем неторопливо можно ловить переходный процесс на тактовой частоте всего в 8Мгц. Причем отличие палец/не палец в 16 единиц из 64. И это простой проводок длиной 5 сантиметров до сенсора. А если на плате, да в соседстве с земляными полигонами, возможно пришлось бы ещё и от помех фильтровать. По расчетам исходя из емкости порядка 10пФ ожидалась задержка в максимум 16 тактов, в реальности на макетке получилось 128 тактов на паразитную ёмкость, если прикинуть это не менее сотни пикофарад.
Там вобщем-то не про дребезг контактов, а про то что нельзя сразу же считать значение на порту и цепи с ним связанные сразу после установки уровня в регистр — силовые транзисторы не такие быстрые, особенно при работе на емкостную нагрузку. А проблема дребезга у них решается автоматом — именно этим самым считыванием один раз за кадр — максимум чем грозит дребезг в момент считывания это то что зарегистрируем нажатие кнопки в следующем цикле. Единственное условие — минимальный период между считываниями не должен быть меньше длительности дребезга кнопки. Что тоже выполняется автоматом и с приличным запасом. Только когда кнопки значительно износятся проблема может стать актуальной, но она решится легко — заменой кнопки.
Там вобщем-то не про дребезг контактов, а про то что нельзя сразу же считать значение на порту и цепи с ним связанные сразу после установки уровня в регистр — силовые транзисторы не такие быстрые, особенно при работе на емкостную нагрузку. А проблема дребезга у них решается автоматом — именно этим самым считыванием один раз за кадр — максимум чем грозит дребезг в момент считывания это то что зарегистрируем нажатие кнопки в следующем цикле. Единственное условие — минимальный период между считываниями не должен быть меньше длительности дребезга кнопки. Что тоже выполняется автоматом и с приличным запасом. Только когда кнопки значительно износятся проблема может стать актуальной, но она решится легко — заменой кнопки.
+1
В электронике — чем ближе земля, либо питание тем меньше помех же. Поэтому все заливается по максимуму землей и питашкой. Скорей всего, у вас была не паразитная емкость, а паразитная индуктивность монтажа и не очень удачной разводки. Лечится обычно резисторами в районе 51 Ома в проходе. Убирает звон, немного задерживает фронт. Чудес от макетки (bread board, поди?) лучше не ждать, хотя они иногда случаются.
Дребезг можно убрать и часиками, т.е. подождать время n после первого импульса (на плохих кнопках доходит до 100мс и это не 1 кадр, между прочим), либо усредняющий фильтр первого порядка (можно и биквад, если хочется).
Когда делается потребительская вещь у нас на работе железячники сразу ставят кнопки типа «ушат». На вопрос, что мол, вам кнопки жалко? Приходит ризонный ответ, что ушат дается чтобы написать софт так, чтобы он работал и на механически подолбаном железе. Ушатанных кнопках и подубитых потенциометрах-энкодерах.
Дребезг можно убрать и часиками, т.е. подождать время n после первого импульса (на плохих кнопках доходит до 100мс и это не 1 кадр, между прочим), либо усредняющий фильтр первого порядка (можно и биквад, если хочется).
Когда делается потребительская вещь у нас на работе железячники сразу ставят кнопки типа «ушат». На вопрос, что мол, вам кнопки жалко? Приходит ризонный ответ, что ушат дается чтобы написать софт так, чтобы он работал и на механически подолбаном железе. Ушатанных кнопках и подубитых потенциометрах-энкодерах.
0
100мс задержка на распознавание кнопки это уже будет заметно и раздражать. Кроме того отсчитывать задержку от нажатия или реагировать на первый фронт а задержку использовать для того чтобы не реагировать повторно на нажатие той же кнопки это неоправданное усложнение программы и сложности с её отладкой. Это стоит делать только в случае когда остро стоит проблема времени реакции на нажатие — т.е. важно быстро среагировать(физическая безопасность, аварийные датчики) но и не зависеть от дребезга.
В конце концов, ушатанные кнопки будут раздражать даже если софт будет работать — уменьшится скорость реакции на нажатия, будут пропускаться какие-то быстрые нажатия и т.п. в любом случае возникнет необходимость поменять их для комфортной работы.
В конце концов, ушатанные кнопки будут раздражать даже если софт будет работать — уменьшится скорость реакции на нажатия, будут пропускаться какие-то быстрые нажатия и т.п. в любом случае возникнет необходимость поменять их для комфортной работы.
0
Ушатанные кнопки отличаются от обычных большим дребезгом. Поэтому, тайминги подстраиваются под ушат. Кнопок без дребезга — небывает. Даже самые правильные нет-нет, да и дают 3-7 всплесков. Это самые азы схемотехники.
100 мс — это между повторными опросами, конечно. Так-то реакция на первый спад. Но есть еще двойные клики, долгие нажатия («hold») и т.п., поэтому придется уделить время и написать библиотеку.
Нет неоправданных усложнений программы. Обработка дребезга есть абсолютно в любом продукте. Просто в ПК этим занимается выделенный контроллер клавиатуры, если в какой поделке контроллера нет, то все вешается на основной процессор, как в старых 8-битках и современных девайсах на МК.
Если есть задача, то она решается разными способами. Если она не решена — будет отток пользователей. Да и дребезг — банально.
А так, очень удобно быть любителем и делать вид, что нет дребезга контактов, или АЦП передают нормальный сигнал (а там разброс 4-6 бит — легко, и тоже надо все фильтровать).
100 мс — это между повторными опросами, конечно. Так-то реакция на первый спад. Но есть еще двойные клики, долгие нажатия («hold») и т.п., поэтому придется уделить время и написать библиотеку.
Нет неоправданных усложнений программы. Обработка дребезга есть абсолютно в любом продукте. Просто в ПК этим занимается выделенный контроллер клавиатуры, если в какой поделке контроллера нет, то все вешается на основной процессор, как в старых 8-битках и современных девайсах на МК.
Если есть задача, то она решается разными способами. Если она не решена — будет отток пользователей. Да и дребезг — банально.
А так, очень удобно быть любителем и делать вид, что нет дребезга контактов, или АЦП передают нормальный сигнал (а там разброс 4-6 бит — легко, и тоже надо все фильтровать).
0
Да и пусть даёт кнопка дребезг, ведь не на счетчик аппаратный она заведена. Считываем мы её состояние только один раз на цикл — там никакой определённости нет. Или нажата или нет. А то что она делает импульсы в промежутках между опросами нас не волнует совершенно. Единственный недостаток — время реакции на кнопку варьируется от 0 до периода опроса, но в случае интерфейса с человеком в этом нет никакой проблемы — заметить задержку реакции меньше 40мс смогут единицы.
Опрос по интервалу решает проблему дребезга на корню и простыми средствами. Когда надо регистрировать двойные и длинные нажатия реакцию на кнопку по первому фронту уже не сделаешь, а значит и тут простой опрос по интервалу хуже не сделает но проще чем другие подходы к подавлению дребезга.
Опрос по интервалу решает проблему дребезга на корню и простыми средствами. Когда надо регистрировать двойные и длинные нажатия реакцию на кнопку по первому фронту уже не сделаешь, а значит и тут простой опрос по интервалу хуже не сделает но проще чем другие подходы к подавлению дребезга.
0
Исходники доступны? (у меня нет)
Есть они в Вебархиве
Есть они в Вебархиве
+1
У меня когда-то была идея сделать похожее устройство в форм-факторе визитки и толщиной не более 5 мм, чтобы потом раздать друзьям и знакомым. Но увы, мечты разбились о жестокую реальность — даже «малопотребляющие» микроконтроллеры, как и экраны с низким потреблением, на самом деле жрут столько, что источник питания в такое устройство просто не впихнуть.
Тут остаётся только завидовать разработчикам древних игровых устройств типа «Ну погоди», которые имели доступ к волшебной элементной базе, способной полгода(!) жить на двух мелких таблетках. Какой современный ЖК-экран на такое способен? Даже E-ink выжрет их за пару часов, если его надо хотя бы раз в секунду обновлять. Да и микроконтроллеры «сифонят» энергию только в путь.
Тут остаётся только завидовать разработчикам древних игровых устройств типа «Ну погоди», которые имели доступ к волшебной элементной базе, способной полгода(!) жить на двух мелких таблетках. Какой современный ЖК-экран на такое способен? Даже E-ink выжрет их за пару часов, если его надо хотя бы раз в секунду обновлять. Да и микроконтроллеры «сифонят» энергию только в путь.
0
Любой ЖК экран. А для контроллера надо просто нормально воспользоваться режимом сна и снизить тактовую частоту до 100кГц в моменты когда не нужна высокая производительность. Обычный ЖК экран типа обозреваемого в активном режиме без подсветки потребляет всего 1мА, от таблеток проработает часов 30, теоретически. Остальное определяется частотой обновления и вычислительной мощности задачи. Для такой простой игры как «Ну погоди» тоже можно свести до среднего потребления в 1мА или и того меньше. Главное грамотно распределить задачи и использовать режим сна.
+4
На самом деле тактовую частоту можно уменьшить еще сильнее. На AT91SAM7X мы опускали ее до 500Гц. Этого было достаточно что бы проснуться по прерыванию, поднять частоту до рабочей, обработать ввод пользователя и понизить частоту обратно без видимых задержек.
+1
Я делал подобное с питанием от часовой батарейки CR2032, но с маленьким OLED дисплеем, и простым STM32F100C4, а не энергоэффективным аналогом типа STM32Lxx; и флешкой в SOIC8 корпусе.
Оно было способно на 8 мегагерцах без какого либо сна проца проработать 2-3 часа непрерывно присвистывая текст и картинки плавно. Единственная хитрость — включение флешь памяти аппаратным ключом только во время чтения блока, а это всего 1мс из 30мс каждого кадра. А при статичной картинке естественно использовался просто слип (1мА) умные часики показывали неподвижный контент более 5 часов. Такой просто слип потому что олед потреблял заметно больше и оптимизировать не имело смысла. Толщина платы вместе с оледом составляла всего 5мм а часов 8мм что было тоньше айфона тех лет и даже не появился этот дебильный тренд уродовать мобильную технику излишним утоньшением.
Такие часы уверенно конкурировали в Европе наравне с китайскими поделиями до того как в моду пришли полноценные умные часы с полноценной ОС.
Оно было способно на 8 мегагерцах без какого либо сна проца проработать 2-3 часа непрерывно присвистывая текст и картинки плавно. Единственная хитрость — включение флешь памяти аппаратным ключом только во время чтения блока, а это всего 1мс из 30мс каждого кадра. А при статичной картинке естественно использовался просто слип (1мА) умные часики показывали неподвижный контент более 5 часов. Такой просто слип потому что олед потреблял заметно больше и оптимизировать не имело смысла. Толщина платы вместе с оледом составляла всего 5мм а часов 8мм что было тоньше айфона тех лет и даже не появился этот дебильный тренд уродовать мобильную технику излишним утоньшением.
Такие часы уверенно конкурировали в Европе наравне с китайскими поделиями до того как в моду пришли полноценные умные часы с полноценной ОС.
0
Знаете, в некоторых кейсах обычный
__asm(" wfi");
способен скосить от трети до половины электропотребления. Вы действительно радуетесь 2-3 часам, когда в легкую могли сделать 4-5?
0
что я и делал об этом и написал выше:
просто при плавной прокрутки текста в 30фпс в режиме чтения использовать слипы было бесполезно т.к. проц был задействован близко к 100% постоянно.
и списывать редко когда требуется более 2 часов безостановочно читая текст с экрана, и такого чтоб было два экзамена подряд без возможности зарядки я вообще не слышал так что всё строго по ТЗ и желаниям клиентов.
А при статичной картинке естественно использовался просто слип (1мА) умные часики показывали неподвижный контент более 5 часов.
просто при плавной прокрутки текста в 30фпс в режиме чтения использовать слипы было бесполезно т.к. проц был задействован близко к 100% постоянно.
и списывать редко когда требуется более 2 часов безостановочно читая текст с экрана, и такого чтоб было два экзамена подряд без возможности зарядки я вообще не слышал так что всё строго по ТЗ и желаниям клиентов.
0
какой-нибудь stm32g0 и попробовать тактовую 32кГц.
В целом, «ну-погоди» — это автомат с небольшим числом состояний. Наверняка можно раскидать на современной рассыпухе и будет потреблять еще меньше.
А на визитке сейчас модно делать дорожки с USB разъемом.
В целом, «ну-погоди» — это автомат с небольшим числом состояний. Наверняка можно раскидать на современной рассыпухе и будет потреблять еще меньше.
А на визитке сейчас модно делать дорожки с USB разъемом.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Создаём портативную платформенную игру на микроконтроллере Cortex M0+