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

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> Интересный глюк в CodeVisionAVR
LordVader
сообщение Dec 4 2008, 18:22
Сообщение #31


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

Группа: Участник
Сообщений: 127
Регистрация: 18-10-06
Пользователь №: 21 418



Цитата(zhevak @ Dec 4 2008, 13:47) *
Я вам больше скажу -- в мире существуют LCD с SPI интерфейсом... правда я их как-то не видел в продаже. Давайте сойдемся на том, что все это из разряда экзотики. В магазинах в основном продают LCD с "компактной" кодировкой и с традиционным интерфейсом.

Ну не знаю. В пределах 'глобуса москвы' купить мэлтовские - не проблема. И даже тут есть http://www.terraelectronica.ru/catalog.php...e=2&PageS=1
У них 2 странички кодировки - одна какая на картинке, другая непойми какая, видимо как раз та, о которой вы говорили. По дефолту включена она же.
Go to the top of the page
 
+Quote Post
zhevak
сообщение Dec 4 2008, 19:15
Сообщение #32


Знающий
****

Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065



Цитата(LordVader @ Dec 4 2008, 23:22) *
Ну не знаю. В пределах 'глобуса москвы' купить мэлтовские - не проблема. И даже тут есть http://www.terraelectronica.ru/catalog.php...e=2&PageS=1
У них 2 странички кодировки - одна какая на картинке, другая непойми какая, видимо как раз та, о которой вы говорили. По дефолту включена она же.

все хорошо, но ведь не все живут в пределах Московского глобуса.

Имея большое желание получить себе на стол "экзотику", согласитесь, за ценой и временем можно не следить. Только почему-то в жизни часто получается так, что мы выбираем то, что легче достать, а потом это подгоняем напильниками. Мы рукастые, не ленивые, да и копейку умеем считать.
Поэтому вопрос бы и не возникал, если бы у нас были МЭЛТы в магазинах. А если еще по конкурентноспособной цене, да с кодировкой 1251 ... ха-ха-ха!

Есть реальная жизнь, и есть понятие "как надо жить". Это разные вещи, и очень часто они не совпадают. Поэтому, простите, живем, как умеем!

// Не обижайтесь! :-/ Это правда. (С) С легим паром!


--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Dec 4 2008, 20:56
Сообщение #33


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #34


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

Группа: Свой
Сообщений: 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
Сообщение #35


Гуру
******

Группа: Свой
Сообщений: 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
Сергей Борщ
сообщение Dec 5 2008, 02:41
Сообщение #36


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(SasaVitebsk @ Dec 4 2008, 22:56) *
По поводу ASM вставок.
Как то не совсем себе представляю ASM текст прямо по тексту Си программы.
Иногда бывает полезно:
Код
//Нету у arm-???-gcc intrinsic-функций для запрета/разрешения прерываний. Пишем inline-функцию доступа к регистру состояния процессора. Точно такие же intinsic-и намертво вшиты в ИАР для ARM :
INLINE inline TStatusReg __get_CPSR()
{
    TStatusReg cpsr;
    asm volatile
    (
    " MRS  %0,CPSR    \r\n"
    :"=r"(cpsr)
    :
    );
    return cpsr;
}
INLINE inline void __set_CPSR_c(TStatusReg cpsr)
{
    asm volatile
    (
    " MSR  CPSR_c, %0    \r\n"
    :
    :"r"(cpsr)
    );
}


// Загрузчик для msp430. Объем критичен. На С короче не получится:
inline uint16_t CRC_XMODEM(uint16_t crc, uint8_t byte)
{
    static const uint16_t CRC_POLYNOME = 0x8408;

    asm volatile(                  "\r\n"
    "   XOR     %1, %0              \r\n"
    "1:                             \r\n"
    "   RRA     %2                  \r\n"
    "   JNC     2f                  \r\n"
    "   XOR     %3, %2              \r\n"
    "2:                             \r\n"
    "   DEC     %4                  \r\n"
    "   JNE     1b                  \r\n"
    :"=r"(crc)
    :"r"(byte), "0"(crc), "i"((uint16_t)CRC_POLYNOME), "r"((uint8_t)8)
    );
/*
    crc ^= byte;
    uint8_t i = 8;
    do
    {
        if (crc & 0x01) { crc >>= 1; crc ^= CRC_POLYNOME; }
        else crc >>= 1;
    }
    while(--i);
*/
    return crc;
}

// Есть у меня в области загрузчика AVR функции, написанные на ИАРе. Они хотят параметр в R16. А gcc передает его в R24. Пишем обертку:
inline static void SynthInit(uint16_t FrequencyCoeff)
{
    register uint16_t Tmp asm("r16");
    Tmp = FrequencyCoeff;
    asm volatile (
    " .extern SynthInit_driver \n\t"
    "  RCALL  SynthInit_driver \n\t"
    :"=r" (Tmp)
    :"r" (Tmp)
    );
}


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
ReAl
сообщение Dec 5 2008, 11:06
Сообщение #37


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(ARV @ Dec 4 2008, 12:19) *
это очевидный способ, просто я почему-то думал, что существует более простой smile.gif типа макросов каких-нибудь или binutils готовых...

pyLCDstring
by bialix aka Александр Бельченко
В проект включается файл messages.lcd и правило нужное в makefile - и жизнь прекрасна
Что-то в духе.

Код
PYLCD := c:/bin/pylcdstr/pylcdstr

%.c : %.lcd
    echo ====  Converting $< to source files; \
    $(PYLCD) $<

%.h : %.lcd
    echo ====  Converting $< to source files; \
    $(PYLCD) $<

messages.c : messages.lcd
messages.h : messages.lcd


Широкие возможности по управлению формированием выходных строк и перекодировоками.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post

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

 


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


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