Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблема со сдвигом на TMS C28 процессоре
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
sigmaN
Код:
#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
aaarrr
Цитата(sigmaN @ Apr 20 2008, 22:19) *
Что посоветуете??

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

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

Мы-то знаем...
TMS-то это TMS, но книжки по C тоже почитывать не мешает sad.gif
sigmaN
2Edmundo
Ну может кто, такой как я, не знал
Да я и сам быстро сориентировался, я же говорю, зря тему открыл такую ламерскую.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.