froakch 0 12 ноября, 2004 Опубликовано 12 ноября, 2004 · Жалоба Как встроить ассембл. код в C-ую программу в IAR? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lamerok 0 12 ноября, 2004 Опубликовано 12 ноября, 2004 · Жалоба asm("NOP"); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lamerok 0 12 ноября, 2004 Опубликовано 12 ноября, 2004 · Жалоба А, вообще все написано в доке MSP430 IAR C/EC++ Compiler Reference Guide for Texas Instruments’ MSP430 Microcontroller Family Сразу с рекомендациями, не использовать его так -))) INLINE ASSEMBLER It is possible to insert assembler code into a C module. The asm keyword assembles and inserts the supplied assembler statement in-line, for example: asm("MOV.W R4,R7"); Note: The asm keyword reduces the compiler’s ability to optimize the code. We recommend the use of modules written in assembler language instead of inline assembler, since the function call to an assembler routine causes less performance reduction. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
froakch 0 13 ноября, 2004 Опубликовано 13 ноября, 2004 · Жалоба Действительно, я об этом даже не подумал. А то как-то странно: #pragma inline .... asm {} .... ... и не работает. Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
froakch 0 15 ноября, 2004 Опубликовано 15 ноября, 2004 · Жалоба работа с протоколом 1-Wire для устройств DS18B20,DS18B22: возникает проблема контроля задержки, т.е. как при заданной тактовой частоте определить время вызова процедуры задержки (delay) и время выполнения одного цикла процедуры delay? void delay(int a) // ?us {for(int i = 0; i < a; i++);} // ?us, при a = 1; при частоте заданной по defaultu, данные характеристики известны и программа работает, но частота слишком велика. + где достать описание на easyweb2? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Monstrer 0 15 ноября, 2004 Опубликовано 15 ноября, 2004 · Жалоба c 1 Wire не коим образом не желательно пользовать такую задержку. тут нужно использовать или Таймер или прерывание на переключение сотояние по P1 или P2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
froakch 0 15 ноября, 2004 Опубликовано 15 ноября, 2004 · Жалоба можно и через WDT и INT, но почему нельзя использовать delay? почти во всех мануалах применяется именно эта технология работы с интерфесом 1-Wire. есть, конечно, проблема: A=(constA - delta)/gamma, где delta - время вызова delay, gamma - время обработки 1-ого цикла, constA - время задерка, и может случиться, что A < 0.0, но можно поставить ограничение на частоту. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
akostin 0 5 декабря, 2004 Опубликовано 5 декабря, 2004 · Жалоба Кто нибудь отлаживает на Ассемблере в IAR? В последних версиях появились окно Watch, Trace и т.п. Каким образом там просмотреть значение ассемблерной переменной, описанной следующим образом: org 0x200 my_var dw 1234 В окне Watch выводится адрес этой переменной (в данном случае это 0x200), но никак не содержимое ячеек по этому адресу. В хелпе IAR 3.21A приведен пример решения этого вопроса (_ _data16 unsigned int *)my_var но он не работает. Подскажите, кто знает, как узнать значение ассемблерной переменной, особенно, если ее длина 1 или 2 байта, не 4, как по умолчанию в watch. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться