Перейти к содержанию
    

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

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 .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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.

Спасибо !

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 часа назад, Vasil_Riabko сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 часов назад, Arlleex сказал:

А это зачем?

 

Мой бездумный копипаст :) . Спасибо за указание на ошибку. Исправил.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

15 часов назад, VladislavS сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 hours ago, jcxz said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно. 

В настройках проекта, в категории 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". 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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 только для чтения

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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;

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 часов назад, Vasil_Riabko сказал:

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...