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

 
 
> iar v4.11 - disassembly непонятно работает
Юдин Алексей
сообщение Feb 26 2009, 10:57
Сообщение #1





Группа: Участник
Сообщений: 8
Регистрация: 16-10-06
Пользователь №: 21 358



Доброго времени суток. Проблема в следующем. Дизассемблер по-разному дизассемблирует один и тот же код в программе. Вот пример:

случай первый:
CODE

WDTCTL = WDTPW+WDTHOLD; // Stop watchdog timer
__low_level_init:
00C3C8 40B2 5A80 0120 mov.w #0x5A80,&WDTCTL

тут все понятно - все верно

случай второй:
CODE

WDTCTL = WDTPW + WDTHOLD;
Flash_ww:
00AB76 403E 5A80 mov.w #0x5A80,R14
00AB7A 4E4F mov.b R14,R15
00AB7C 108E swpb R14
00AB7E F03E 00FF and.w #0xFF,R14
00AB82 4FC2 0120 mov.b R15,&WDTCTL
00AB86 4EC2 0121 mov.b R14,&0x121

а вот здесь не понятно почему так, а не как в 1ом случае. Соответственно здесь меня ресетит (согласно коду в дизассемблере так и должно происходить).

В чем проблема, подскажите?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
MrYuran
сообщение Feb 26 2009, 12:51
Сообщение #2


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



УЖОСНАХ...
где только такое откопали...
CODE

#define WDTCTL_ 0x0120 /* Watchdog Timer Control */
sfrw (WDTCTL,WDTCTL_);
/* The bit names have been prefixed with "WDT" */
#define WDTIS0 0x0001
#define WDTIS1 0x0002
#define WDTSSEL 0x0004
#define WDTCNTCL 0x0008
#define WDTTMSEL 0x0010
#define WDTNMI 0x0020
#define WDTNMIES 0x0040
#define WDTHOLD 0x0080

#define WDTPW 0x5A00

/* WDT-interval times [1ms] coded with Bits 0-2 */
/* WDT is clocked by fMCLK (assumed 1MHz) */
#define WDT_MDLY_32 (WDTPW|WDTTMSEL|WDTCNTCL) /* 32ms interval (default) */
#define WDT_MDLY_8 (WDTPW|WDTTMSEL|WDTCNTCL|WDTIS0) /* 8ms " */
#define WDT_MDLY_0_5 (WDTPW|WDTTMSEL|WDTCNTCL|WDTIS1) /* 0.5ms " */
#define WDT_MDLY_0_064 (WDTPW|WDTTMSEL|WDTCNTCL|WDTIS1|WDTIS0) /* 0.064ms " */
/* WDT is clocked by fACLK (assumed 32KHz) */
#define WDT_ADLY_1000 (WDTPW|WDTTMSEL|WDTCNTCL|WDTSSEL) /* 1000ms " */
#define WDT_ADLY_250 (WDTPW|WDTTMSEL|WDTCNTCL|WDTSSEL|WDTIS0) /* 250ms " */
#define WDT_ADLY_16 (WDTPW|WDTTMSEL|WDTCNTCL|WDTSSEL|WDTIS1) /* 16ms " */
#define WDT_ADLY_1_9 (WDTPW|WDTTMSEL|WDTCNTCL|WDTSSEL|WDTIS1|WDTIS0) /* 1.9ms " */
/* Watchdog mode -> reset after expired time */
/* WDT is clocked by fMCLK (assumed 1MHz) */
#define WDT_MRST_32 (WDTPW|WDTCNTCL) /* 32ms interval (default) */
#define WDT_MRST_8 (WDTPW|WDTCNTCL|WDTIS0) /* 8ms " */
#define WDT_MRST_0_5 (WDTPW|WDTCNTCL|WDTIS1) /* 0.5ms " */
#define WDT_MRST_0_064 (WDTPW|WDTCNTCL|WDTIS1|WDTIS0) /* 0.064ms " */
/* WDT is clocked by fACLK (assumed 32KHz) */
#define WDT_ARST_1000 (WDTPW|WDTCNTCL|WDTSSEL) /* 1000ms " */
#define WDT_ARST_250 (WDTPW|WDTCNTCL|WDTSSEL|WDTIS0) /* 250ms " */
#define WDT_ARST_16 (WDTPW|WDTCNTCL|WDTSSEL|WDTIS1) /* 16ms " */
#define WDT_ARST_1_9 (WDTPW|WDTCNTCL|WDTSSEL|WDTIS1|WDTIS0) /* 1.9ms " */

/* INTERRUPT CONTROL */
/* These two bits are defined in the Special Function Registers */
/* #define WDTIE 0x01 */
/* #define WDTIFG 0x01 */

Дарю...
* © 2002 by M. P. Ashton <data@ieee.org>
* Originally based in part on work by Texas Instruments Inc.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
_3m
сообщение Feb 26 2009, 16:14
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960



Цитата(MrYuran @ Feb 26 2009, 15:51) *
УЖОСНАХ...
где только такое откопали...

В любом файле io430xxxxx.h
Действительно УЖОС!
Я давно отказался от использования io430 и применяю только msp403xxxxx.h
Че-то они перемудрили в иаре.
Go to the top of the page
 
+Quote Post



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

 


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


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