Jump to content

    
Sign in to follow this  
Vasil_Riabko

Как включить счетчик циклов в IAR ARM 7.6

Recommended Posts

34 minutes ago, jcxz said:

Откройте уж наконец-то мануал (ARM ® v7-M Architecture Reference Manual) и прочитайте описание битов DWT_CTRL!:

Значит то, что работает DWT у Вас только потому, что 24-й бит в NVIC.DEMCR уже оказывается установленным (возможно ставится отладчиком). Если отладчик его не установит, то и работать DWT не будет. 

Описание битов DEMCR следует искать опять-же в том же мануале.

1. ARM® Cortex®-M4 ProcessorRevision: r0p1Technical Reference Manua ( Речь идет о процессоре  STM32L476 - ARM® Cortex®-M4)  раздел 9.2 DWT Programmers’ model  

Регистр DWT_CTRL - Read/write .

2. В предыдущем посте написано :

Что касается регистра DEMCR то бит TRCENA  при старте отладчика IAR установлен в 1 и никаких телодвижений не надо . А вот разрешить работу DWT надо DWT->CTRL =0X40000001 . Вопрос и возник из-за того что отладчик не включает DWT (возможно я не нашел в опциях разрешение работы DWT) .
3. обьясните что  значит 

NVIC.DEMCR |= B24;  //разрешение работы DWT.CYCCNT

точнее  NVIC.DEMCR может все таки  DEMCR. TRCENA .

Share this post


Link to post
Share on other sites
2 минуты назад, Vasil_Riabko сказал:

1. ARM® Cortex®-M4 ProcessorRevision: r0p1Technical Reference Manua ( Речь идет о процессоре  STM32L476 - ARM® Cortex®-M4)  раздел 9.2 DWT Programmers’ model  

Регистр DWT_CTRL - Read/write .

Опять 25.... :dash2:

Найдите описание битов этого регистра! Уж и не знаю как писать.... :unknw:  В этом же мануале указано где смотреть.

Что вы в описание регистров упёрлись??? Это R/W - для всего регистра. Означает оно, что в регистре есть биты R и биты W. И ничего более. А указанные старшие биты - R. И смысла писать в них что-то - нету никакого.

Я вам уже и выдержку из мануала привёл....

2 минуты назад, Vasil_Riabko сказал:

обьясните что  значит 


NVIC.DEMCR |= B24;

Это запись лог.1 в 24-й бит DEMCR.

Share this post


Link to post
Share on other sites
struct TICKCOUNTER {
	inline static void RESET ( void ) { CoreDebug->DEMCR |= 0x01000000; DWT->CYCCNT = 0; DWT->CTRL = 0; }
	inline static void START ( void ) { DWT->CTRL |= 1; }
	inline static uint32_t STOP ( void ) { DWT->CTRL &= ~1; return DWT->CYCCNT; }
};

Сделано по документации на M3.

Share this post


Link to post
Share on other sites
19 часов назад, jcxz сказал:

Откройте уж наконец-то мануал (ARM ® v7-M Architecture Reference Manual) и прочитайте описание битов DWT_CTRL!:

DWT_CTRL:NUMCOMP, bits[31:28] 
Number of comparators implemented.
A value of zero indicates no comparator support.
These bits are read-only. The reset value is IMPLEMENTATION DEFINED.

 

Значит то, что работает DWT у Вас только потому, что 24-й бит в NVIC.DEMCR уже оказывается установленным (возможно ставится отладчиком). Если отладчик его не установит, то и работать DWT не будет.

Описание битов DEMCR следует искать опять-же в том же мануале.

Внимательно прочтиайте приведенный вами текст bits[31:28] ... These bits are read-only.

есть регистр регистра DEMCR и бит  TRCENA . Чо за бит DEMCR  ?

 

17 часов назад, Nixon сказал:

struct TICKCOUNTER {
	inline static void RESET ( void ) { CoreDebug->DEMCR |= 0x01000000; DWT->CYCCNT = 0; DWT->CTRL = 0; }
	inline static void START ( void ) { DWT->CTRL |= 1; }
	inline static uint32_t STOP ( void ) { DWT->CTRL &= ~1; return DWT->CYCCNT; }
};

Сделано по документации на M3.

Спасибо !

Я так понимаю с отладчика запустить счетчик циклов нельзя. надо ручками прописать в программе.

Share this post


Link to post
Share on other sites
3 часа назад, Vasil_Riabko сказал:

Я так понимаю с отладчика запустить счетчик циклов нельзя. надо ручками прописать в программе.

Почему нельзя? Кто запретил? В старые добрые времена внешнюю SDRAM запускали в макросе и загружали в неё программу для отладки. А тут один бит записать.

Share this post


Link to post
Share on other sites
15 часов назад, VladislavS сказал:

В старые добрые времена внешнюю SDRAM запускали в макросе и загружали в неё программу для отладки.

Почему "в старые"? И сейчас так делаем.  :smile:

Share this post


Link to post
Share on other sites

Можно. 

В настройках проекта, в категории Debugger увидите поле "Setup macro". Включите галочку и выберите/создайте макро файл с командами

Язык этого файла С-подобен, пример

execUserFlashInit()
{
  // unlock flash
  __writeMemory32(0x45670123, 0x40023C04, "Memory"); // FLASH->FKEYR = FLASH_KEY1;
  __writeMemory32(0xCDEF89AB, 0x40023C04, "Memory"); // FLASH->FKEYR = FLASH_KEY2;
}
  

Более подробно читайте в help раздел "C-Spy Macro". 

По сути вы можете со своей целевой платформой творить все что захотите не загружая компилированную программу

Share this post


Link to post
Share on other sites

jcxz

 

4 hours ago, Nixon said:

Можно. 

В настройках проекта, в категории Debugger увидите поле "Setup macro". Включите галочку и выберите/создайте макро файл с командами

Язык этого файла С-подобен, пример 


execUserFlashInit()
{
  // unlock flash
  __writeMemory32(0x45670123, 0x40023C04, "Memory"); // FLASH->FKEYR = FLASH_KEY1;
  __writeMemory32(0xCDEF89AB, 0x40023C04, "Memory"); // FLASH->FKEYR = FLASH_KEY2;
}
  

Более подробно читайте в help раздел "C-Spy Macro".  

По сути вы можете со своей целевой платформой творить все что захотите не загружая компилированную программу

Спасибо понятно . Вопрос был к уважаемому JCZX  он утверждал что регистр  DWT->CTRL только для чтения

Share this post


Link to post
Share on other sites
1 hour ago, Vasil_Riabko said:

Вопрос был к уважаемому JCZX  он утверждал что регистр регистре DWT->CTRL только для чтения

Сравните ваше желание:

Quote

Можно установить бит 0  в регистре DWT->CTRL ?

С вашим исполнением:

Quote

DWT->CTRL =0X40000001;

Замечанием от jcxz:

Quote

bits[31:28] ... These bits are read-only

И кодом, который вам предложил Nixon:

Quote

DWT->CTRL |= 1;

 

Share this post


Link to post
Share on other sites
7 часов назад, Vasil_Riabko сказал:

Спасибо понятно . Вопрос был к уважаемому JCZX  он утверждал что регистр  DWT->CTRL только для чтения

Где я такое утверждал????  :shok:

И кто такой JCZX ???  :shok:

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