Разработка программ на С/С++

Обсуждаем модели и конструкции, построенные своими руками
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
Сообщения: 1020
Зарегистрирован: 22 окт 2010, 23:57

Re: Разработка программ на С/С++

Сообщение Mr.Kubikus »

Привет! Про просьбу не забыл.
С уважением, Григорий
GitHub FB ВК
eee
Сообщения: 37
Зарегистрирован: 01 фев 2012, 07:41

Re: Разработка программ на С/С++

Сообщение eee »

Жду...
domserg
Сообщения: 8
Зарегистрирован: 01 фев 2018, 01:16

Re: Разработка программ на С/С++

Сообщение domserg »

Пример программы для контроллера TX.
Реализует зависимость значения мощности подаваемого на мотор от разницы между целевым и текущим значением расстояния детектируемого ультразвуковым сенсором.

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

//=============================================================================
// Demo program "US-Motor".
// Authors: Filippov Sergey and Co
// Can be run under control of the ROBO TX Controller
// firmware in download (local) mode.
// The motor, connected to the output M1, depending on
// distance to the ultrasonic sensor, connected to the input I1.
// The longer the distance, the faster rotate the motor.
//=============================================================================

#include "ROBO_TX_PRG.h"

#define SENSOR_IDX  0
#define MOTOR_NUMBER    1
#define MOTOR_IDX       (MOTOR_NUMBER - 1)

static char str[128];

/*-----------------------------------------------------------------------------
 * Function Name       : PrgInit
 *
 * This it the program initialization.
 * It is called once.
 *-----------------------------------------------------------------------------*/
void PrgInit(    TA * p_ta_array,    int ta_count)
{
    TA * p_ta = &p_ta_array[TA_LOCAL];

    // Configure input I1 to "Ultrasonic sensor" mode
    p_ta->config.uni[SENSOR_IDX].mode = MODE_ULTRASONIC;

    // Configure motor output to be used as a motor output
    p_ta->config.motor[MOTOR_IDX] = TRUE;

    // Inform firmware that configuration was changed
    p_ta->state.config_id += 1;

    // Reset counter
    p_ta->input.cnt_resetted[MOTOR_IDX] = FALSE;
    p_ta->output.cnt_reset_cmd_id[MOTOR_IDX]++;

}


/*-----------------------------------------------------------------------------
 * Function Name       : PrgTic
 *
 * This is the main function of this program.
 * It is called every tic (1 ms) realtime.
 *-----------------------------------------------------------------------------*/
int PrgTic
(
    TA * p_ta_array,    // pointer to the array of transfer areas
    int ta_count        // number of transfer areas in array (equal to TA_COUNT)
)
{
    int rc = 0x7FFF; // return code: 0x7FFF - program should be further called by the firmware;
                     //              0      - program should be normally stopped by the firmware;
                     //              any other value is considered by the firmware as an error code
                     //              and the program is stopped.
    TA * p_ta = &p_ta_array[TA_LOCAL];
    INT16 distance;
    
	distance = p_ta->input.uni[SENSOR_IDX];

    	p_ta->output.duty[2 * MOTOR_IDX] = distance*25; //DUTY_MAX=512 if dist=20

    return rc;
}
Аватара пользователя
Mr.Kubikus
Сотрудник ПАКПАК
Сообщения: 1020
Зарегистрирован: 22 окт 2010, 23:57

Re: Разработка программ на С/С++

Сообщение Mr.Kubikus »

Это сделано на базе примера из архива Programming ROBO TX Controller Version 1_5 (ZIP, 3MB) ?
С уважением, Григорий
GitHub FB ВК
domserg
Сообщения: 8
Зарегистрирован: 01 фев 2018, 01:16

Re: Разработка программ на С/С++

Сообщение domserg »

Не совсем, хотя стиль описания и именования похож. 2 года назад на сайте fischertechnik.de был архив значительно более объемный. Туда входил и компилятор и примеры, причем не в виде проектов. На базе 2-х примеров из того архива и был когда-то сделан приведенный примерчик. Было довольно весело писать в Notepad++, а потом делать make и с помощью батников запускать на выполнение, либо заливать в ОЗУ и во флеш. Однако детям такой подход не понравился :-)
domserg
Сообщения: 8
Зарегистрирован: 01 фев 2018, 01:16

Re: Разработка программ на С/С++

Сообщение domserg »

Что-то подобное тому архивчику сейчас называется Compiler Programming package (ZIP, 48MB)
Ответить