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

 
 
> IAR 2.10.5 STM8
-AZ-
сообщение Dec 24 2015, 22:35
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 85
Регистрация: 20-09-15
Пользователь №: 88 488



Кто то может уже натыкался на данную проблему, подскажите пожалуйста
Пишу:
Код
unsigned long long i;
i=(((unsigned long long)1)<<0x20);

так вот без ошибки компилирует если сдиг не более 0x1F, если 0x20 и больше выдает ошибку - Warning[Pe063]: shift count is too large
Как это победить, в чем проблема?

Сообщение отредактировал IgorKossak - Dec 25 2015, 10:53
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aiwa
сообщение Dec 25 2015, 10:01
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 301
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682



Цитата(phenixs @ Dec 25 2015, 10:46) *
У меня единственная операция, это сдвиг вправо(влево) в цикле 64 раза...
Вот и не пойму как разделить это дело ...

Если у Вас единственный сдвиг 0x01 конкретно на 64 бита, то для структуры достаточно операции
Код
struct U64 {
  uint32_t low, hi;
};

low = 0x00;  
hi   = 0x01;
А если встречается различное количество сдвигов то удобнее тип оформить в виде массива 8 байт d[8] и
саму сдвижку производить на ассемблере по алгоритму:
1. d[0] - логический сдвиг для заноса в carry-флаг старшего бита
2. с d[1] - и далее - циклический сдвиг

на С сдвиг на 1 приблизительно так:
CODE
unsigned char carry;

carry = d[0];
d[0]<<=0x01;
for (i=1; i<8;i++)
{
if(carry&0x80)
{
carry=d[i];
d[i]<<=0x01;
d[i]|=0x01;
}
else
{
carry=d[i];
d[i]<<=0x01;
}
}


Сообщение отредактировал IgorKossak - Dec 25 2015, 10:55
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!
Go to the top of the page
 
+Quote Post
-AZ-
сообщение Dec 25 2015, 12:04
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 85
Регистрация: 20-09-15
Пользователь №: 88 488



Это все ужасно долго, нужно сделать 1 сдвиг, потом передача в DMA и т.д. потом еще сдвиг и т.д. всего 60 - 62 раза, а если делать так это ай-ай ............

Сообщение отредактировал IgorKossak - Dec 25 2015, 18:59
Причина редактирования: бездумное цитирование
Go to the top of the page
 
+Quote Post
scifi
сообщение Dec 25 2015, 18:47
Сообщение #4


Гуру
******

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



Цитата(phenixs @ Dec 25 2015, 15:04) *
Это все ужасно долго, нужно сделать 1 сдвиг, потом передача в DMA и т.д. потом еще сдвиг и т.д. всего 60 - 62 раза, а если делать так это ай-ай ............

Ну тогда вам ассемблер нужен. По моему опыту яр для стм8 плохенько умеет оптимизировать. Делал i2c ногодрыгом с разгоном (порядка 2 Мбит/м) - сделал на ассемблере. Отлично получилось. Могу пример предоставить.
Go to the top of the page
 
+Quote Post
-AZ-
сообщение Dec 28 2015, 04:56
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 85
Регистрация: 20-09-15
Пользователь №: 88 488



Цитата(scifi @ Dec 25 2015, 21:47) *
Ну тогда вам ассемблер нужен. По моему опыту яр для стм8 плохенько умеет оптимизировать. Делал i2c ногодрыгом с разгоном (порядка 2 Мбит/м) - сделал на ассемблере. Отлично получилось. Могу пример предоставить.


как вы реализовали функции delay ? на TIM4 ? а то с этим у stm8 тоже проблемы.........
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- phenixs   IAR 2.10.5 STM8   Dec 24 2015, 22:35
- - aiwa   Это не ошибка, а предупреждение, что разрядность т...   Dec 25 2015, 00:46
|- - phenixs   То что 32 бита это я уже понял, как примерно оформ...   Dec 25 2015, 04:38
- - Непомнящий Евгений   Кодstruct U64 { uint32_t low, hi; }; ну и даль...   Dec 25 2015, 06:15
|- - phenixs   У меня единственная операция, это сдвиг вправо(вле...   Dec 25 2015, 08:46
- - Непомнящий Евгений   Если я ничего не напутал, то что-то в таком духе К...   Dec 25 2015, 08:57
|- - phenixs   ну похоже.. я вот не пойму в чем прикол, IAR именн...   Dec 25 2015, 09:25
|- - Непомнящий Евгений   Цитата(phenixs @ Dec 25 2015, 12:25) я во...   Dec 25 2015, 09:28
|- - phenixs   Цитата(Непомнящий Евгений @ Dec 25 2015, 12...   Dec 25 2015, 09:39
|- - Непомнящий Евгений   Цитата(phenixs @ Dec 25 2015, 12:39) А не...   Dec 25 2015, 09:56
|- - phenixs   Цитата(scifi @ Dec 25 2015, 21:47) Ну тог...   Dec 25 2015, 19:52
||- - aiwa   Цитата(phenixs @ Dec 25 2015, 21:52) а во...   Dec 25 2015, 21:31
||- - phenixs   Без С++ class не собирается, как правильно это на ...   Dec 27 2015, 10:40
- - aiwa   Цитата(phenixs @ Dec 25 2015, 14:04) Это ...   Dec 25 2015, 13:48
|- - phenixs   Сечас попробую так временные интервалы измерить......   Dec 25 2015, 15:29
- - aiwa   Жестокий у Вас препод, если С++ не разрешает. На С...   Dec 27 2015, 18:59
- - Dog Pawlowa   Цитата(aiwa @ Dec 27 2015, 21:59) но начи...   Dec 28 2015, 03:48
- - aiwa   Цитата(Dog Pawlowa @ Dec 28 2015, 05:48) ...   Dec 28 2015, 09:49
- - Dog Pawlowa   Цитата(aiwa @ Dec 28 2015, 12:49) деклари...   Dec 28 2015, 12:01


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 21:15
Рейтинг@Mail.ru


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