Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



Изучаем ARMы

Сообщений 121 страница 150 из 185

121

Я много раз пробовал и ещё буду пробовать не раз перейти на STM, но как только увижу вот такие конструкции
HAL_NVIC_SetPriorityGrouping( NVIC_PRIORITYGROUP_0 );
HAL_NVIC_SetPriority( TIM2_IRQn, 0, 0 );
HAL_NVIC_EnableIRQ( TIM2_IRQn ); o.O
так сразу понимаю, что надо быть как минимум Львом Толстым.  :crazyfun:

+2

122

sva-don написал(а):

Я много раз пробовал и ещё буду пробовать не раз перейти на STM, но как только увижу вот такие конструкции...

АНАЛОГИЧНО!!!  o.O   :'(   :tired:

0

123

RDW написал(а):

Плюс конфигурирование АРМов ещё та Жжжж, даже для этого есть готовые утилиты (с генерацией кода)...

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

RDW написал(а):

В общем это всё, так никто не смог реализовать в легкой форме использования.

Библиотека SPL облегчает конфигурирование. Или можно работать непосредственно с регистрами. Они такие как в AVR, только 16-ти и 32-ух битные.

RDW написал(а):

Даже дунь толком нет на них

Есть. https://habr.com/ru/post/395577/
https://eax.me/stm32-arduino-ide/
Только смысл? Язык C++. В прошивке много лишнего. Отладки нет.

RDW написал(а):

Много волокиты, надо нарабатывать опыт, входная точка в направление весьма большая.

Я бы так не сказал бы. Довольно быстро изучил основы и параллельно изучая Си.

sva-don написал(а):

HAL_NVIC_SetPriorityGrouping( NVIC_PRIORITYGROUP_0 );
HAL_NVIC_SetPriority( TIM2_IRQn, 0, 0 );
HAL_NVIC_EnableIRQ( TIM2_IRQn );

Это код сгенерирован автогенератора.
Но по моему код вполне читаем и несложно понять что он делает. Устанавливается 0 группа приоритетов прерываний (число групп и их наличие зависит от модели МК). Далее задается приоритет и субприоритет прерывания таймера 2. Ну и разрешается прерывание.
Приоритеты важны в том случае когда необходима функция вложенных прерываний, т. е. более высокоприоритетное прерывание прерывает менее приоритетное прерывание.

Приоритеты прерываний

http://a.radikal.ru/a29/1908/ad/6e5ea399ecb8.png

Эти куски кода не обязательно каждый раз писать. Они копируются при необходимости в них вносятся правки, т. е. изменяются несколько букс или цифр (например имя таймера другое или приоритет отличается).
Короче, не все так сложно. И нет необходимости постоянно вводить много текста. В среде программирования на этот случай работает автодополнение, предоставляющее список фраз по введенному тексту.

Свернутый текст

http://a.radikal.ru/a37/1908/bd/1fc4b65de4a1.png

sva-don написал(а):

Я много раз пробовал и ещё буду пробовать не раз перейти на STM

Для начала нужно Мартина прочитать чтобы сложилось представление о ядре и МК в целом. Литература
При возникновении вопросов, спрашивайте на форуме.

0

124

Пётр написал(а):

Для начала нужно Мартина прочитать чтобы сложилось представление о ядре и МК в целом

Там ссылка битая,тоже надо изучать стм...

0

125

Добавил кото-ссылку на Мартина.

0

126

Спасибо!
Скачал EmBlocks 2.30,буду пробовать

0

127

Обзорный вебинар по всей линейке stm32 для начинающих

0

128

Кто нибудь пробовал STM32CubeIDE - интегрированная среда разработки от ST?

0

129

EdGull написал(а):

Кто нибудь пробовал STM32CubeIDE

Этой IDE не пользовался, а  куб использовал некоторое время. Потом отказался от него.
Не знаю как сейчас, а несколько лет назад была очень плохая совместимость между версиями. Из-за чего несколько раз приходилось создавать проект с нуля потому что ранее сгенерированный кубом код оказался несовместим с текущей версией и при компиляции было много ошибок. Кроме этого в файлах можно писать код только в определенных местах, иначе он затрется кубом при очередной генерации кода.
STM32CubeIDE базируется на Eclipse написанной на Java и нужно иметь мощный комп чтобы IDE более или менее нормально работала, иначе работа очень медленная.

+1

130

На Али можно за относительно недорого (около 4$) купить STM32H750VBT6. К примеру. https://ru.aliexpress.com/item/4000345236860.html

Этот МК интересен тем что работает на частоте 480 МГц (у моего первого компа было меньше) и аппаратно поддерживает вычисления с плавающей точкой с переменными типа Single и Double. Это сильно ускоряет вычисления с плавающей точкой.

МК в 100 выводном корпусе и по документации имеет 128 КБ (реально 2 МБ) флеш памяти (с возможностью подключения Quad-SPI флешки и выполнения кода из нее) и имеет 1 МБ ОЗУ.
Для быстрой пересылки данных имеются 4 DMA контроллера в каждом по несколько каналов.
Набор периферии такой: 4 I2C, 4 USART и 4 UART, а также 1 LPUART (низкопотребляющий, работает в режиме экономии энергии).
6 SPI 3 из которых могут работать в режиме I2S, 4 SAI (последовательный аудио интерфейс), SPDIFRX интерфейс, SWPMI, MDIO, 2 SDIO, 2 CAN, 2 USB OTG, Ethernet контроллер, HDMI-CEC контроллер, интерфейс камеры.
В МК есть 3 16-ти битных АЦП с общим числом каналов до 36, 2 12-ти битных ЦАП, 2 низкопотребляющих компаратора, 2 ОУ (7 МГц максимум), DFSDM (цифровой фильтр для сигма дельта модулятора).
Имеется LCD-TFT контроллер для дисплея разрешением XGA или меньшим.
Chrom-ART графический ускоритель.
Аппаратный JPEG кодек.
20 таймеров.
Часы реального времени.
Аппаратно поддерживаются генерация случайных чисел, а также AES 128, 192, 256, TDES, MD5, SHA-1, SHA-2, HMAC.

+2

131

Пётр написал(а):

На Али можно за относительно недорого (около 4$) купить STM32H750VBT6.

Ну вообще-то 501,05 руб. - это не 4$, там ещё доставка в стоимость самого МК.

0

132

У меня стоимость доставки 25 рублей, т. е. общая стоимость 285 рублей.
Ничего не мешает поискать этот МК у других продавцов, у которых доставка может быть бесплатной или иметь небольшую стоимость.

+1

133

Генератор случайных чисел.
Решил проверить работу генератора случайных чисел в STM32F407. Для этого написал небольшую программу запускающую генератор и получающую 20 случайных чисел.

Код:
    RCC_AHB2PeriphClockCmd(RCC_AHB2Periph_RNG, ENABLE); // Включение тактирования генератора случайных чисел.
    RNG_Cmd(ENABLE); // Включаем генератор случайных чисел.

    for (uint8_t i=0; i<20; i++)
    {
        while (RNG_GetFlagStatus(RNG_FLAG_DRDY) == RESET); // Ждем завершения генерации случайного числа.

        x[i] = RNG_GetRandomNumber(); // Записываем случайное число в массив.
    }

Результат генерации.

Свернутый текст

http://b.radikal.ru/b31/2001/3a/966ec86a5c91.png

Перезапустил контроллер с выключением питания. Получил совершенно другие числа. Генератор работает.

Свернутый текст

http://a.radikal.ru/a04/2001/9f/f852405a3a2e.png

Генерация числа не требует много времени.
На скриншоте показано за сколько тактов генерируются числа.

Свернутый текст

http://b.radikal.ru/b09/2001/e0/b33e3c382476.png

Первая генерация после включения генератора происходит за 190 тактов, а последующие за 70 или 130  (на самом деле меньше, т. к. тратятся такты на чтение из счетчика DWT и запись в массив).
Учитывая что тактовая частота ядра 160 МГц, относительно которой производится измерение, это значит что возможно генерировать больше миллиона чисел в секунду.

0

134

Кто нибудь использует Visual Studio + VisualGDB?

0

135

https://habr.com/ru/company/ntc-vulkan/blog/483732/

+1

136

Пётр написал(а):

Решил проверить работу генератора случайных чисел в STM32F407.

Аналогично с недавно появившейся моделью STM32G0. МК интересен тем что производительный, низкопотребляющий и относительно дешевый. Эту модель выпускают в том числе в корпусе SO-8 - то что нужно для простых и малогабаритных конструкций.
Поскольку МК недавно появился и для него библиотеки SPL нет, написал код с использованием LL (без куба). Код получился довольно компактным и размер прошивки относительно небольшой 476 байт в релизной версии.

Код:
#include "main.h"

int main(void)
{
    uint32_t x[20]={0}; // Массив под данные.

    // Настраиваем генератор случайных чисел (RND).
    LL_RCC_SetRNGClockSource(LL_RCC_RNG_CLKSOURCE_HSI_DIV8); // Частота тактирования RND равна 2 МГц (16/8).
    LL_RCC_SetRNGClockDiv(LL_RCC_RNG_CLK_DIV1);

    LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_RNG); // Включаем тактирование RNG.
    LL_RNG_Enable(RNG);                                // Включаем RNG.

    while(1)
    {
        for (uint8_t i=0; i<20; i++)
            x[i] = LL_RNG_ReadRandData32(RNG); // Генерация случайных чисел.
    }
}
Анимационная картинка

https://upforme.ru/uploads/0000/25/b8/385/53906.gif

Файлы http://pure-basic.narod.ru/forum_files/ … 30_RND.zip

+1

137

Всем привет.
Когда то Петр написал "Из бейсиков для ARM есть mikroBasic, но он "жадный"... Лекарства для него не нашел."
А я нашел  :crazyfun:
https://upforme.ru/uploads/0000/25/b8/819/t106248.jpg
Скачал ZIP фай и в нём microС, microPascal и microBasic для АРМ. Там же лежит и два варианта лекарства от кашля.

0

138

А разве в новых версиях не USB-ключ? Вроде с месяц-два назад был на их сайте и в рекламе внизу показан именно USB-донгл.

Да и не Бейсик это! Фигово причесанная "под ЯВУ" Ся, ужасная и богомерзская  :canthearyou:   :crazy:

Бейсик: это компактность не в ущерб пониманию и не простыня в 15 символов на команду!

ну сравните, какой-же это Бейсик?!:

Lcd_Cmd(_LCD_CLEAR)               ' Очистка дисплея
Lcd_Cmd(_LCD_SHIFT_RIGHT)

А про UART вообще молчу!
PPS_Mapping(5, OUTPUT, _TX2_CK2)   ' Делает штырек 5 выходом и отображает на него выход EUSART2 Asynchronous Transmit/Synchronous Clock
UART_Remappable_Init
UART_Remappable_Read_Text(output, 'OK', 10)
if (UART_Remappable_Data_Ready() = 1) then...

И как наизусть эти извраты с подчеркиванием и перечнем команд помнить?

И, самое ужасное: ВРУЧНУЮ подключать библиотеки! Простите, что это за ЯВУ, если ручками, как в Си?!
Я неделю не мог понять причину ошибки при компиляции простейшей программы из примеров!
Оказалось, надо САМОМУ выбрать библиотеку и самому выбрать все настройки в ней...

Я с этой конторой знаком больше 20 лет, переводил на русский... Дали мне ключ для PIC. Но не применил их продукт ни разу... ))

Отредактировано Александр Д. (2025-01-04 15:15:21)

0

139

Огого какой какой высокий слог.
Учитель! Перед именем твоим Позволь смиренно преклонить колени! (Н. А. Некрасов). :huh: 
Лекарство №1 HIDDongleDLL.dll тупо меняем в каталоге на него или лекарство №2 стандартный Patch.
Александр, ну вы просто поставили меня в тупик. Либо подчёркивание, либо ничего.
Мы примерно одного возраста. Давайте уже помнить, что микропроцессоры все разные и подход к ним тоже разный.

0

140

Вот пример SOFT program Soft_UART

Код:
program Soft_UART

dim error_ as byte
    counter, byte_read as byte           ' Auxiliary variables

main:
  GPIO_Digital_Output(@GPIOD_BASE, _GPIO_PINMASK_ALL) ' digitalni output
  GPIOD_ODR = 0

  error_ = Soft_UART_Init(GPIOA_BASE, 10, 9, 115200, 0) ' Initialize Soft UART at 56000 bps
  if (error_ > 0) then
    GPIOD_ODR = error_               ' Signalize Init error
    while TRUE
      nop                                  ' Stop program
    wend
  end if
  Delay_ms(100)

  for counter = "z" to "A" step-1          ' Send bytes from "z" downto "A"
    Soft_UART_Write(counter)
    Delay_ms(100)
  next counter

  while TRUE                               ' Endless loop
    byte_read = Soft_UART_Read(error_)     ' Read byte, then test error flag
    if (error_ <> 0) then                  ' If error was detected
      GPIOD_ODR = error_             '   signal it on PORTD
    else
      Soft_UART_Write(byte_read)           ' If error was not detected, return byte read
    end if
  wend
end.

Чем не бейсик?

0

141

Прежде чем критиковать нужно разобраться в синтаксесе.
"ну сравните, какой-же это Бейсик?!:
Lcd_Cmd(_LCD_CLEAR)               ' Очистка дисплея
Lcd_Cmd(_LCD_SHIFT_RIGHT)"
В чем проблема? Первая строчка очищает дисплей, вторая сдвигает текст на одну позицию вправо. Это разные команды.

0

142

Александр Д. написал(а):

Я неделю не мог понять причину ошибки при компиляции простейшей программы из примеров!
Оказалось, надо САМОМУ выбрать библиотеку и самому выбрать все настройки в ней...

Тоже знаком не понаслышке с этой фирмой
Имею compiler для AVR и для ARM но для си, более деньги не хотел тратить
Работает всё без USB ключа,  по старинке с сериальными номерами
Подход у них конечно своеобразный, да и выглядит немного убого, ну как говорится хозяин барин, не хотите не пользуйте
Я тоже не написал на нём ни одного проекта, только наброски но до конца так и не получилось, постоянно какие-то глюки, а поддержка какая-то никакая.

0

143

каждому - своё. Мне пока ни 32 бита, ни Кортексы не нужны. Задачи нет.
А после перехода STC где 45 МГц - вообще всё летает...
Я понимаю, когда надо 120 МГц и выше под особые задачи и выбора нет - ну, тогда надо осваивать всё с нуля и на другом.
Мне же неинтересно вообще.
Вы сказали своё мнение, я - своё. Каждый остался при своём - удобно: вроде поделился, вроде осталось со мной  :cool:

+1

144

sva-don написал(а):

Когда то Петр написал "Из бейсиков для ARM есть mikroBasic, но он "жадный"... Лекарства для него не нашел."

Это давно было.

Александр Д. написал(а):

Мне пока ни 32 бита, ни Кортексы не нужны. Задачи нет.

Это только кажется что задачи нет. Или вообще ничего не разрабатываете на МК?
Ни разу не было такого что не хватало количества или битности таймеров или их предделителей? Например в STM32 до 14 таймеров 16 и 32 бит. Предделитель 16 бит с коэффициентом деления 1 - 65536, а не как в AVR, 1 , 8, 64, 256 и 1024.
У таймеров по 4 канала захвата / сравнения, а не 2 как в AVR.
Таймер может без участия проца запускать АЦП, а он в свою очередь записывать результат в память так же без участия проца.
МК может выступать в качестве симулятора если к нему подключить отладчик ST-Link, J-Link или другой. Это лучше чем программный симулятор на компе, который может не учитывать некоторые нюансы МК или периферии из-за чего может работать не так как в железе.

Ни разу такого не было что МК работал на пределе возможностей выполняя несколько задач, критичных по времени? Или в добавок к этому нужно быстро выводить информацию на графический дисплей, а МК постоянно отвлекается на другие задачи из-за чего вывод очень медленный?

Флеша и оперативки всегда хватало? Особенно когда нужно работать с MicroSD картой, требующей как минимум 512 байт, но по нормальному в несколько раз больше. Тоже можно сказать про графический дисплей.

То есть нужно пробовать и когда узнаете возможности и сравните, то с AVR не очень захочется работать.
Конечно речь идет про Си, а не про mikroBasic, который для меня оказался не очень удобным.

+1

145

Не припомню.

Обычно не хватает возможности компилятора по сравнению с возможностью другого компилятора, но который для МК другого производителя 🥺

Вот сейчас не хватает возможностей баском-авр по сравнению с баском-8051. Конечно я сам с нуля могу написать пп для такой замены, но хочется же "как раньше" 😂

0

146

sva-don написал(а):

Прежде чем критиковать нужно разобраться в синтаксесе.

Только сейчас заметил сообщение.

Я говорю о чистоте языка.

В этом плане тот же Баском гораздо продуманнее и логичнее
Cls против Lcd_Cmd(_LCD_CLEAR)
LCD"" или UART1_Write_Text()
Printbin или Soft_UART_Write()
Согласитесь, запись слева куда понятнее писанине справа, длиной в 15-20 символов.

Позволю себе судить, так как на разных Паскалях и Бейсиках писал с 14-15 лет.На заводе всё было на Паскале, всё оборудование (железо 286 и 386). Иногда на ассме писал под 8086.

Но то на любителя и на задачу :)

С Рождеством православных!

0

147

Александр Д. написал(а):

Мне пока ни 32 бита, ни Кортексы не нужны. Задачи нет.

Мне тоже хватало до поры до времени, но сейчас немного иначе. Получилось так, что пошёл работать на предприятие которое делает ...
Вообщем для замены полётника от наших друзей нужны свои разработки. Там AVR конечно же не потянет. Гироскоп, акселерометр, барометр, 4 канала ШИМ и этот минимум нужен в реальном времени. А если цеплять GPS или Glonass вообще завал получается. Приходится подстраиваться под требование века. :glasses:

Отредактировано sva-don (2025-01-06 19:06:32)

0

148

Всё верно: Есть задача - выбираем инструмент под оный ;)

0

149

Александр Д. написал(а):

Только сейчас заметил сообщение.

Я говорю о чистоте языка.

Ну вы батенька заелись. Пара слов набранные на клаве за 3 сек. нарушают чистоту языка? :dontknow:

0

150

Александр Д. написал(а):

на разных Паскалях и Бейсиках писал с 14-15 лет

Приложения под WIN я до сих пор пишу на Паскале в RAD Studio. Я переходить на другие языки совсем не намерен. Мне нравится и ни чем не хуже С и всяких там других его извращениях. :crazyfun:

0