реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> работа в IAR, С++ в IAR
froakch
сообщение Nov 12 2004, 12:59
Сообщение #1





Группа: Новичок
Сообщений: 5
Регистрация: 4-11-04
Пользователь №: 1 037



Как встроить ассембл. код в C-ую программу в IAR?
Go to the top of the page
 
+Quote Post
lamerok
сообщение Nov 12 2004, 14:20
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 135
Регистрация: 22-06-04
Из: Челябинск
Пользователь №: 88



asm("NOP");
Go to the top of the page
 
+Quote Post
lamerok
сообщение Nov 12 2004, 14:24
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 135
Регистрация: 22-06-04
Из: Челябинск
Пользователь №: 88



А, вообще все написано в доке
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.
Go to the top of the page
 
+Quote Post
froakch
сообщение Nov 13 2004, 14:01
Сообщение #4





Группа: Новичок
Сообщений: 5
Регистрация: 4-11-04
Пользователь №: 1 037



Действительно, я об этом даже не подумал. А то как-то странно:

#pragma inline
....
asm {}
....

... и не работает.
Спасибо.
Go to the top of the page
 
+Quote Post
froakch
сообщение Nov 15 2004, 10:14
Сообщение #5





Группа: Новичок
Сообщений: 5
Регистрация: 4-11-04
Пользователь №: 1 037



работа с протоколом 1-Wire для устройств DS18B20,DS18B22:

возникает проблема контроля задержки, т.е. как при заданной тактовой частоте определить время вызова процедуры задержки (delay) и время выполнения одного цикла процедуры delay?

void delay(int a) // ?us
{for(int i = 0; i < a; i++);} // ?us, при a = 1;

при частоте заданной по defaultu, данные характеристики известны и программа работает, но частота слишком велика.

+ где достать описание на easyweb2?
Go to the top of the page
 
+Quote Post
Monstrer
сообщение Nov 15 2004, 10:24
Сообщение #6


Участник
*

Группа: Новичок
Сообщений: 23
Регистрация: 13-11-04
Из: Нижний Новгород
Пользователь №: 1 120



c 1 Wire не коим образом не желательно пользовать такую задержку.
тут нужно использовать или Таймер или прерывание на переключение сотояние по P1 или P2
Go to the top of the page
 
+Quote Post
froakch
сообщение Nov 15 2004, 10:33
Сообщение #7





Группа: Новичок
Сообщений: 5
Регистрация: 4-11-04
Пользователь №: 1 037



можно и через WDT и INT, но почему нельзя использовать delay?
почти во всех мануалах применяется именно эта технология работы с интерфесом 1-Wire.
есть, конечно, проблема: A=(constA - delta)/gamma, где delta - время вызова delay, gamma - время обработки 1-ого цикла, constA - время задерка,
и может случиться, что A < 0.0, но можно поставить ограничение на частоту.
Go to the top of the page
 
+Quote Post
akostin
сообщение Dec 5 2004, 15:25
Сообщение #8


Участник
*

Группа: Свой
Сообщений: 72
Регистрация: 4-12-04
Пользователь №: 1 322



Кто нибудь отлаживает на Ассемблере в IAR?
В последних версиях появились окно Watch, Trace и т.п. Каким образом там просмотреть значение ассемблерной переменной, описанной следующим образом:

org 0x200
my_var dw 1234

В окне Watch выводится адрес этой переменной (в данном случае это 0x200), но никак не содержимое ячеек по этому адресу. В хелпе IAR 3.21A приведен пример решения этого вопроса

(_ _data16 unsigned int *)my_var

но он не работает.
Подскажите, кто знает, как узнать значение ассемблерной переменной, особенно, если ее длина 1 или 2 байта, не 4, как по умолчанию в watch.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 02:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.01353 секунд с 7
ELECTRONIX ©2004-2016