0
Т.е. сделать программно… По сути таймер будет выполнять действия «включи по счёту M тактов» и «выключи по счёту N тактов». Для таймера это простые задачи. Хороший пример, который показывает, что когда задача хоть на миллиметр (а такие задачи встречаются гораздо чаще чем некоторые малюют) отходит от стандартного набора, и продвинутая (которая далеко не такая продвинутая, как некоторые малюют) периферия стм проигрывает и начинают выигрывать быстрые прерывания как в AVR и эффективные команды типа sbi/cbi как в AVR.
0
Вы знаете, я еще раз подумал над вашими и Lifelover'а словами про края и серединки. Тут, конечно, надо рисовать, чтобы всем все стало понятно. Но если имеется в виду получение совсем произвольного сдвига между каналами (зачем?), то для этого можно сделать следующее (даже не трогая остальные аппаратные возможности):

— настроить прерывание по обнулению (при счете вниз) и переполнению (при счете вверх) таймера;
— в этом прерывании при достижении максимального значения таймера прибавлять значение сдвига к основному значению CCR канала, а при счете вниз и достижении нуля — вычитать.

Таким образом можно получить любой сдвиг.
  • avatar
  • _YS_
  • 08 января 2018, 16:44
+1
У меня есть ощущение, что Lifelover имел ввиду ровно то, что вы показали. Сколочено гвоздями или краями (комплементарный режим) или серединками (пуш-пулл) и ничего с этим не сделать.
-1
Там есть еще куча бит, которые отвечают за огромное количество возможностей.
Моё впечатление — стм создавали методом копипасты. Т.е. дезигнерам была поставлена задача «сделайте всё, что есть у других». Совсем не удивлюсь, услышав такую «инсайдерскую инфу». Мне больше по душе МК, которые создавались осмысленно.
Так что если и не с одного канала, то с двух можно получить любой сигнал.
Да ладно. По фазе оно сколочно гвоздями краями или серединками и ничего с этим не сделаешь. Так что далеко не любой. Хотя при такой сложности могли бы и погибче сделать, чтобы фазу можно было двигать произвольно…
А, до меня дошло, чего вы хотите. Картинки не совсем удачные. Я наконец-то прочел подписи на них. :D
Не знаю как можно удачней нарисовать. И я же сразу сказал — пуш-пулл. Разница между ним и однотактником вроде должна быть очевидна.
+2
Ну, использование контроллеров от ST не всегда означает, что человек не уходит дальше STMxxCube. :D

Вообще, я по мере необходимости использую AVR, STM8, MSP430 и STM32 (на работе есть проект даже на ATXmega, и один раз запускал ARM от Atmel, после чего понял, почему их почти не используют). Чаще других применяю AVR и STM32. Реже всего — MSP430 (больно они дорогие). STM8 тоже хороши (в основном ценой, конечно), но под них нет нормального компилятора. Cosmic еще так-сяк, но там непойми что с лицензией, а SDCC — это полная печаль; за IAR хотят денег, много. К GCC соответствующий кодогенератор пока не прикрутили.

Так вот. Самый печалящий меня реальный недостаток STM8/32 — отсутствие нормального встроенного опорного источника (тот, который есть, нельзя использовать как опору АЦП — его можно только мерять!). В этом плане AVR они не конкуренты. Еще AVR безусловно выигрывают по токам GPIO — до 40 мА на ножку, до 200 мА на корпус для ATmega48, например. Так что какой-нибудь вольтметр с семисегментными индикаторами естесственно делать именно на AVR — это сразу минус два корпуса (опорный источник и драйвер дисплея).

Конкретно ATtiny13 — вообще чип-чемпион по соотношению параметров «цена-корпус-возможности». Аналогов ему у ST я не видел.

Что в STM безусловно хорошо — это таймеры. Аппаратная поддержка инкрементального энкодера (очень, очень удобно), комплементарные выходные каналы с настраиваемым защитным интервалом (deadtime), всякие возможности типа аппаратного отключения каналов по внешнему сигналу и так далее.

Очень мощная штука DMA. Самый близкий к народу пример, где DMA приносит ощутимую пользу — управление светодиодами типа WS2812. Без DMA это дико грузит процессор, с DMA и таймером процессор практически простаивает. Конкретных цифр сейчас уже не вспомню и перемерять лень, но помню, что я был потрясен разницей.

если конечно разрешения калибровки хватает для приличной точности…

32 бита же. :)

Что им мешало завести выход LSE на какой-нибудь таймер?

Вот ХЗ, на самом деле. Так правда было бы красивее, но, в принципе, дорожка на печатной плате ничего не стоит.

Дурацкий RTC

Я бы, к слову, не сказал, что он такой уж дурацкий. Если нужны именно часы — очень удобно. Кстати, модуль RTC там поддерживает пробуждение контроллера по часам и еще несколько возможностей такого сорта, ну а точки во времени удобнее указывать в человекопонятном формате, как минимум, лично мне. Ну а как сделать счетчик аптайма, мы уже разобрались.

Кстати, в состав модуля RTC входит область SRAM, питаемая от батареи, которая может быть сброшена по сигналу с определенной ножки. Удобно для хранения, скажем, ключей шифрования или еще какой-то информации, которую лучше уничтожить при обнаружении физического доступа к устройству.

И главное: модуль RTC не везде одинаковый. Например, в STM32F100 он именно что представляет собой тридцатидвухбитный счетчик, тактируемый через конфигурируемый делитель от линии RTCCLK (ее можно подключить к нескольким источникам). Это то, что вам требуется? :)

даже еепрома нет

Они фон-Неймановские, можно писать прямо во FLASH, в любое место, куда понравится. Так что EEPROM теряет смысл. Кстати вот в STM8 он есть.

по характеристики «количество страниц ерраты» они весьма далеки.

Справедливости ради, по сложности некоторых перферийных блоков — тоже. :) Сложнее железо, больше мест для ошибки.
  • avatar
  • _YS_
  • 05 января 2018, 21:34
+1
А для GTC хотелось бы чего то попроще, чтобы счётчик инкрементился аппаратно…

Справедливости ради, STM32 здесь дает вам сразу несколько вариантов.

Часовой кварц точный, но скорость маловата, соответственно, разрешение системного счетчика будет всего около 30.5 мкс. Иногда надо лучше. Не проблема! Можно сделать программный ремап входа захвата TIM14 на выход часового генератора и просто померять системную частоту относительно часового кварца. После этого можно откалибровать системное тактирование, получив высокоскоростной сигнал с точностью часового. Разумеется, калибровку можно повторять регулярно. Или только при изменении температуры (что можно отследить по встроенному термодатчику). Причем отслеживать можно даже аппаратно — АЦП (который выполняет опрос термодатчика) поддерживает автоматическое определение выхода преобразованного значения за установленные границы… Так что можно установить диапазон температур, при выходе за который прерывание будет запускать процедуру перекалибровки системного тактирования по часовому кварцу.

С другой стороны, если повышенного разрешения не требуется, можно аппаратно подключить выход MCO ко входу почти любого (кроме самых простых из имеющихся внутри) аппаратного таймера и тактировать этот таймер от него. Для MCO можно выбрать любой внутренний сигнал тактирования, и LSE (часовой кварц) в том числе. Так что аппаратный счетчик получается легко и непринужденно.

Все это вы можете почерпнуть из даташита на, скажем, STM32F030F4, который достаточно близок по характеристикам к серии ATmega.
  • avatar
  • _YS_
  • 05 января 2018, 14:24
0
Без проблем разобрался только один дисплей, это был не оригинальный дисплей для ONYX BOOX кажется M92 или M96, точно не помню, 9.7", с индуктивным перьевым вводом. Маркировку дисплея не помню, нужно искать, но гугл эту маркировку не знал вообще, и она не соответствовала той что была указана у продавца. Кстати оригинальный дисплей от этой книги не разобрался.
  • avatar
  • mChel
  • 03 апреля 2017, 12:50
0
Не, гранулы плавают в капсулах. Эпоксидка заменяет тот клей которым был склеен дисплей в оригинале. Я пытался выяснить что там, но кроме как то что там некий термопластичный полиуретан ничего найти не смог. Пытался подобрать чтото из силиконов, полиуретанов, эпоксидных смол, в том числе модифицированных. Но увы в затвердевшем состоянии у них очень маленькая диэлектрическая проницаемость, что приводит к тому что всё поле сосредотачивается в этом клее а не в капсулах. По сути получается последовательное соединение двух конденсаторов с разной ёмкостью. Я пробовал замешивать эпоксидку с оксидом титана, у него проницаемость больше сотни, это много, и это работало. Но оксида титана нужно сыпать много, для этого использовал очень жидкую смолу, почти как вода, чтобы потом можно было размазать тонким слоем. Но после затвердевания получался очень жесткий слой от которого плёнки с капсулами очень легко отслаивались, а как только появляется любой зазор, хоть с воздухом хоть с вакуумом, всё сразу перестаёт работать. А вот полярных жидкостей с большой проницаемостью полно, в зазор можно залить например глицерин, или даже воду и они работают, но врятли с ними дисплей прослужит долго, ибо будут взаимодействовать как минимум с медью. Смола же в данной конструкции просто технологически оказалась самой удобной.
  • avatar
  • mChel
  • 01 апреля 2017, 23:22
+3
Какие порядки длительности этого импульса получились, например, для данного экземпляра?
  • avatar
  • mChel
  • 01 апреля 2017, 19:15
0
Это был вольтметр с функцией калибровке… задумывался как приставка для контроля заряда/разряда аккумуляторов, но так дело и не дошло (хотя, потом вроде допилил на управление реле «включение/отключение» заряда. Кнопками кажется задавались верхняя и нижняя границы.
Кнопки, если мне память не изменяет, опрашивались по той же линии пятый счётчик имел 10 выходов: 8 использовались для других четырёх счётчиков, а 2 для кнопок… или 1 для кнопок по принципу опроса кнопок с помощью RC-цепочки и подтягивания «к верху» и «к низу». Т.е. контроль 2х кнопок от одного пина микроконтроллера (из tip&trics от микрочипа). Точно уже и не помню, как сделал. Просто было 2 вариации: одна на LED, другая на LCD… там количество свободных состояний пятого счётчика было различным (на LED использовались только 3 разряда). А, кажется вспомнил, на LCD для одной из кнопок использовался выход для десятичной точки первого разряда (там не могла стоять точка в принципе) или последнего… не важно В). В общем, извращался, как мог. Алгоритм был такой: на плате индикатора стоял конденсатор питания, который заряжался через диод от линии данных и питал всю схему. После передачи данных линия от микроконтроллера переводилась кратковременно на чтение, в этот момент к линии данных до диода (питания) подключались кнопки через достаточно большое сопротивление (вроде десятки килоом). считывалось значение и порт быстро переводился на выход и устанавливалсся в значение 1 (для питания индикатора). И так на каждом цикле записи содержимого индикатора.
  • avatar
  • Pitty
  • 27 ноября 2016, 01:02
+1
именно так. частоту уже точно не помню, но мерцания не было. Сейчас вот ещё раз вспоминаю-вспоминаю, никак не могу вспомнить, сколько времени выполнялась подпрограмма передачи. Но хорошо помню картинку с осциллографа: скважность была порядка 25% на 4 МГц, потом повысил до 8 МГц, и скважность должна была в 2 раза уменьшиться. т.е. 12-15%.
в принципе, можно посчитать. Требовалось на каждый разряд не больше 32 импульсов, разрядов 4, плюс накладные расходы, примерно 160 импульсов. 1 импульс 1 мкс (при частоте камня 8 МГц). Тогда при частоте обновления 50 Гц, получается 8 мс. Я не учитываю время подготовки данных, дешифрования, только передачу. т.е. чисто передача занимает 8/1000 = 0,8%. У меня получалось 12% скорее всего из-за времени подготовки данных (сдвиг, перестановка нибллов и т.д. Там ещё переключение банков было). Провод был длинной сантиметров 70, обычный двухжильный, не экранированный, ни витой. Кондеры во времязадающих цепях были 5-10 пикофарад. т.е. пальцем ткнёшь в плату — и ничего не работает… но без тыкания пальцем не было ни одного видимого на глаз сбоя. Если и были единичные ошибки, то при частоте 50 Гц они не заметные. Была у меня идея статью написать, но мне показалось что это опять «открывание Америки».
  • avatar
  • Pitty
  • 26 ноября 2016, 11:53
0
Доставь схему.
  • avatar
  • Vga
  • 25 ноября 2016, 11:48
0
Это сколько ж рассыпухи вокруг индикатора навешано было?
  • avatar
  • Vga
  • 25 ноября 2016, 01:01
+1
я как-то лед 8-10 назад делал 1-проводный интерфейс для 4х разрядного 7-сегментного LCD-индикатора (т.е. голый ЖК, Без каких либо контроллеров, марку не помню, вроде толи из часов, толи ещё хз откуда). Так получилось замечательно: на PIC12F683 подпрограмма на 8 МГц отницамала всего 12% времени при этом реально по 1 проводу (т.е. к индикатору шло 2 провода: сигнальный и земля) передавались: питание, данные для создания переменного напряжения ЖК, собственно данные для индикации с частотой вроде бы 25 Гц, да ещё и опрашивалось оттуда 2 кнопки. Когда сделал, сам офигел В) а ещё больше офигел от точности АЦП этого ПИКа — 4й разряд не дёргался, стоял как вкопанный. Так что ног никогда не бывает слишком много. В)Чем больше ног — тем сложнее их развести на плате.
  • avatar
  • Pitty
  • 25 ноября 2016, 00:56
0
Спасибо за труд, podkassetnik . Без сарказма. Хороший материал для тех, кто не знал подобного способа или у кого проблемы с английским. Есть вот аппнот от Atmel-а документ, последняя ревизия 2005г, и даже контроллер AT90S1200 — музейный!
В общем, не ленитесь читать Application Notes. В том числе производителей контроллеров, которые вы не используете. По каким-то ARM-ама есть арифметика с фиксированной точкой; у NXP видел как сравнить разводки печаток для АЦП,…
  • avatar
  • Hoksmur
  • 14 ноября 2016, 19:16
+2
Это распиздяйство, Вы описали, монтажников, оно исправляется пиздюлиной или заменой монтажников. Но вот распиздяйство конструкторов стоит намного дороже! Как минимум исправлением большей части чертежей, а как вариант и закупкой половины новых комплектующих из за не влезшего, сгоревшего или просто НЕ того оборудования.
Человек чертящий всю жизнь кубики иногда должен и участвовать в сборке всей конструкции, чтоб устранять в будущем свои недочеты.
  • avatar
  • kalik
  • 03 июля 2016, 11:53
+5
[вздыхает] разработчик (инженер) тут нужен нормальный. а камни и рассыпное — просто инструменты в его руках
+4
Контролёр ОТК вышел на обед.
Резчик упростил форму радиаторов.
Гибочник спит в коптёрке.
Монтажник перестал ставить термоподкладки и достал подсохший герметик из под стола.
  • avatar
  • toxin65
  • 30 апреля 2016, 22:01
+6
Кстати, приходилось недавно поневоле плотно сталкиваться с ардуйнёй. Всё как я и ожидал — библиотеки одна отвратительней другой, среда крайне кривая и глючная, компилятор постоянно крэшится или отказывается компилировать корректный код.

Например, нужна была библиотека для работы с Modbus, взял первую из гугла. Весь код запихан в хедер — уже хорошо… Обработка ошибок невнятная, понять что произошла ошибка можно только вызывая getErrCnt и сравнивая с запомненным значением. Код ошибки то записывается в lastError, то возвращается как результат выполнения функции и т.п., короче узнать какая была ошибка почти нереально. Вот здесь, например, при получении пакетов выбрасывает без обработки всё что короче 7 байт, при этом само отправляет, скажем, пакеты эксепшенов длиной в 5 байт. И т.д. И, похоже, что таких библиотек для ардуйни — примерно каждая первая.

«IDE» в кавычках. Если, например, создаёшь вкладок, больше чем влезает в ширину окна — они тупо обрезаются без намёков на прокрутку. При нажатии кнопки Tab вместо символа табуляции вставляется рандомное число пробелов. Куча мелких косяков. При каждом запуске долбится в инет, и пока не получит ответа от сервера поганой метлой от фаервола, не запускается. Да и вообще, поскольку «IDE» наговнокожена на жабьем языке — тормозит и очень часто крэшится, выжрав память (жабий язык не умеет возвращать память системе, поэтому при запуске жабоговнопроги у системы статически отжирается кусок в N мегабайт памяти под «хип», кроме того в жабе также нету функции free, и хвалёный гц — не более чем бутафория, потому засрав эти N метров прога неминуемо крэшится).

Идущий в комплекте gcc. Не знаю, то ли сам по себе гцц в режиме С++ такой, то ли авторы ардуйни что-то намудрили, но и оно периодически отказывается компилировать, либо крэшится. Если отказывается компилировать — вываливает кучу мессаг, не несущих никакого смысла. Обычно помгает переключение между разными версиями ld.exe. Так или иначе, с нормальным avr-gcc в режиме Си подобные проблемы отсутствуют.

Тащемта, с чем я не спорю, те кто хвалит ардуйню — заслуживают всего этого. Проблема лишь в том, что им пофигу — всё равно ни на что кроме мигания диодом и запуска стандартного говна из примеров они не способны. И ещё смешно, когда ардуйнисты упоминают в пользу ардуйни «проверенные библиотеки» Проверенные кем? кучкой ламеров-дебилов, т.н. «сообществом ардуйни»? В то время, как вне собщества ардуйни популярные библиотеки действительно проверяются профессионалами и применяются в настоящих проектах.
+5
Может кому пригодится, постоянно кормлюсь на: 3dcontentcentral.com
tracepartsonline.net
и cad-design.ru/downloads/library.html
еще и выбирать можно какой формат качать=))
  • avatar
  • kalik
  • 05 мая 2015, 01:24