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

 
 
 
Reply to this topicStart new topic
> Проблема со сдвигом на TMS C28 процессоре, GPAMUX2|=1<<15 приводит к заполнению единицами старшего слова&#
sigmaN
сообщение Apr 20 2008, 18:19
Сообщение #1


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



Код:
#define GPAMUX2 (*(volatile unsigned long *)(0x6F88))

EALLOW;
GPAMUX2=0;
GPAMUX2|=1<<15;//(15 или больше)
EDIS;


В итоге: GPAMUX = 11111111111111111000000000000000b

Оптимизации компилятора отключены.
Что, он 32х разрядный сдвиг не умеет???? Чё делать?
Есть идея разбить регистр на два 16ти битных GPAMUX2H и GPAMUX2L...Но как-то не хочется этого делать...
Что посоветуете??

Из доков:
Shift Operations
The shifter holds 64 bits and accepts either a 16-bit, 32-bit, or 64-bit input
value.

Попробую щас ещё
GPAMUX2|=(unsigned long)1<<15;
Может поможет ))

Ха ха - и вправду сработало!
Ну вот, знайте товарищи, чтобы провернуть сдвиг более чем на 14 нужно принудительно привести тип к 32х битному.

Зря тему новую открыл - сам же и разобрался.
Ну может быть кому-то полезна будет.
Или удалятsmile.gif


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 20 2008, 18:32
Сообщение #2


Гуру
******

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



Цитата(sigmaN @ Apr 20 2008, 22:19) *
Что посоветуете??

Попробуйте GPAMUX2|=1UL<<15;
Go to the top of the page
 
+Quote Post
sigmaN
сообщение Apr 20 2008, 19:37
Сообщение #3


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



Цитата(aaarrr @ Apr 20 2008, 21:32) *
Попробуйте GPAMUX2|=1UL<<15;

Тоже выход.
Красивее, чем (unsigned long)1 smile.gif


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
Edmundo
сообщение Apr 21 2008, 07:04
Сообщение #4


Мастер
****

Группа: Свой
Сообщений: 730
Регистрация: 18-02-06
Из: Москва
Пользователь №: 14 474



Цитата(sigmaN @ Apr 20 2008, 22:19) *
Ну вот, знайте товарищи, чтобы провернуть сдвиг более чем на 14 нужно принудительно привести тип к 32х битному.

Мы-то знаем...
TMS-то это TMS, но книжки по C тоже почитывать не мешает sad.gif


--------------------
شامل
Go to the top of the page
 
+Quote Post
sigmaN
сообщение Apr 21 2008, 08:06
Сообщение #5


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



2Edmundo
Ну может кто, такой как я, не знал
Да я и сам быстро сориентировался, я же говорю, зря тему открыл такую ламерскую.


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th June 2025 - 17:36
Рейтинг@Mail.ru


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