Jump to content

    
Sign in to follow this  
froakch

работа в IAR

Recommended Posts

А, вообще все написано в доке

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.

Share this post


Link to post
Share on other sites

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

 

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

 

void delay(int a) // ?us

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

 

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

 

+ где достать описание на easyweb2?

Share this post


Link to post
Share on other sites

c 1 Wire не коим образом не желательно пользовать такую задержку.

тут нужно использовать или Таймер или прерывание на переключение сотояние по P1 или P2

Share this post


Link to post
Share on other sites

можно и через WDT и INT, но почему нельзя использовать delay?

почти во всех мануалах применяется именно эта технология работы с интерфесом 1-Wire.

есть, конечно, проблема: A=(constA - delta)/gamma, где delta - время вызова delay, gamma - время обработки 1-ого цикла, constA - время задерка,

и может случиться, что A < 0.0, но можно поставить ограничение на частоту.

Share this post


Link to post
Share on other sites

Кто нибудь отлаживает на Ассемблере в IAR?

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

 

org 0x200

my_var dw 1234

 

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

 

(_ _data16 unsigned int *)my_var

 

но он не работает.

Подскажите, кто знает, как узнать значение ассемблерной переменной, особенно, если ее длина 1 или 2 байта, не 4, как по умолчанию в watch.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this