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

 
 
 
Reply to this topicStart new topic
> Регистр SPI, Хочу посмотреть значение регистра
Semicon
сообщение Dec 4 2012, 10:02
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 20-08-10
Из: Москва
Пользователь №: 59 022



Привет Всем!
У меня есть следующая задача:
1)Исходные данные:
-контроллер STM32F051C6
-среда IAR for ARM 6.40.1.3812

2)Необходимо:
-посмотреть значение регистра SPI1_DR

3)Решение:
-смотрю значения в режиме Debug в IAR
-смотрю значения регистра в памяти по адресу 0x400300C
-смотрю значения в STM Studio

4)Проблема:
-отображаются значения не соответствующие моим ожиданиям((( например в случае с Debug выводит значение 0xFF

Подскажите пожалуйста кто решал для себя такую задачу - как мне точно контролировать значения которые я принимаю или отсылаю по SPI (ответы типа посмотри осциллографом не принимаются))))) - я программист)))


--------------------
http://labfun.ru
Разработка электроники
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 4 2012, 10:24
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Принять процессором, положить куда-нибудь в память и смотреть. Если пытаться смотреть debugger'ом регистры периферии, то результат очень и очень часто не будет отвечать ожиданиям.
Go to the top of the page
 
+Quote Post
Semicon
сообщение Dec 4 2012, 10:50
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 20-08-10
Из: Москва
Пользователь №: 59 022



Цитата(aaarrr @ Dec 4 2012, 14:24) *
Принять процессором, положить куда-нибудь в память и смотреть. Если пытаться смотреть debugger'ом регистры периферии, то результат очень и очень часто не будет отвечать ожиданиям.


А что корректно тогда смотреть debugger'ом ?


--------------------
http://labfun.ru
Разработка электроники
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Dec 4 2012, 11:01
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(Semicon @ Dec 4 2012, 12:50) *
А что корректно тогда смотреть debugger'ом ?

Корректно смотреть например ОЗУ.
Проблемы с периферией могут быть например такие:
отладчик подсмотрел состояние какого-нибудь UART-а, прочитав регистр данных и в результате его уже не прочитает программа - данные прочитаны и флаги о приёме сброшены.
Go to the top of the page
 
+Quote Post
scifi
сообщение Dec 4 2012, 11:04
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Semicon @ Dec 4 2012, 14:50) *
А что корректно тогда смотреть debugger'ом ?

Очевидно, имелся в виду тот факт, что чтение некоторых регистров приводит к изменению состояния периферии. Если правильно помню, то один из таких регистров - это I2C_SR1. Просмотрев по диагонали SPI, таких регистров я там не увидел. Так что эти опасения напрасны, скорее всего.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 4 2012, 11:50
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(scifi @ Dec 4 2012, 15:04) *
Просмотрев по диагонали SPI, таких регистров я там не увидел. Так что эти опасения напрасны, скорее всего.

При чтении SPI_DR будут выдернуты данные из FIFO. Последствия, думаю, понятны.

Цитата(Semicon @ Dec 4 2012, 14:50) *
А что корректно тогда смотреть debugger'ом ?

В данном случае Вам нужно завести локальную статическую переменную, и записывать в нее данные перед записью SPI_DR. Смотреть, соответственно, ее же.
SPI_DR при чтении и при записи - это два физически разных регистра.
Go to the top of the page
 
+Quote Post
KRS
сообщение Dec 4 2012, 17:31
Сообщение #7


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(Semicon @ Dec 4 2012, 14:02) *
(ответы типа посмотри осциллографом не принимаются))))) - я программист)))

При таком подходе из вас программист микроконтроллеров не получится!

Можно в окне дизассемблера поставить брекпоинт на след команду после чтения из SPI_DR.
И в окне обычных регистров посмотреть что считалось.

Кроме того часто бывает полезно не открывать регистры UART, SPI и другой периферии с FIFO потому что это может нарушить поток данных.

Цитата
Вопрос: сколько надо программистов, чтобы закрутить лампочку?
Ответ: ни одного. Это аппаратная проблема, программисты их не решают!
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 2nd August 2025 - 18:45
Рейтинг@Mail.ru


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