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

 
 
> Интересный глюк в CodeVisionAVR
DMD
сообщение Apr 17 2008, 09:02
Сообщение #1


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

Группа: Свой
Сообщений: 120
Регистрация: 19-02-08
Пользователь №: 35 166



Обнаружил интересный глюк в CodeVision, целый день вчера просидел - думал во мне дело, оказалось, что нет.
Если мы делаем сдвиг и результирующее число выходит из размера 1 байта, то, почему-то, компилятор не преобразует его к int (хотя обязан по стандарту). То есть вот такой код работает непрявильно:
Код
unisigned char s = 243;
//...
unsigned int d = (unsigned int)(s << 4);  // d != 3888


а надо так делать, что глупо...

Код
unisigned char s = 243;
//...
unsigned int d = (unsigned int)(((unsigned int)s) << 4);  // d = 3888


Интересно, зачем это надо или это просто баг??..


--------------------
Все будет хорошо! Я проверял!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SasaVitebsk
сообщение Dec 4 2008, 20:56
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Стоимость LCD от 3.5$ за 2х16 до 11 за 4х20. Думаю экзотика в виде SPI LCD будет на 1$ дороже (За счёт экзотичности). Таким образом применив ATMega8, к примеру, и зашив там свою кодовую таблицу (Или несколько) вы можете получить за теже деньги LCD модуль с любым интерфейсом. SPI,I2C,RS232. Если туда добавить клаву, звук, светодиоды, то вообще такой законченный переферийный модуль будет себя оправдывать. Остаётся вопрос конструкции. smile.gif

По поводу ASM вставок.
Как то не совсем себе представляю ASM текст прямо по тексту Си программы. Если это работа с оборудованием, то как правило IAR её делает не хуже, а если просто прога, то смутно себе представляю. С другой стороны вызов законченной процедуры вполне уместен и не портит картину. Ну или там прерывание полностью на ASMе. Это я понимаю. Это как раз делается легко на IAR и просто.

Какие сложности? Просто берёшь и пишешь отдельным файлом все свои процедуры ASM. Никакого гимора нет. Ну и включаешь в проект общий, да и всё! Никаких дополнительных танцев с бубном не надо.
Go to the top of the page
 
+Quote Post
delamoure
сообщение Dec 4 2008, 21:25
Сообщение #3


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

Группа: Свой
Сообщений: 176
Регистрация: 2-04-08
Из: Днепропетровск
Пользователь №: 36 406



Цитата(SasaVitebsk @ Dec 4 2008, 22:56) *
По поводу ASM вставок.
Как то не совсем себе представляю ASM текст прямо по тексту Си программы. Если это работа с оборудованием, то как правило IAR её делает не хуже, а если просто прога, то смутно себе представляю. С другой стороны вызов законченной процедуры вполне уместен и не портит картину. Ну или там прерывание полностью на ASMе. Это я понимаю. Это как раз делается легко на IAR и просто.

Какие сложности? Просто берёшь и пишешь отдельным файлом все свои процедуры ASM. Никакого гимора нет. Ну и включаешь в проект общий, да и всё! Никаких дополнительных танцев с бубном не надо.


Если действительно "прямо по тексту" я тоже смысла не вижу.
А обработчики прерываний пишу очень часто целиком на асме.
В CodeVision ставишь себе pragma savereg- и - вперед.
В IAR буду разбираться, пробовать. Настал момент смены компилятора. С переходом на CodeVision2 старые проекты без переработок не компилируются.


--------------------
Ребята, как же это вы без гравицапы пепелац выкатываете из гаража? Это непорядок. ©
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Dec 4 2008, 23:39
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(delamoure @ Dec 5 2008, 01:25) *
В CodeVision ставишь себе pragma savereg- и - вперед.
В IAR буду разбираться, пробовать. Настал момент смены компилятора. С переходом на CodeVision2 старые проекты без переработок не компилируются.

А в IAR и pragma никакая не нужна.
Просто создаёшь отдельный файл с расширением ASM, пишешь в нём свою прогу, с синтаксисом ASM, и подключаешь его к проекту.

Ключевые слова ассемблера IAR не критично отличаются от стандартного набора. Я бы даже сказал, что он "более стандартен", чем ассемблер AVR Studio. Есть доки. В том числе и дока по переходу со студии на IAR ASM. К слову сказать документ простой, так как различий практически нет. Если есть какие вопросы - задавай. Много кто ответит.

Вот попытался резануть кусочек для примера: smile.gif
Код
PUBLIC    crc8

#define        crc                r10
#define        data485            r16

        RSEG  CODE

// Расчёт CRC
// r10 - crc485, 16 - data, портятся r17,r18,r19
crc8:
        ldi        r17,8
//        mov        r12,data485
        ldi        r18,0x18
cCRC8:
        mov        r19,crc
        eor        r19,data485
        lsr        r19                                            // Сдвинули бит в С
        brcc    nCRC8
        eor        crc,r18
nCRC8:
        ror        crc
        lsr        data485
        dec        r17
        brne    cCRC8
        ret

END


Соответственно в Си проге я её могу вызвать следующим образом

Код
__regvar  __no_init uint8_t        crc @10;
....


    crc8(ADDR_DEFAULT);                                    // Подсчитать crc


Может это и не характерный пример. Дело в том, что это кусок вырезанный из бутлоадера для меги 8.
Для уменьшения размера кода пришлось запретить компилятору использовать несколько регистров (в том числе R10 как вы видите) и разместить там переменные, обращение к которым является найболее частым.

В результате в 2к влез бутлоадер с WakeUp протоколом с шифрованием 128 битным ключём. С выдачей полной информации по кристаллу, изделию, фирмваре и хардваре. Ну и некоторый другой сервис.

Пришлось дешифрацию и некоторые распространённые процедуры (типа crc) написать на ASM.
Очень доволен результатом.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- DMD   Интересный глюк в CodeVisionAVR   Apr 17 2008, 09:02
- - Сергей Борщ   Да, выходит, это еще одно несоответствие стандарту...   Apr 17 2008, 09:17
|- - defunct   Цитата(Сергей Борщ @ Apr 17 2008, 11:17) ...   Dec 3 2008, 00:15
|- - Сергей Борщ   Цитата(defunct @ Dec 3 2008, 02:15) Можно...   Dec 3 2008, 01:58
|- - zhevak   Цитатаdefunct[/b]' date='Dec 3 2008, 05:15...   Dec 3 2008, 21:26
|- - defunct   zhevak за подробнейшие ответы.   Dec 3 2008, 22:47
|- - LordVader   Цитата(zhevak @ Dec 4 2008, 01:26) Если L...   Dec 4 2008, 10:26
|- - zhevak   Цитата(LordVader @ Dec 4 2008, 15:26) Сущ...   Dec 4 2008, 10:47
|- - LordVader   Цитата(zhevak @ Dec 4 2008, 13:47) Я вам ...   Dec 4 2008, 18:22
|- - zhevak   Цитата(LordVader @ Dec 4 2008, 23:22) Ну ...   Dec 4 2008, 19:15
- - prottoss   Цитата(DMD @ Apr 17 2008, 16:02) Обнаружи...   Apr 17 2008, 10:31
|- - Сергей Борщ   Цитата(prottoss @ Apr 17 2008, 13:31) А п...   Apr 17 2008, 11:20
|- - prottoss   Цитата(Сергей Борщ @ Apr 17 2008, 18:20) ...   Apr 18 2008, 00:42
|- - Andrew O. Shadoura   Цитата(Сергей Борщ @ Apr 17 2008, 14:20) ...   Apr 18 2008, 02:01
- - WHALE   Цитата(DMD @ Apr 17 2008, 13:02) Обнаружи...   Apr 17 2008, 12:33
- - DMD   Ворнинги не генерились, что и странно. А насчет то...   Apr 18 2008, 09:41
- - ReAl   Цитата(DMD @ Apr 17 2008, 12:02) Обнаружи...   Apr 18 2008, 14:50
|- - zhevak   Выбрось каку Прошу не пинать -- прошелся поиском...   Dec 2 2008, 15:52
||- - Nick_Shl   Цитата(zhevak @ Dec 2 2008, 17:52) Вопрос...   Dec 3 2008, 06:15
|- - delamoure   Цитата(ReAl @ Apr 18 2008, 16:50) Уже обс...   Dec 3 2008, 11:48
|- - Сергей Борщ   Цитата(delamoure @ Dec 3 2008, 13:48) Но ...   Dec 3 2008, 13:35
|- - SasaVitebsk   Цитата(Сергей Борщ @ Dec 3 2008, 17:35) Т...   Dec 3 2008, 23:53
|- - Qwertty   Цитата(SasaVitebsk @ Dec 4 2008, 02:53) В...   Dec 4 2008, 04:57
|- - Сергей Борщ   Цитата(SasaVitebsk @ Dec 4 2008, 01:53) А...   Dec 4 2008, 09:36
- - _Pasha   Интересно, какие грабельки еще подкинет 16-битная ...   Dec 3 2008, 14:22
|- - Serj78   Цитата(_Pasha @ Dec 3 2008, 17:22) Интере...   Dec 4 2008, 08:20
- - delamoure   Впрочем, IAR для меня не новость "Многостроч...   Dec 4 2008, 00:52
- - ARV   а как можно преобразовать строки для вывода на LCD...   Dec 4 2008, 09:51
|- - Сергей Борщ   Цитата(ARV @ Dec 4 2008, 11:51) понимаю, ...   Dec 4 2008, 10:16
||- - ARV   Цитата(Сергей Борщ @ Dec 4 2008, 13:16) Н...   Dec 4 2008, 10:19
||- - ReAl   Цитата(ARV @ Dec 4 2008, 12:19) это очеви...   Dec 5 2008, 11:06
|- - zhevak   Цитата(ARV @ Dec 4 2008, 14:51) а как мож...   Dec 4 2008, 10:25
|- - _Pasha   Цитата(ARV @ Dec 4 2008, 13:51) а как мож...   Dec 4 2008, 10:38
- - Сергей Борщ   Цитата(SasaVitebsk @ Dec 4 2008, 22:56) П...   Dec 5 2008, 02:41


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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 06:31
Рейтинг@Mail.ru


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