Например TDA7294

Форум РадиоКот • Просмотр темы - Система forth для микроконтроллеров stm32f0xx stm32f1xx
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 23, 2024 14:08:41

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 16 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Система forth для микроконтроллеров stm32f0xx stm32f1xx
СообщениеДобавлено: Вс апр 24, 2016 19:24:01 
Родился

Зарегистрирован: Сб апр 23, 2016 12:48:22
Сообщений: 9
Рейтинг сообщения: 0
Представляю вашему вниманию систему simple-forth-c https://sourceforge.net/projects/simpleforthc/ это реализация диалекта языка программирования forth для микроконтроллеров семейства cortex-m.
В данный момент полностью поддерживаются микроконтроллеры фирмы ST семейства stm32f0xx,stm32f1xx
Simple-forth-c доступен под лицензией MIT.
Что такое FORTH вы можете узнать по данным ссылкам https://habrahabr.ru/post/159351/,https://habrahabr.ru/post/29967/
Как собрать и установить на плату stm32f0discovery смотри вложения
Для общения с внешним миром программа использует usart1 контроллера.
В данный момент голая инсталяция системы занимает приблизительно 6,5 кбайт памяти.


Вложения:
Комментарий к файлу: система
simple-forth-c.zip [61.4 KiB]
Скачиваний: 354
Комментарий к файлу: Сборка и прошивка на stm32f0discovery
Установка simple-forth-c на stm32f0discovery.pdf [170.92 KiB]
Скачиваний: 490


Последний раз редактировалось fenphys Вс апр 24, 2016 20:39:49, всего редактировалось 2 раз(а).
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx
СообщениеДобавлено: Вс апр 24, 2016 19:53:15 
Родился

Зарегистрирован: Сб апр 23, 2016 12:48:22
Сообщений: 9
Рейтинг сообщения: 0
Для примера работы продемонстрируем как засветит светодиоды на плате stm32f0discovery
данный код необходимо ввести в программе терминала которая подключенна к порту usart1 с контроллера с установленной системой simple-forth-c,
как это сделать смотри заглавное сообщение.
Код:
HEX # переходим в шестнадцатеричный режим
: LED_INIT
40021014 # считываем значение регистра RCC_AHBENR
80000 OR # включаем тактирование порта  C
40021014 ! # записываем значения в регистр
48000800 @ 50000 OR 48000800 ! # настраиваем PC8,PC9 на выход
;
: LEDS_ON
300 4800814 ! # включаем светодиоды на пинах PC8,PC9
;

данная программа создаст два новых слова LED_INIT и LEDS_ON
чтобы светодиоды зажигались при загрузке микроконтроллера необходимо создать слово BOOT с таким содержимым
Код:
: BOOT
LED_INIT
LEDS_ON
;


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx
СообщениеДобавлено: Пн апр 25, 2016 11:42:59 
Это не хвост, это антенна
Аватар пользователя

Карма: 12
Рейтинг сообщений: 98
Зарегистрирован: Вс дек 02, 2012 03:13:48
Сообщений: 1429
Откуда: Калининград
Рейтинг сообщения: 0
Забавный язык программирования :)
Но боюсь что отсутствие типизации и "Основная проблема при программировании больших систем на форте - необходимость постоянно контролировать состояние стека после работы слова." - это стразу ставит крест на использовании.

И немножко овлеченного философствования.
Языки программирования они развивались от "свободы и расхлябанности" к "жесткой дисциплине и тоталитарности".

Например типизация переменных в C не дает нам возможность не совершить кучу ошибок. Как только мы попытаемся сделать подобное int a=1; char* b = a; - компилятор заругается.

Структуры и классы в С++ позволяют избавиться от еще пачки ошибок. Более того, благодаря ним програма начинает обладать свойствами "самодокументированности".

В Java и C# есть еще одно ограниячение - нельзя куда попало писать в память программы. Т.е. выделили массив на 100 элементов, при записи в 101 элемент программа упадет.

И это хорошо, потому как "один плохой программист" не сломает систему, в которой 10 Мб кода.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx
СообщениеДобавлено: Вт апр 26, 2016 15:16:04 
Родился

Зарегистрирован: Сб апр 23, 2016 12:48:22
Сообщений: 9
Рейтинг сообщения: 0
Я не соглашусь с balmer так как данная реализация FORTH не предназначенна для десктопа а только для микроконтроллеров, и я не встречал реализацию java или C# которую можна воткнуть в stm32f030f4 с 16 кбайт. флеши, а FORTH свободно встанет и еще место останется.
А по поводу философствования да в Java и C# один программист может быть и не сломает систему, но он может написать абсолютно не сопровождаемый код или дописать костыль что бы быстро добавить какойто функционал и в результате чего вся программа в конечном итоге будет состоять из костылей. Так что я считаю что на любом языке можно написать как "самодокументируемый код" так и "абсолютно не сопровождаемое поделие".


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx
СообщениеДобавлено: Вт апр 26, 2016 17:26:30 
Это не хвост, это антенна
Аватар пользователя

Карма: 12
Рейтинг сообщений: 98
Зарегистрирован: Вс дек 02, 2012 03:13:48
Сообщений: 1429
Откуда: Калининград
Рейтинг сообщения: 0
fenphys, давай ближе к FORTH.

Отсутствие типизации, когда ты ложишь какоето число в стек, а потом случайно выбираешь его другого типа. Там даже "заплатка" типизации придуманна - выделить для float отдельный стек. Большинство языков ругнулись бы на такое, и программист исправил бы. А так ищи-свищи по мегабайтам кода.

Про "необходимость постоянно контролировать состояние стека после работы" - тоже совершенна дурная работа. В C/C++ кода мы добавляем еще один аргумент в функцию - он везде поругается, где вызывалась функция с неправильным количеством аргументов. FORTH - это схавает, потом упадет когда нибудь. Это АД!


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx
СообщениеДобавлено: Вт апр 26, 2016 19:05:21 
Родился

Зарегистрирован: Сб апр 23, 2016 12:48:22
Сообщений: 9
Рейтинг сообщения: 0
balmer, по поводу ограниченного применения FORTH в больших системах ты прав, но данная конкретная реализация FORTH задумана быстрее как аналог arduino для Corex-M, чтобы можно была быстро запрограммировать простую "ногодрыгальную программу". Но в тоже время FORTH в отличие от arduino дает полный контроль над железом. То есть допустим человек захотел познакомится с stm32 он скачивает FORTH собирает ядро например для stm32f051R8 прошивает через загрузчик и получает работающую систему и он теперь может в реальном времени менять значения регистров конфигурации периферии и смотреть как система реагирует на это.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx
СообщениеДобавлено: Ср апр 27, 2016 02:50:31 
Грызет канифоль

Карма: 4
Рейтинг сообщений: 33
Зарегистрирован: Чт ноя 29, 2012 08:27:22
Сообщений: 295
Рейтинг сообщения: 0
в 80е у меня знакомый был - большой энтузиаст писать на Forth для Z80.
утверждал тогда , что на Форте шаттлы летают :)
регистры налету менять это интересно.

Цитата:
ложишь какоето число в стек, а потом случайно выбираешь его другого типа.
а ты работай только с инт32 и все нормально будет.
Форт - это же польский калькулятор.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx
СообщениеДобавлено: Ср апр 27, 2016 14:39:42 
Это не хвост, это антенна
Аватар пользователя

Карма: 12
Рейтинг сообщений: 98
Зарегистрирован: Вс дек 02, 2012 03:13:48
Сообщений: 1429
Откуда: Калининград
Рейтинг сообщения: 0
Ну если рассматривать Forth как скриптовый язык для микроконтроллеров :) , чтобы побыстрому написать немножко строчек кода - то таки да, имеет право на жизнь. Причем микроконтроллер должен быть мелким, иначе начнут заруливать более высокоуровневые скриптовые языки, например LUA или Python.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx
СообщениеДобавлено: Ср апр 27, 2016 16:47:52 
Друг Кота
Аватар пользователя

Карма: 94
Рейтинг сообщений: 3479
Зарегистрирован: Пн фев 09, 2009 22:19:49
Сообщений: 17569
Откуда: Когда-то был прекрасный город для людей
Рейтинг сообщения: 0
Надо же - еще жив, этот курилка... Я уже лет двадцать о нем упоминаний не встречал... Думал, вместе с Фортраном и Лиспом вымер.

Спору нет - язык этот вкупе с транслятором со свойствами интерпретатора к тому же имеет ряд изюминок, которые интересны для слабых процессоров- но из проведенных у нас в лаборатории попыток работы на нем энтузиастов продолжить использовать его не нашлось. Слишком большие затраты времени нужны при кодировании в нем. А по объему кода оказалось, что Турбо Паскаль его опережает, - и по скорости счета, а уж по удобству и возможностям языка - так вообще - земля и небо.

Слишком неуклюжий и коварный он в использовании и заточен под счетные операции. С польской логикой.... это, знаете ли, только для поляков наверно удобно...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx
СообщениеДобавлено: Чт апр 28, 2016 20:01:38 
Родился

Зарегистрирован: Сб апр 23, 2016 12:48:22
Сообщений: 9
Рейтинг сообщения: 0
Использование simple-forth-c для обработки прерывания по exti0 на плате stm32f0discovery
мы будем использовать кнопку для включения и выключения светодиода который находится на PORTC 8
вот код данного примера
Код:
HEX
: led_init # настрока PORTC 8 на выход для led
40021014  @ # считываем значения регистра разрешения тактирования
80000  OR    # включаем тактирования порта C
40021014 !  # записываем значения в регистр
48000800  @ FFFCFFFF  AND # считываем значения настройки порта C
10000 OR 48000800 !      # настраиваем PORTC 8 на выход 
48000804 @ FEFF         # настраиваем PORTC 8 push-pull   
AND 48000804 !            #   
48000808 @ FFFCFFFF      # Настраиваем PORTC 8 medium spead      
AND 10000 OR 48000808 !   #
4800080C @ FFFCFFFF      # очищаем   
AND 4800080C !         
;
: led_on
48000818 @ 100 OR 48000818 !
# Включаем светодиод
;
: led_off
48000818 @ 1000000 OR 48000818 !
# Выключаем светодиод bit set
;

HEX
: exti0_interrupt   # создаем слово обработчик прерывания EXTI0
1 40010414 ! # очищаем флаг прерывания EXTI0
   ." CLICK " CR  # выводим в терминал сообщения
   48000810 @ 100 AND  # проверяем включен ли PORTC 8
   IF          # Слово IF берет верхнее число со стека и если оно не равно 0
            # то интерпретирует его как истина
      led_off    # Если включен то выключаем
   ELSE
      led_on   # Иначе включаем
   THEN
;
FIND exti0_interrupt # находим адрес слова обработчика прерыванием
8000054           # адрес прерывания EXTI0
INTERRUPT          # регистрируем слово exti0_interrupt как прерывания по адресу 0x8000054
: exti0_init  # создаем слово настройки EXTI0
40021014  @ 20000
OR 40021014 !                    # Включаем тактирования PORTA

48000000  @ FFFFFFFFC
AND 48000000 !       # Настраиваем pin0 PORTA как вход

E000E100 @ 20          
OR E000E100 !      # включаем прерывания EXTI0
      
40010408 @ 1
OR 40010408 !      # включаем прерывания по переднему фронту сигнала
   
40010400 @ 1
OR 40010400 !      # включаем прерывания по заднему фронту сигнала
;




после загрузки необходимо вызвать слова led_init и exti0_init
или для автоматического вызова прописать их в слово BOOT
Код:
: BOOT
led_init
exti0_init
;


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx
СообщениеДобавлено: Пт апр 29, 2016 11:56:18 
Это не хвост, это антенна
Аватар пользователя

Карма: 12
Рейтинг сообщений: 98
Зарегистрирован: Вс дек 02, 2012 03:13:48
Сообщений: 1429
Откуда: Калининград
Рейтинг сообщения: 0
Сравните с записью на C инициализации порта.
Код:
GPIO_InitTypeDef  GPIO_InitStructure;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOC, &GPIO_InitStructure); 


По сравнению с вашей записью - это один большой комментарий. Т.е. надо понимать - не тот язык программирования хорошь, на котором можно кратко записать мысли. Хорошь язык, на котором мысли записаны понятно.

Потому как написание кода это совсем не главное в жизни программы. Ваш вариант - это сидит программист. Пока он работает в фирме - код работает, когда он уволился - код придется выкинуть.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx
СообщениеДобавлено: Пт апр 29, 2016 15:17:34 
Родился

Зарегистрирован: Сб апр 23, 2016 12:48:22
Сообщений: 9
Рейтинг сообщения: 0
Уважаемый balmer, у меня есть только одно замечания. Ваш приведенный код это не С а C с использованием STM32 Standard Peripheral Libraries а сравниваете данный код с простым FORTH, по моему это сравнения слегка не корректно. Так как если и проводит сравнение простого FORTH то пожалуйста с чистым ANSI C без использование каких либо библиотек. И тогда ваш пример будет иметь вид похожий на етот
Код:
#include "stm32f0xx_rcc.h"
#include "stm32f0xx_gpioc.h"

RCC_AHBENR |= 0x80000 ;
GPIOC_MODER &= 0xFFFCFFFF;
GPIOC_MODER |= 0x10000;
GPIOC_OSPEEDR &= 0xFFFCFFFF;
GPIOC_OSPEEDR |= 0x10000;
GPIOC_OTYPE &= 0xFEFF;
GPIOC_PUPDR &= 0xFFFCFFFF;



вот теперь можно сравнивать. Но по моему в данном примере читаемость кода аналогична примеру с использованием FORTH.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx
СообщениеДобавлено: Пт апр 29, 2016 17:18:33 
Это не хвост, это антенна
Аватар пользователя

Карма: 12
Рейтинг сообщений: 98
Зарегистрирован: Вс дек 02, 2012 03:13:48
Сообщений: 1429
Откуда: Калининград
Рейтинг сообщения: 0
fenphys, вы совершенно правы. На С тоже можно наговнокодить. Но не нужно.

Вопрос скорее в другом - могли бы вы Forth привести пример нормального кода?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx
СообщениеДобавлено: Чт дек 22, 2016 18:52:22 
Родился

Зарегистрирован: Сб апр 23, 2016 12:48:22
Сообщений: 9
Рейтинг сообщения: 0
Вышла новая версия simple-forth-c v0.2 теперь она запакована в инсталяционый файл в котором находятся: исходники ядра, ide разработчика , необходимые утилиты для сборки и загрузки системы.
Поскольку инсталятор для кота тяжеловат то вот ссылка на него https://sourceforge.net/projects/simpleforthc/files/install/SFCide-0.1.exe/download
а во вложении описано как с помощью ide установить simple-forth-с на систему


Вложения:
install_sfc_on_boars.rus.pdf [94.81 KiB]
Скачиваний: 237
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx
СообщениеДобавлено: Чт дек 22, 2016 19:38:11 
Прорезались зубы

Карма: -10
Рейтинг сообщений: -27
Зарегистрирован: Сб ноя 19, 2016 21:05:48
Сообщений: 203
Рейтинг сообщения: 0
Цитата:
вот код данного примера
10000 OR 48000800 ! # настраиваем PORTC 8 на выход
E000E100 @ 20
OR E000E100 ! # включаем прерывания EXTI0


Оуфак! А почему бы не писать на машинных кодах сразу???? Мама-мия. Без коммента тут нивжисть не поймешь, что означает запись. А отыскать ошибки и опечатки - это будет поистине каторжный труд! Вы в состоянии запомнить адреса всех регистров и положение всех битов? Тогда настройте-ка ЮСБ в 103-м и наладьте связь с компом по-молодецки. А я посмотрю, сколько дней у вас займет листание списка регистров и битов.
Блин, нафик я это на ночь посмотрел, теперь заснуть же не смогу от ужаса. До чего же можно изгадить простые понятные вещи. Кашшшшмар

Цитата:
Ваш приведенный код это не С а C с использованием STM32 Standard Peripheral Libraries

Нет, вы не правы.

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;

- это самый настоящий язык Си. Всё по стандарту Си - функция с параметрами, обращение к элементу структуры, присваивание ему значения. Язык си - он аппаратно независимый, посему, не важно, на каких элементах он написан, язык в чистом виде не привязан к какой-либо аппаратной платформе. Но то, что мы можем писать на Си прогу для микроконтроллера - это результат работы огромной кучи файлов, подгоняющих чистый Си под аппаратную платформу. Без нее вы не подступитесь к конкретному микроконтроллеру.
А то, что пытаетесь состряпать вы со своими цифрами - это прямая аппаратная привязка в самом исходнике, да еще в жутко изувеченной форме, с перевернутым с ног на голову порядком записи. Совершенно никакой выгоды в этом нет. Одна опечатка в цифрах - и всё, фейл и краш системы.

Раз уж хотите что-то написать, какой-нибудь плагин, то напишите какой-нибудь интерпретатор внешних команд, принимаемых по УАРТу или читаемых с текстового файла с флешки или УСБ. Но опять же, это должно быть какое-то осмысленное специализированное устройство, к которому могут быть прикручены самописные плагины, загружаемые извне и совершенно не касающиеся аппаратной части микроконтроллера.

_________________
Подпись убрал вместе с автором. aen


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Система forth для микроконтроллеров stm32f0xx stm32f1xx
СообщениеДобавлено: Вс окт 18, 2020 16:29:12 
Первый раз сказал Мяу!

Зарегистрирован: Пт фев 06, 2015 07:13:23
Сообщений: 34
Рейтинг сообщения: 0
Интересно!
Искал - что бы такое встроить в автономный контроллер для умного дома дабы закодить там самую минимальную логику когда отваливается основной моск и контроллер должен что то самое простое делать сам (так то на нём только датчики и выхода). Купился на коммент на хабре про размер, но 6.5кБ это всё же для такой минималистичной штуки - многовато.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 16 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: john1770 и гости: 32


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y