STM32

На этом форуме Вы можете задать вопросы знатокам программы и автору.
ecoins
Полковник
Сообщения: 4005
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 137 раз
Поблагодарили: 153 раза

STM32

Сообщение ecoins »

Nikan писал(а): 18 июл 2019, 10:26 как будет работать библа( и будет ли) без жестких рамок диспетчера задач? при наличии аппаратных прерываний (например прием данных с Uart-ов, энкодера на пинах с прерываниями) ?
и с каких пор точность таймера контроллера стала чем-то ограничена, если стала - проясните плиз.
вот пример точности 0 таймер счетчика для AVR (там где считаются mikros() и millis() ) частота 16мг.ц
Не считаю верным обсуждение в данной ветке специфики аппаратных возможностей контроллеров - тем более только для одного типа на 16мГц.
Задаваемые вопросы - это предмет аппаратного исследования. Некоторые результаты измерений - и не только наши - приведены в теме "Разработки ecoins".
aidar_i
Полковник
Сообщения: 3358
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 13 раз
Поблагодарили: 100 раз
Контактная информация:

STM32

Сообщение aidar_i »

Попробовал запустить часы встроенные в STM32.
Установил библиотеки
RTClock.rar
Добавил в пример дисплей 1602.
BluePill-RTClock-LCD.ino
[spoiler]
WhatsApp Image 2019-07-20 at 02.35.28.jpeg
[/spoiler]
Сделал ПБ , но программа ругается и падает.
Решение здесь

Поэтому соединил пример с дисплеем в скетче и выложил скетч тоже.
Время устанавливается сама.
Если подключить к разъему часов питание 3 вольта батарейкой, время не собьется при отключении питания платы. В схеме VBAT
[spoiler]
Bluepillpinout.gif
[/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось aidar_i 22 июл 2019, 07:32, всего редактировалось 2 раза.
Аватара пользователя
Rovki
Полковник
Сообщения: 5722
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 68 раз
Поблагодарили: 217 раз
Контактная информация:

STM32

Сообщение Rovki »

Вот мои стм ки скоро начнем загружать :smile37:
stm32.jpg
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Электронщик до мозга костей и не только
Anydy

STM32

Сообщение Anydy »

Вот интересно .... кто проверял --- я вот проверил на чипе за 100р. получилось как и на ардуино UNO по обьему памяти.....но у STM есть много других чипов...где памяти намного поболее!!!! Вопрос кто проверял более навороченные микрухи?
ecoins
Полковник
Сообщения: 4005
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 137 раз
Поблагодарили: 153 раза

STM32

Сообщение ecoins »

Anydy писал(а): 20 июл 2019, 14:20 Вопрос кто проверял более навороченные микрухи?
Непосредственно в Arduino IDE не проверяли - а так много работали с STM32F103V в системе Fractal
[spoiler title=Параметры STM32F103V]Ниже приведен перечень основных ресурсов STM32F103RET6 / GET6:
■ Core: ARM 32-bit Cortex™-M3 CPU
– 72 MHz maximum frequency, 1.25 DMIPS/MHz (Dhrystone 2.1) performance at 0 wait state memory access
– Single-cycle multiplication and hardware division
■ Memories
– 512 Kbytes of Flash memory /1024
– 64 Kbytes of SRAM /96
■ Clock, reset and supply management
– 2.0 to 3.6 V application supply and I/Os
– POR, PDR, and programmable voltage detector (PVD)
– Internal 8 MHz factory-trimmed RC
■ Low power
– Sleep, Stop and Standby modes
– VBAT supply for RTC and backup registers
■ 3 × 12-bit, 1 μs A/D converters (16 channels)
– Conversion range: 0 to 3.6 V
– Triple-sample and hold capability
– Temperature sensor
■ 2 × 12-bit D/A converters
■ DMA: 12-channel DMA controller
– Supported peripherals: timers, ADCs, DAC, SDIO, I2Ss, SPIs, I2Cs and USARTs
■ Debug mode
– Serial wire debug (SWD)
– Cortex-M3 Embedded Trace Macrocell™
■ 51 fast I/O ports, all mappable on 16 external interrupt vectors and almost all 5 V-tolerant
■ 11 timers
– Up to four 16-bit timers, each with up to 4 IC/OC/PWM or pulse counter and quadrature (incremental) encoder input
– 2 × 16-bit motor control PWM timers with dead-time generation and emergency stop
– 2 × watchdog timers (Independent and Window)
– SysTick timer: a 24-bit downcounter
– 2 × 16-bit basic timers to drive the DAC
■ Up to 13 communication interfaces
– Up to 2 × I2C interfaces (SMBus/PMBus) [/spoiler]
Аватара пользователя
Rovki
Полковник
Сообщения: 5722
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 68 раз
Поблагодарили: 217 раз
Контактная информация:

STM32

Сообщение Rovki »

Anydy писал(а): 20 июл 2019, 14:20 Вот интересно .... кто проверял --- я вот проверил на чипе за 100р. получилось как и на ардуино UNO по обьему памяти.....но у STM есть много других чипов...где памяти намного поболее!!!! Вопрос кто проверял более навороченные микрухи?
На всех моих стоит stm32f103vet6

Отправлено спустя 7 минут 48 секунд:
Вот эту плату по ближе сфотал ,чего там только нет ,даже джойстик, куча интефесов, разьем для дисплея :shok:
stm.jpg
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Электронщик до мозга костей и не только
Аватара пользователя
jonik22sm
Капитан
Сообщения: 792
Зарегистрирован: 20 ноя 2015, 11:28
Откуда: Краснодар
Имя: Евгений
Благодарил (а): 1 раз
Поблагодарили: 7 раз
Контактная информация:

STM32

Сообщение jonik22sm »

Так как программировать STM32 в flprog?
Можно сделать ВСЁ. Было бы желание.
aidar_i
Полковник
Сообщения: 3358
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 13 раз
Поблагодарили: 100 раз
Контактная информация:

STM32

Сообщение aidar_i »

jonik22sm писал(а): 21 июл 2019, 23:20 Так как программировать STM32 в flprog?
Ставите МЕГУ2560 и программируете.

Отправлено спустя 5 минут 58 секунд:
Здесь я пробовал сделать ПБ для встроенных часов, но программа падала, определил из за чего. Во секции фунции эта функция void SecondCount () заставляла программу сбиться. Пришлось ее перенести в секцию setup.Чтобы она правильно скомпилировалась, убрал скобку закрытия функции и добавил перед void еще одну скобку.Программа при компиляции сама добавляет еще одну скобку в конце

Код: Выделить всё

 lastGlobAlmCount = ~globAlmCount;
  lastSPECAlmCount = ~SPECAlmCount;
  //Serial.begin(115200);
  pinMode(LED_BUILTIN, OUTPUT);
  delay(1000);
  ParseBuildTimestamp(mtt);  // get the Unix epoch Time counted from 00:00:00 1 Jan 1970
  tt = rtclock.makeTime(mtt) + 25; // additional seconds to compensate build and upload delay
  rtclock.setTime(tt);
  tt1 = tt;
  rtclock.attachAlarmInterrupt(blink);// Call blink
  rtclock.attachSecondsInterrupt(SecondCount);// Call SecondCount
}
void SecondCount ()
{
  tt++;
Я этим приемом пользуюсь давно, тк были аналогичные проблемы.
Часы_1.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось aidar_i 23 июл 2019, 05:20, всего редактировалось 1 раз.
Аватара пользователя
Rovki
Полковник
Сообщения: 5722
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 68 раз
Поблагодарили: 217 раз
Контактная информация:

STM32

Сообщение Rovki »

про stm [bbvideo]https://www.youtube.com/watch?v=EJVTSSdZJoU&t=2s[/bbvideo]
чем то похоже на то что делает ecoins :smile37:
Электронщик до мозга костей и не только
ecoins
Полковник
Сообщения: 4005
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 137 раз
Поблагодарили: 153 раза

STM32

Сообщение ecoins »

Rovki писал(а): 22 июл 2019, 08:07 чем то похоже на то что делает ecoins
Да, это так, примерно этим мы и занимаемся.
Что мы пока не делаем для FLProg - не используем огромные возможности прерываний, прежде всего по таймеру исключительно для того, чтобы сохранить совместимость с другими контроллерами. Так у Arduino Nano 3 таймера - два 8-битных и один 16-битный, и все заняты разными задачами.
[spoiler title=Таймеры на AVR328 и MEGA2560]Timer1:
Timer1 это 16 битный таймер с максимальным значением счета 65535 (целое без знака). Этот таймер использует библиотека Arduino Servo, учитывайте это если применяете его в своих проектах.

Timer2:
Timer2 — 8 битный и очень похож на Timer0. Он используется в Arduino функции tone().

Timer3, Timer4, Timer5:
Чипы ATmega1280 и ATmega2560 (установлены в вариантах Arduino Mega) имеют три добавочных таймера. Все они 16 битные и работают аналогично Timer1.[/spoiler]
Планируем разрабатывать специализированные пользовательские блоки для STM32 разных серий, по возможности универсальными для других контроллеров. Это зависит не только от времени, но и от автора FLProg, который в новых версиях FLProg как то обозначит:
1. Включение STM32 в проект FLProg.
2. Выскажет/не выскажет своё положительное/отрицательное отношение к не универсальным пользовательским блокам (работающих на выборочных платформах).
-----------------------
С использованием STM32 разработанный ecoins Диспетчер задач мог бы выглядеть иначе.
Большие возможности открылись бы, если автор заложит возможность обращения к отдельным платам иным способом (по прерываниям, вызову из других плат и т.п.) - сейчас это только последовательное (в цикле loop()) выполнение плат по условиям или без них.
fsergei70
Капитан
Сообщения: 859
Зарегистрирован: 17 ноя 2015, 20:36
Имя: Сергей
Благодарил (а): 40 раз
Поблагодарили: 7 раз

STM32

Сообщение fsergei70 »

aidar_i писал(а): 22 июл 2019, 07:10 Я этим приемом пользуюсь давно, тк были аналогичные проблемы.
Часы_1.flp
Как установить время и дату в этих часах
aidar_i
Полковник
Сообщения: 3358
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 13 раз
Поблагодарили: 100 раз
Контактная информация:

STM32

Сообщение aidar_i »

Устанавливается автоматически после загрузки.
Mining
Сержант
Сообщения: 142
Зарегистрирован: 31 окт 2016, 15:01
Имя: Алексей

STM32

Сообщение Mining »

aidar_i писал(а): 22 июл 2019, 11:45 Устанавливается автоматически после загрузки.
Откуда берут стартовое время? С PC?
aidar_i
Полковник
Сообщения: 3358
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 13 раз
Поблагодарили: 100 раз
Контактная информация:

STM32

Сообщение aidar_i »

С компа

Отправлено спустя 6 минут 40 секунд:
Библиотеки лучше поставить отсюда https://github.com/rogerclarkmelbourne/Arduino_STM32.
Там в папке много библиотек для Ардуино Иде. Поставьте саму папку Arduino_STM32, не надо библиотеки вытаскивать и отдельно ставить.
aidar_i
Полковник
Сообщения: 3358
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 13 раз
Поблагодарили: 100 раз
Контактная информация:

STM32

Сообщение aidar_i »

fsergei70 писал(а): 22 июл 2019, 11:06 Как установить время и дату в этих часах
Немного поразбирался, время можно и самому установить, в описании ПБ написал как. Его можно установить через UART введя значение Unix-время (англ. Unix time). Конвертер здесь, там и есть о Unix-время. Копируете текущее Unix epoch время и через монитор компорта отправляете в STM32. Можно и через ESP8266 получать.
Подправил ПБ, убрал лишнее и настройку зоны времени вывел в параметры, добавил выход даты и времени одной строкой.
Часы_3.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось aidar_i 25 июл 2019, 10:34, всего редактировалось 1 раз.
Аватара пользователя
Nikan
Майор
Сообщения: 1194
Зарегистрирован: 29 дек 2016, 00:49
Откуда: москва

STM32

Сообщение Nikan »

.
Последний раз редактировалось Nikan 23 мар 2023, 23:36, всего редактировалось 1 раз.
aidar_i
Полковник
Сообщения: 3358
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 13 раз
Поблагодарили: 100 раз
Контактная информация:

STM32

Сообщение aidar_i »

Где-то встречал, наберите Unix время в Гугле.
Вот здесь можно посмотреть https://ru.m.wikipedia.org/wiki/Unix-%D ... 0%BC%D1%8F
Gordon0007
Сержант
Сообщения: 138
Зарегистрирован: 19 апр 2018, 13:37
Имя: Павел

STM32

Сообщение Gordon0007 »

[ref]aidar_i[/ref], А можно ли такой блок для других контроллеров? И отправить автору для интеграции в основную программу. Так сказать расширить возможности существующего блока часов, допустим чтобы появилась галочка установить время в часы STM32, DS1302, DS1307, DS3231 и др при загрузке. Считаю хорошей функцией. У меня есть один проект на УНО и DS3231, где реализована такая функция, но прошивку мне писал знакомый.

Отправлено спустя 36 минут 4 секунды:
Статья про STM32, может кому будет полезно. Довольна подробно и просто объясняется информация

STM32: управление питанием
https://blog.myelectronics.com.ua/stm32 ... %B5%D0%BC/

STM32: система прерываний
https://blog.myelectronics.com.ua/stm32 ... %b8%d0%b9/

STM32: сторожевые таймеры (WDT)
https://blog.myelectronics.com.ua/stm32 ... d1%8b-wdt/
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

STM32

Сообщение Sancho »

То-же, только высоко-уровневое использование прерываний и таймеров тут
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
aidar_i
Полковник
Сообщения: 3358
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 13 раз
Поблагодарили: 100 раз
Контактная информация:

STM32

Сообщение aidar_i »

Gordon0007 писал(а): 25 июл 2019, 08:59 А можно ли такой блок для других контроллеров? И отправить автору для интеграции в основную программу. Так сказать расширить возможности существующего блока часов, допустим чтобы появилась галочка установить время в часы STM32, DS1302, DS1307, DS3231 и др при загрузке. Считаю хорошей функцией. У меня есть один проект на УНО и DS3231, где реализована такая функция, но прошивку мне писал знакомый.
Вот эта функция читает время и раскладывает , жирным выделил строку, которые непосредственно читает дату и время
[spoiler]void ParseBuildTimestamp(tm_t & mt)
{
// Timestamp format: "Dec 8 2017, 22:57:54"
sprintf(s, "Timestamp: %s, %s\n", __DATE__, __TIME__);
//Serial.print(s);
char * token = strtok(s, delim); // get first token
// walk through tokens
while( token != NULL ) {
uint8_t m = str2month((const char*)token);
if ( m>0 ) {
mt.month = m;
//Serial.print(" month: "); Serial.println(mt.month);
token = strtok(NULL, delim); // get next token
mt.day = atoi(token);
//Serial.print(" day: "); Serial.println(mt.day);
token = strtok(NULL, delim); // get next token
mt.year = atoi(token) - 1970;
//Serial.print(" year: "); Serial.println(mt.year);
token = strtok(NULL, delim); // get next token
mt.hour = atoi(token);
//Serial.print(" hour: "); Serial.println(mt.hour);
token = strtok(NULL, delim); // get next token
mt.minute = atoi(token);
//Serial.print(" minute: "); Serial.println(mt.minute);
token = strtok(NULL, delim); // get next token
mt.second = atoi(token);
//Serial.print(" second: "); Serial.println(mt.second);
}
token = strtok(NULL, delim);
}
}[/spoiler]
Можно вывести на компорт ещё так: Serial.println(F("\n " __DATE__ " " __TIME__));
Выложте свою прошивку тоже.
Ответить

Вернуться в «Спросить у знатоков»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость