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

 
 
> побайтный доступ к регистрам периферии, он есть или нет?
jorikdima
сообщение Jan 4 2010, 10:13
Сообщение #1


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Здравствуйте.
Работаю с msp430f5418. Там куча периферии всякой и вот я споткнулся на ровном месте. Возьмем к примеру Таймер А, у которого есть такой регистр TA0CTL расположенный по адресу 0x340. Он 16 разрядный, но в UG сказано про все регистры Таймера да и не только:
Цитата
NOTE: All registers have word or byte register access. For a generic register ANYREG, the suffix
"_L" (ANYREG_L) refers to the lower byte of the register (bits 0 through 7). The suffix "_H"
(ANYREG_H) refers to the upper byte of the register (bits 8 through 15).

То есть насколько я понимаю, можно обратиться побайтно к старшей части слова TA0CTL, то есть по адресу 0x341.
Сделав такой код
Код
//UINT8* p = (UINT8*)0x341;
    //*p = 0x1;

то есть попытку записать 1 в младший бит старшего байта, компилятор сделал вполне валидную команду
Код
mov.b #1, &0x341

Но исполнение этой команды привело к записи единицы в младший бит младшего байта регистра. Почему? Тоже самое с регистрами DMA. А вот если в обычную RAM писать ровно такими же командами, то все хорошо.
Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
mdmitry
сообщение Jan 4 2010, 21:48
Сообщение #2


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Код
//UINT8* p = (UINT8*)0x341;
//*p = 0x1;

Может воспользоваться мнемоническими именами регмстров из заголовочного файла.
Работаю с 5437. Проблем не было, были проблемы с оптимизирующим компилятором от IAR. Таймер B работает строго по описанию.
Прочитайте errata а кристалл, там много про отладку. Я дебагер использовал с осторожностью.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Jan 6 2010, 07:15
Сообщение #3


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Цитата(mdmitry @ Jan 5 2010, 00:48) *
Может воспользоваться мнемоническими именами регмстров из заголовочного файла.
Работаю с 5437. Проблем не было, были проблемы с оптимизирующим компилятором от IAR. Таймер B работает строго по описанию.
Прочитайте errata а кристалл, там много про отладку. Я дебагер использовал с осторожностью.

Да я естественно с мнемонических имен и начал, тут специально привел явный адрес ибо проблема именно в нечетности адреса байта. Про дебаггер не читал с таком талмуде (других слов нет) на 5х серию, посмотрю.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 25th August 2025 - 01:22
Рейтинг@Mail.ru


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