реклама на сайте
подробности

 
 
> Скрипты в микроконтроллере
uriy
сообщение Jan 13 2016, 14:35
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Имеется плата с STM32.
На плате есть несколько дискретных и аналоговых входов.
Есть дискретные выходы и выходы с ШИМ. И есть CAN.
Нужна возможность управления всем этим с помощью скриптов в контроллере.
Как принято делать такие вещи? Держать в контроллере какой-то интерпретатор или заливать туда предварительно скомпиленный код?
Из необходимых функций это логические операции с дискретными входами и арифметические с аналоговыми.
Временные задержки. Прием и выдача данных через CAN.

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
uriy
сообщение Apr 3 2016, 15:13
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Наконец-то добрались руки до реализации.
Накидал такой скрипт
Код
#pragma dynamic 100

native GreenLed(NewValue)
native SetPWM(NewPWM);
native BlueLed(NewValue);
native IsKeyPressed();

main()
{
   GreenLed(0);
   BlueLed(1);

   for(;;)
   {
           if(IsKeyPressed())
        {
            GreenLed(1);
             BlueLed(1);
        }
        else
        {
            GreenLed(0);
               BlueLed(0);
        }
   }
}

Функции GreenLed(NewValue) и BlueLed(NewValue) отлично работают.
Не могу понять как передать данные в скрипт из железки.
Как например считать нажатие кнопки IsKeyPressed?

В железке функция выглядит так
Код
cell IsKeyPressed(AMX *amx, const cell *params)
{
    cell ret = 0;
    if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) != GPIO_PIN_RESET)
        ret = 1;
    return ret;
}

Скрипт вызывает эту функцию и ret корректно изменяется.
Go to the top of the page
 
+Quote Post
shreck
сообщение Apr 4 2016, 09:24
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 327
Регистрация: 24-06-06
Из: Томск
Пользователь №: 18 328



Цитата(uriy @ Apr 3 2016, 21:13) *
...
Функции GreenLed(NewValue) и BlueLed(NewValue) отлично работают.
Не могу понять как передать данные в скрипт из железки.
Как например считать нажатие кнопки IsKeyPressed?

В железке функция выглядит так
Код
cell IsKeyPressed(AMX *amx, const cell *params)
{
    cell ret = 0;
    if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) != GPIO_PIN_RESET)
        ret = 1;
    return ret;
}

Скрипт вызывает эту функцию и ret корректно изменяется.


Да вроде все правильно сделали. Если native функция должна вернуть единственное значение, которое умещается в размер cell, то просто возвращаете его: return 'значение'.
Если надо вернуть много значений, то возвращаете их через ссылочные параметры функции. Например, вот функция, возвращающая массив значений:
Код
native get_tempcoef(Float:coef[6]);

и ее C-реализация:
Код
cell AMX_NATIVE_CALL n_gettempcoef(AMX * amx, const cell* params)
{
    static const float foo[6] = { bla-bla };
    // Получаем адрес массива coef:
    cell* dst = amx_Address(amx, params[1]);
    // и заполняем его значениями.
    for (uint32_t i = 0; i < 6; ++i)
    {
        float t = foo[i];
        dst[i] = amx_ftoc(t);
    }
    return 0;
}

Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- uriy   Скрипты в микроконтроллере   Jan 13 2016, 14:35
- - Огурцов   попробуйте дотнет микрофреймворк там уже и дисплеи...   Jan 13 2016, 15:14
|- - AlexandrY   Цитата(Огурцов @ Jan 13 2016, 17:14) попр...   Jan 13 2016, 22:29
|- - Kopa   Цитата(AlexandrY @ Jan 14 2016, 01:29) Ко...   Jan 13 2016, 22:58
|- - Огурцов   Цитата(AlexandrY @ Jan 13 2016, 23:29) чу...   Jan 13 2016, 23:47
|- - Kopa   Цитата(Огурцов @ Jan 14 2016, 02:47) ну п...   Jan 14 2016, 01:19
- - x893   .NET microframework MicroPython Espruino (javascri...   Jan 13 2016, 15:40
- - SSerge   Python http://micropython.org https://code.google....   Jan 13 2016, 16:24
- - _pv   до кучи еще pawn и lua (жирновата правда немного д...   Jan 13 2016, 16:52
|- - Kopa   Цитата(_pv @ Jan 13 2016, 19:52) а еще сю...   Jan 13 2016, 21:55
- - uriy   ок спасибо за ссылки буду изучать. Контроллер STM3...   Jan 13 2016, 18:05
- - arhiv6   А ещё есть интерпретатор Си (picoC) - пример. Если...   Jan 13 2016, 19:33
- - smalcom   ЦитатаНужна возможность управления всем этим с пом...   Jan 13 2016, 22:12
- - Kabdim   Имхо луа. Как с точки зрения потребления ресурсов,...   Jan 14 2016, 00:24
- - x893   Да не проблема выкинуть лишнее из всех скриптовых ...   Jan 14 2016, 02:23
- - Огурцов   совсем не прошивку можно зишифровать, а скрипты от...   Jan 14 2016, 10:50
|- - Dog Pawlowa   Цитата(Огурцов @ Jan 14 2016, 13:50) прош...   Jan 14 2016, 17:09
|- - Dog Pawlowa   Цитата(Огурцов @ Jan 14 2016, 13:50) выпо...   Jan 14 2016, 19:44
- - Огурцов   реверс чего ? скрипты и так у юзера, открытые, это...   Jan 14 2016, 18:14
|- - Dog Pawlowa   Цитата(Огурцов @ Jan 14 2016, 21:14) реве...   Jan 14 2016, 18:18
- - Огурцов   ну давайте я вам дам какую-то мою программу на c#,...   Jan 14 2016, 19:02
- - Огурцов   я не терял нить рассуждения, в отличие от - про ск...   Jan 14 2016, 22:27
- - uriy   Решил использовать pawn. Может быть у кого-нибудь ...   Jan 31 2016, 18:07
|- - shreck   Цитата(uriy @ Feb 1 2016, 00:07) Решил ис...   Feb 1 2016, 04:33
- - uriy   Спасибо! А можно еще ваш файл amxexec_thumb2.s...   Feb 1 2016, 14:43
|- - shreck   Цитата(uriy @ Feb 1 2016, 20:43) Спасибо...   Feb 2 2016, 03:19
|- - Jenya7   Цитата(shreck @ Feb 2 2016, 09:19) Файл a...   Feb 17 2016, 15:53
- - uriy   Я начал вот с этой статьи http://we.easyelectronic...   Feb 2 2016, 05:29
|- - shreck   Цитата(uriy @ Feb 2 2016, 11:29) Да читат...   Feb 2 2016, 05:48
- - uriy   Прочитал implementers guide и language guide так и...   Feb 15 2016, 09:09
|- - shreck   Цитата(uriy @ Feb 15 2016, 15:09) Прочита...   Feb 15 2016, 10:13


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 15:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01377 секунд с 7
ELECTRONIX ©2004-2016