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

Как просматривать регистры при отладке

Добрый день

Подскажите пожалуйста как в Keil просматривать регистры контроллера при отладке программы, например, как в AVRStudio

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


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

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

Должен быть установлен пак под целевой МК, чтобы в поле SVD был выбран файл с описанием периферии.

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


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

И не забывать: если ты смотришь регистры периферии, то они считываются, а значит, возможны побочные эффекты: скажем, сбрасывается бит запроса прерывания, поскольку регистр был считан, а этот бит сбрасывается при считывании. Для периферии нет разницы, читает её регистры процессор или же отладочный порт.

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


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

19.08.2020 в 20:40, SII сказал:

И не забывать: если ты смотришь регистры периферии, то они считываются, а значит, возможны побочные эффекты: скажем, сбрасывается бит запроса прерывания, поскольку регистр был считан, а этот бит сбрасывается при считывании. Для периферии нет разницы, читает её регистры процессор или же отладочный порт.

Понял, а как тогда при отладке проверить правильность настройки периферии? Вот например хочу использовать UART, настроил тактирование,порты, сам юарт. А он взял и не заработал. И начинается пляска с даташитом и просмотр кода. При работе с авр удавалось отловить косяки просматривая регистры

19.08.2020 в 05:01, Darth Vader сказал:

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

Должен быть установлен пак под целевой МК, чтобы в поле SVD был выбран файл с описанием периферии.

Все установлено, однако все равно не работает. Гугл и оф. сайт направили на создание sfr файла из файла svd с помощью утилиты SVConv.exe однако я не могу разобраться как ее запустить. 

При стандартном запуске, как и любую другую программу двумя щелчками курсора, запускается консоль и закрывается, при этом sfr файла так и не появилось.

Гугл сказал, что нужно запустить утилиту и прописать специальную команду, однако, как я уже и сказал, я не понял как запустить утилиту

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


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

9 минут назад, mn2=n сказал:

я не понял как запустить утилиту

Забейте пока на утилиту, раз написание командных файлов для вас проблема. Сделайте проще. Поставьте пак для вашего контроллера и всё установится автоматически - SVD скомпилируется в SFR и подхватится из пака при его установке в Кейле.

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


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

3 hours ago, mn2=n said:

любую другую программу двумя щелчками курсора, запускается консоль и закрывается, при этом sfr файла так и не появилось.

Два щелчка недостаточно для программирования. Надо общий уровень повышать.
Освоить три щелчка, например.

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


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

Вот например хочу использовать UART, настроил тактирование,порты, сам юарт. А он взял и не заработал. И начинается пляска с даташитом и просмотр кода.


Ядро останавливаешь, берёшь и руками в TXDAT пишешь байт (0x55, к примеру), а в терминале на компе (плата с компом соединена должна быть) должен увидеть "U" (или эти же 0x55, если dump-режим). В терминале жмакнул "U" - проверь (F12) RXDAT: должно появиться 0x55. Если ничего нет, то однозначно в том списке из цитаты - "косяк"; вот при остановленном ядре и проверяй настройки.

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


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

8 hours ago, mn2=n said:

Понял, а как тогда при отладке проверить правильность настройки периферии? Вот например хочу использовать UART, настроил тактирование,порты, сам юарт. А он взял и не заработал. И начинается пляска с даташитом и просмотр кода.

Обычно путём пошагового выполнения программы в отладчике. Если нужно проверять состояние неких регистров -- добавить код для их чтения прямо в программу и смотреть переменные, куда было прочитано. Это позволяет считывать именно те регистры, что нужны, а не все подряд, и тем самым либо исключает побочные эффекты, либо, по крайней мере, ты знаешь, что именно было прочитано и какие при этом возможны эффекты (всё же в документации описано).

Возможно, у Вас не работает из-за того, что неверно синхронизация настроена. Скажем, взяли за основу готовый пример, где UART работает от частоты проца в 32 МГц, а у Вас реально 4 МГц; естественно, для такой ситуации надо пересчитывать множители/делители (ну или заводить проц на 32 Мгц, что тоже требует определённых телодвижений).

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


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

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

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

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

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

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

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

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

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

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