torik 0 18 января, 2011 Опубликовано 18 января, 2011 · Жалоба Задам вопрос в этой ветке, все-таки имеет отношение к ниосу... Есть переменная float a = 0.017; Мне необходимо записать ее макросом: IOWR (FC_TECH_BASE, FCTX_CONTROL_REG, a); Т.е. "а" в двоичном коде выглядит как 0x3c8b4396. Однако передает IOWR похоже все-таки 0, видимо преобразует в int (ведь его аргумент все-таки int) Как бы мне этого избежать? Запихнуть в переменную типа int значение переменной float? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kuzmi4 0 18 января, 2011 Опубликовано 18 января, 2011 · Жалоба 2 torik вот что есть в хедере "C:\altera\10.0\ip\altera\nios2_ip\altera_nios2\HAL\inc\io.h" #define IOWR_32DIRECT(BASE, OFFSET, DATA) \ __builtin_stwio (__IO_CALC_ADDRESS_DYNAMIC ((BASE), (OFFSET)), (DATA)) так что если и есть колдунство - то со стороны компилера. А вы не пробовали посмотреть дизасм в куче с сигналтабом - как это там выглядит? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
torik 0 18 января, 2011 Опубликовано 18 января, 2011 · Жалоба Да смотрел я сигналтабом, число float 0.017 (0xbc8b4396) неявно преобразуется в int и получается, само собой 0. А мне надо 0xbc8b4396. Как быть, может через memcpy. Работает таким образом: memcpy (&k, &grad, sizeof(k)); Но это изврат какой-то. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 18 января, 2011 Опубликовано 18 января, 2011 · Жалоба IOWR/IORD работают с целыми. если есть желание, можно покопаться в http://www.altera.com/literature/ug/ug_nio...instruction.pdf и сделать аналогичные макросы для float. а есть "дубовый вариант" - возьмите указатель на плавучку, преобразуйте указатель к целому и содержимое указателя через обычные IOWR/IORD Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vetal 0 18 января, 2011 Опубликовано 18 января, 2011 · Жалоба Но это изврат какой-то. Угу. http://msdn.microsoft.com/en-us/library/5d...v=vs.80%29.aspx Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
torik 0 18 января, 2011 Опубликовано 18 января, 2011 · Жалоба IOWR/IORD работают с целыми. если есть желание, можно покопаться в http://www.altera.com/literature/ug/ug_nio...instruction.pdf и сделать аналогичные макросы для float. а есть "дубовый вариант" - возьмите указатель на плавучку, преобразуйте указатель к целому и содержимое указателя через обычные IOWR/IORD Ага, чё-то не подумал, что можно флоата также через IOWR/IORD скопировать. Угу. http://msdn.microsoft.com/en-us/library/5d...v=vs.80%29.aspx Спасибо, попробую, так вроде бы все красиво должно получиться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться