Думаю, что оба ваших предположения верны (разумеется я достоверно не знаю за разработчиков SystemView). Интересно то, что в ядре Cortex M0 (M0+) счётчик циклов DWT_CYCCNT отсутствует. Для использования SystemView придется вручную переписывать функцию чтения циклов под SysTick.
Если правильно помню, AT команды на модуль можно передавать не только через UART, но и BLE. Т.е. имеется возможность конфигурировать модуль без физического подключения к UART.
Это под каким углом смотреть. Речь же не о коммерческом решении, а DIY проекте. Вопроса оптимизации стоимости тут нет, а вот в удобстве разработки BluePill, думаю, выигрывает.
Спасибо! Адресные светодиоды очень широко распространены в наше время, гирлянда - одно из самых очевидных применений. Честно говоря, я хотел втянуть начинающих электронщиков и программистов в некую беседу, рассказ о DIY проектах на адресных светодиодах. Ваш комментарий за сутки первый. Возможно работа с "голым железом" уже не так интересна. Что ж, если идей на тему не случится, буду использовать свои. Как минимум, нужно иметь возможность управлять каждым светодиодом отдельно. Как минимум, нужно иметь возможность сохранять настройки в память и т.д. и т.п.
ножка SWCLK была настроена на Very High Speed, а частота линии составляла несколько сотен килогерц. После обнуления регистра OSPEEDR все заработало как надо...
В моём случае проблема решилась настройкой ножки SWCLK. При эксплуатации мы несколько раз сталкивались с конструктивными проблемами (соосность иголок и тестовых точек, надежность иголок, окисления и т.п.). Т.е. основные проблемы были связаны с плохими контактами.
Расскажите об участках кода, в которых, по вашему мнению, есть проблемы. Возможно, информация будет полезна сообществу.
Спасибо, почитал с большим интересом. Особенно понравилась идея секундной индикации.
Обидно, что подобные вещи выходят непомерно дорогими в производстве, а объем трудозатрат колоссальный. Рад, что тем не менее периодически находятся энтузиасты, воплощающие в жизни такие крутые идеи.
Мастерски выполненная работа, снимаю шляпу. Дайте ссылочку на описание проекта, если таковое имеется. Интересно узнать о назначении шестеренок и вообще истории разработки.
Попросил дедушку прислать что-нибудь чисто символическое, вроде шоколадки или открытки. И как же я был удивлен, увидев размер коробки. Внутри обнаружилась сотня вкусностей и сладостей из заморских стран, игра-пазл, а также 3D принтер – стартап проект, которому не суждено было увидеть свет. Есть планы это чудо оживить, как только найдется свободное время. В общем, деду Илье огромное спасибо, я в восторге!
Виктор, прежде всего спасибо за добротную информацию по CAN шине и хорошие ссылки на ресурсы. Использовал ваш код как первый шаг к запуску CAN интерфейса. Дополню обсуждение примером от keil: https://www.keil.com/download/files/stm32_can.zip (скачивается через VPN), а также замечу, что на моем STM32F103 REMAP ножку PB8 CAN_RX нужно было настроить на вход (иначе не работает).
С опытным радиодатчиком проводились испытания без преобразователя и с преобразователем. Выигрыш во втором случае был очевидным. В документации на низкопотребляющие микроконтроллеры даже приводятся соответствующие кривые/таблицы - зависимость потребления от напряжения питания. При снижении напряжения до 2,2 В, общий потребляемый ток снизился ощутимо. Допускаю, что в вашем случае общая "энергетика" лучше без преобразователя, ведь всё зависит от конкретной схемотехники.
Шаровые краны не предназначены для регулировки потока, и рассчитаны для работы в бинарном режиме "полностью открыт - закрыт".
Дело в данном случае не в кранах, а в регулировке давления между распрыскивателями. Применение кранов предлагается как возможный вариант решения задачи.
Дренаж воздуха через обратный клапан, или даже через микроотверстие никто не запрещал. Заодно сухой шланг решает проблему внутреннего обрастания.
Частное решение задачи. А если участок пологий? Да, шланги сплющиваться не будут, но растительность неизбежна. Т.е. ограничение в типах применяемых разбрызгивателей остается.
Солнечная батарея набранная из чего угодно, хоть из старых фонарей.
Есть такое в планах.
Общая идея в том, что сделать таймер достаточно просто, а вот наладить систему полива под конкретные условия - в разы труднее.
Тут сказано: "The NOINIT directive disables zero initialization for uninitialized static and global C variables. By default, the L166 Linker generates a zero initialization address table for sections with uninitialized static and global variables. The NOINIT directive suppresses this table".
А на этом ресурсе говорится следующее: "NOINIT is an 'attribute' means that this section is uninitialized or initialized to zero."
В конечном счёте по умолчанию стек инициализируется нулями, но где это происходит?
"One of the purposes of SystemInit() in the CMSIS model is to initialize the clocks and memory subsystems BEFORE initializing the statics into them.
The GNU startup.s files don't do this, whereas Keil calls SystemInit before __main, and in this case __main is the code that initializes the statics and unpacks the load regions described by the linker before calling the user's main() function."
И тут: "main is your main procedure form main.c file, once __main is an internal procedure created by Keil toolchain which is calling at the end your main, but before it is initializing all variables (copying variables from FLASH to proper positions in RAM). In gcc it is seen explicitly, in Keil you can see it within debug process."
Сделал корректировку текста по вашим замечаниям: flash point - очевидно опечатка; "запись первого значения таблицы прерываний в регистр MSP", согласен, так будет понятнее.
1. Перевод на русский язык, для тех, у кого английский на уровне технического;
2. Разбор материала, по которому иногда возникают вопросы. Например, при работе с RTOS нужно понимать, где и как размещаются стек и куча, как они инициализируются;
3. Удобно хранить ссылки на нужную информацию в одном месте, например на Хабре.
4. Узкоспециализированные темы зачастую не относятся к категории «интересные». Любопытно то, что по таким темам публикации продолжают набирать число добавлений в закладки, Хабр присылает статистику. А значит, они полезны.
Жизнеспособность плеера зависит от многих факторов, в представленном случае изначальная задумка оказалась несостоятельна. Усилители такого типа (TDA8932) можно встретить в системах речевого оповещения. Другая задача -> другие объемы -> другой результат.
У многих всё получается с первого раза, речь не только про литье пластика. Чем бы люди не занимались, выходит быстро, качественно, красиво. Меня хоть не в понедельник родили, всегда всё новое выходит долго и сложно. Вот об этом публикация, об ошибках, об лишней деятельности, о то, что не нужно спешить и делать все с расстановкой.
Совершенно верно, деталь самая простая. Более того она была напечатана и впоследствии покрашена (последнее фото сверху справа). Результат по конечному качеству сравним, хотя отливка немного выигрывает.
Не вполне правильно. Скорее хотелось попробовать литье как альтернативу печати. В текущий момент у меня нет потребности массово лить детали, но идеи периодически возникают. Поэтому просто хотелось опробовать технологию.
Думаю, что оба ваших предположения верны (разумеется я достоверно не знаю за разработчиков SystemView). Интересно то, что в ядре Cortex M0 (M0+) счётчик циклов DWT_CYCCNT отсутствует. Для использования SystemView придется вручную переписывать функцию чтения циклов под SysTick.
Если правильно помню, AT команды на модуль можно передавать не только через UART, но и BLE. Т.е. имеется возможность конфигурировать модуль без физического подключения к UART.
Это под каким углом смотреть. Речь же не о коммерческом решении, а DIY проекте. Вопроса оптимизации стоимости тут нет, а вот в удобстве разработки BluePill, думаю, выигрывает.
Спасибо! Адресные светодиоды очень широко распространены в наше время, гирлянда - одно из самых очевидных применений. Честно говоря, я хотел втянуть начинающих электронщиков и программистов в некую беседу, рассказ о DIY проектах на адресных светодиодах. Ваш комментарий за сутки первый. Возможно работа с "голым железом" уже не так интересна.
Что ж, если идей на тему не случится, буду использовать свои. Как минимум, нужно иметь возможность управлять каждым светодиодом отдельно. Как минимум, нужно иметь возможность сохранять настройки в память и т.д. и т.п.
В моём случае проблема решилась настройкой ножки SWCLK. При эксплуатации мы несколько раз сталкивались с конструктивными проблемами (соосность иголок и тестовых точек, надежность иголок, окисления и т.п.). Т.е. основные проблемы были связаны с плохими контактами.
Расскажите об участках кода, в которых, по вашему мнению, есть проблемы. Возможно, информация будет полезна сообществу.
Спасибо, почитал с большим интересом. Особенно понравилась идея секундной индикации.
Обидно, что подобные вещи выходят непомерно дорогими в производстве, а объем трудозатрат колоссальный. Рад, что тем не менее периодически находятся энтузиасты, воплощающие в жизни такие крутые идеи.
Мастерски выполненная работа, снимаю шляпу. Дайте ссылочку на описание проекта, если таковое имеется. Интересно узнать о назначении шестеренок и вообще истории разработки.
Попросил дедушку прислать что-нибудь чисто символическое, вроде шоколадки или открытки. И как же я был удивлен, увидев размер коробки. Внутри обнаружилась сотня вкусностей и сладостей из заморских стран, игра-пазл, а также 3D принтер – стартап проект, которому не суждено было увидеть свет. Есть планы это чудо оживить, как только найдется свободное время. В общем, деду Илье огромное спасибо, я в восторге!
Виктор, прежде всего спасибо за добротную информацию по CAN шине и хорошие ссылки на ресурсы. Использовал ваш код как первый шаг к запуску CAN интерфейса. Дополню обсуждение примером от keil: https://www.keil.com/download/files/stm32_can.zip (скачивается через VPN), а также замечу, что на моем STM32F103 REMAP ножку PB8 CAN_RX нужно было настроить на вход (иначе не работает).
С опытным радиодатчиком проводились испытания без преобразователя и с преобразователем. Выигрыш во втором случае был очевидным. В документации на низкопотребляющие микроконтроллеры даже приводятся соответствующие кривые/таблицы - зависимость потребления от напряжения питания. При снижении напряжения до 2,2 В, общий потребляемый ток снизился ощутимо.
Допускаю, что в вашем случае общая "энергетика" лучше без преобразователя, ведь всё зависит от конкретной схемотехники.
Дело в данном случае не в кранах, а в регулировке давления между распрыскивателями. Применение кранов предлагается как возможный вариант решения задачи.
Частное решение задачи. А если участок пологий? Да, шланги сплющиваться не будут, но растительность неизбежна. Т.е. ограничение в типах применяемых разбрызгивателей остается.
Есть такое в планах.
Общая идея в том, что сделать таймер достаточно просто, а вот наладить систему полива под конкретные условия - в разы труднее.
Файлы, необходимые для самостоятельного производства устройства добавлены в конце публикации.
Да, вопрос действительно интересный.
Тут сказано:
"The NOINIT directive disables zero initialization for uninitialized static and global C variables. By default, the L166 Linker generates a zero initialization address table for sections with uninitialized static and global variables. The NOINIT directive suppresses this table".
А на этом ресурсе говорится следующее:
"NOINIT is an 'attribute' means that this section is uninitialized or initialized to zero."
В конечном счёте по умолчанию стек инициализируется нулями, но где это происходит?
Думаю, что на ваш вопрос ответы есть тут:
"One of the purposes of SystemInit() in the CMSIS model is to initialize the clocks and memory subsystems BEFORE initializing the statics into them.
The GNU startup.s files don't do this, whereas Keil calls SystemInit before __main, and in this case __main is the code that initializes the statics and unpacks the load regions described by the linker before calling the user's main() function."
И тут:
"main is your main procedure form main.c file, once __main is an internal procedure created by Keil toolchain which is calling at the end your main, but before it is initializing all variables (copying variables from FLASH to proper positions in RAM). In gcc it is seen explicitly, in Keil you can see it within debug process."
Сделал корректировку текста по вашим замечаниям: flash point - очевидно опечатка; "запись первого значения таблицы прерываний в регистр MSP", согласен, так будет понятнее.
1. Перевод на русский язык, для тех, у кого английский на уровне технического;
2. Разбор материала, по которому иногда возникают вопросы. Например, при работе с RTOS нужно понимать, где и как размещаются стек и куча, как они инициализируются;
3. Удобно хранить ссылки на нужную информацию в одном месте, например на Хабре.
4. Узкоспециализированные темы зачастую не относятся к категории «интересные». Любопытно то, что по таким темам публикации продолжают набирать число добавлений в закладки, Хабр присылает статистику. А значит, они полезны.
Жизнеспособность плеера зависит от многих факторов, в представленном случае изначальная задумка оказалась несостоятельна. Усилители такого типа (TDA8932) можно встретить в системах речевого оповещения. Другая задача -> другие объемы -> другой результат.
У многих всё получается с первого раза, речь не только про литье пластика. Чем бы люди не занимались, выходит быстро, качественно, красиво. Меня хоть не в понедельник родили, всегда всё новое выходит долго и сложно. Вот об этом публикация, об ошибках, об лишней деятельности, о то, что не нужно спешить и делать все с расстановкой.
Совершенно верно, деталь самая простая. Более того она была напечатана и впоследствии покрашена (последнее фото сверху справа). Результат по конечному качеству сравним, хотя отливка немного выигрывает.
Не вполне правильно. Скорее хотелось попробовать литье как альтернативу печати. В текущий момент у меня нет потребности массово лить детали, но идеи периодически возникают. Поэтому просто хотелось опробовать технологию.