Разработка программ на С/С++
- Mr.Kubikus
 - Сотрудник ПАКПАК
 - Сообщения: 1029
 - Зарегистрирован: 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
 - Сотрудник ПАКПАК
 - Сообщения: 1029
 - Зарегистрирован: 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)