Разработка программ на С/С++
- Mr.Kubikus
- Сотрудник ПАКПАК
- Сообщения: 1020
- Зарегистрирован: 22 окт 2010, 23:57
Re: Разработка программ на С/С++
Пример программы для контроллера 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: Разработка программ на С/С++
Это сделано на базе примера из архива Programming ROBO TX Controller Version 1_5 (ZIP, 3MB) ?
Re: Разработка программ на С/С++
Не совсем, хотя стиль описания и именования похож. 2 года назад на сайте fischertechnik.de был архив значительно более объемный. Туда входил и компилятор и примеры, причем не в виде проектов. На базе 2-х примеров из того архива и был когда-то сделан приведенный примерчик. Было довольно весело писать в Notepad++, а потом делать make и с помощью батников запускать на выполнение, либо заливать в ОЗУ и во флеш. Однако детям такой подход не понравился
Re: Разработка программ на С/С++
Что-то подобное тому архивчику сейчас называется Compiler Programming package (ZIP, 48MB)