Jump to content

    
Sign in to follow this  
mn2=n

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

Recommended Posts

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
19.08.2020 в 20:40, SII сказал:

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

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

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

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

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

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

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

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

Share this post


Link to post
Share on other sites
9 минут назад, mn2=n сказал:

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

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

Share this post


Link to post
Share on other sites
3 hours ago, mn2=n said:

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

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

Share this post


Link to post
Share on other sites

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


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

Share this post


Link to post
Share on other sites
8 hours ago, mn2=n said:

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

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

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

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