16+
Суббота
23 сентября
Вход |Карта сайта | |Upload |codebook | PARTS

 О смысле всего сущего 0xFF

 Средства и методы разработки

 Мобильная и беспроводная связь

 Блошиный рынок Объявления

caxapa

Микроконтроллеры ARM 

AVR PIC MSP PLD,FPGA,DSP 

Кибернетика Технологии 

Схемы, платы, компоненты 

Микроконтроллеры

 
   Новая тема Правила Регистрация Поиск »» Архив
Вернуться в конференциюТопик полностью
AVF  (10.09.2017 13:04) , в ответ на Я обычно группирую данные по логической связанности +из-за особенностей ПО устройства некоторые данные могут идти только в определенной последовательности (например, массивы структур из памяти МК отображаемые на регистры Modbus). Оставляю между автор: AlexG
делаю массив указателей на параметры, т.е. если спрашивают регистр Х, то в массиве по адресу Х лежит указатель на нужную переменную, получается дикий оверхед по флэши - 4 байта на каждый параметр, но сильно упрощает все остальное. Делаю в виде 
файлика modbus_cfg.h примерно такого содержания
#ifndef MODBUS_CONF_H
#define MODBUS_CONF_H

#define NUM_REG_INPDISCRETE		1
#define NUM_REG_COILS			1
#define NUM_COILS				4

#define NUM_REG_INPUT_16		16
#define NUM_REG_INPUT_32		16
#define NUM_REG_INPUT_FLOAT		260

#define NUM_REG_HOLDING_16		16
#define NUM_REG_HOLDING_32		16
#define NUM_REG_HOLDING_FLOAT	16


#define APPADR_INPDISCRETE		0x0000
#define APPADR_COILS			0x0000

#define APPADR_INPUT_16			0x0000
#define APPADR_INPUT_32			0x1000
#define APPADR_INPUT_FLOAT		0x2000

#define APPADR_HOLDING_16		0x0000
#define APPADR_HOLDING_32		0x1000
#define APPADR_HOLDING_FLOAT	0x2000


extern EECONFIG eeCfg;
uint16_t * pRegHolding16[NUM_REG_HOLDING_16] =
{
	(uint16_t *)&eeCfg.eeModbusSlaveAdr,
	(uint16_t *)&eeCfg.eeModbusSpeed_x10,
	0	// указатель на последний регистр обязательно 0, чтобы остановить считывание
};

uint16_t * pRegInputFloat[NUM_REG_INPUT_FLOAT] =
{
	// flow1
	(uint16_t *)&conc[0].result[0],
	(uint16_t *)&conc[0].result[0] + 1,
	0
}

#endif
 [x][x][x][x][x][x] [x][x][x][x][x][x][x][x]

Тема выделяется по переводу строки или автоматом

 

Имя


Регистрация позволит вам редактировать и перемещать ваши сообщения и прикреплять к ним файлы.
 
Символы: á é ó ú ý « »
Главная | Карта сайта | О проекте | Проекты | Файлообменник | Регистрация | Вебмастер | RSS
Лето 7526 от сотворения мира. При использовании материалов сайта ссылка на caxapу обязательна.
MMI © MMXVII