Миландр
http://forum.milandr.ru/

Примеры программ
http://forum.milandr.ru/viewtopic.php?f=36&t=1657
Страница 1 из 1

Автор:  Petr [ 2013-окт-31 10:31 ]
Заголовок сообщения:  Примеры программ

Пример использования блока шифрования.
Также важна последовательность работы с иммитовставкой (отражено в примере).

В спецификации на стр. 703 обнаружена ошибка, нужно исправить на следующее:
0x3000_0090 0x0048 CRPT_CR
0x3000_0094 0x004A CRPT_SYNR

Процедуру использования блока шифрования надо оформлять как функцию и выполнять только в режиме free run в среде CCS3.

Вложения:
_dsp_crypt_immit.rar [147.4 КБ]
Скачиваний: 343

Автор:  Petr [ 2013-ноя-15 14:41 ]
Заголовок сообщения:  Re: Примеры программ

Пример работы с термодатчиком.

Вложения:
Temperature.rar [216.01 КБ]
Скачиваний: 408

Автор:  Petr [ 2014-ноя-12 19:42 ]
Заголовок сообщения:  Re: Примеры программ

Пример и инструкция по размещению программы для DSP-ядра внутри Flash-памяти контроллера 1901ВЦ1Т.

Вложения:
Комментарий к файлу: два простых проекта и утилиты
RISC_DSP_loader.zip [496.15 КБ]
Скачиваний: 380
Комментарий к файлу: инструкция
Как_расположить_DSP_программу_без_использования_средств_отладки_в_1901ВЦ1.pdf [480.32 КБ]
Скачиваний: 638

Автор:  Alex123 [ 2018-апр-18 08:41 ]
Заголовок сообщения:  Re: Примеры программ

Добрый день! А есть проект конвертера .out-файла в header-файл(не .exe проекта)? Не открывается сам конвертер.

Автор:  prostoRoman [ 2018-окт-29 20:24 ]
Заголовок сообщения:  Re: Примеры программ

Good news, everyone!
Появился К1901ВЦ1QI в пластике LQFP144.

Автор:  1max1 [ 2018-ноя-26 17:56 ]
Заголовок сообщения:  Re: Примеры программ

Доброго дня. В программе для DSP из архива RISc_DSP_loader, инициализирована переменная _status, а в программе для RISC к этой переменной идёт обращение по адресу 0хА540. Вопрос, откуда известно, что она находится именно по этому адресу? В программе для DSP это число нигде не встречается.

Ответ: Адрес _STATUS для размещения переменной _status расположен в файле с расширением .cmd.

Так же ответ на вопрос выше. Если конвертер DSP_ASCII_2_FILE_Conv.exe не запускается, добавьте к нему файлы из прикрепленного архива.

Вложения:
For_DSP_ASCII_2_FILE_Conv.rar [850.66 КБ]
Скачиваний: 74

Автор:  1max1 [ 2019-апр-02 08:05 ]
Заголовок сообщения:  Re: Примеры программ

Доброго дня. Столкнулся с проблемой в CCS v.3.3 при программировании 1901ВЦ1. Объявляю переменную long int x. Далее пишу выражение: х=(8188*8188)+(8188*8188); В компиляторе получаю предупреждение: integer operation result is out of range, т.е. результат больше переменной. Результат выражения выше равен 134086688, в памяти я вижу 00 00 00 20, а проидее должен 07 FE 00 20, так как long int вмещает +/-21474833647, в чем кроется ошибка? Просьба подсказать. И как завершение если пишу выражение х=134086688; то предупреждений не получаю и в памяти вижу заветное 07 FE 00 20, да как так-то?

Автор:  редактор [ 2019-апр-02 08:47 ]
Заголовок сообщения:  Re: Примеры программ

с данной средой/МК не работал, поэтому предположу (не уверен)
если int 16 разрядов, то все выражение считается в интах, а потом преобразовывается к long.
(на 8-ми битниках похожее было)
Попробуйте
х=(long)(8188*8188)+(long)(8188*8188);
или
х=(long)(8188L*8188)+(long)(8188L*8188);

Автор:  1max1 [ 2019-апр-02 09:42 ]
Заголовок сообщения:  Re: Примеры программ

Спасибо за помощь! Выражение х=(8188L*8188)+(8188L*8188); Работает в памяти вижу заветное число. Но если перейти дальше, в ходе программы должно реализовываться выражение х=(a*b)+(c*d);
Где a,b,c,d переменные принимающие значения от -8188 до 8188. Если реализовать такой код:
a=8188;
b=8188;
c=8188;
d=8188;
dх=(a*b)+(c*d);
В памяти вижу опять 00 00 00 20.
Подскажите пожалуйста как в этом случае сделать? Ведь L тут добавить неполучается. Могли бы вы подсказать статью где прочитать про данный идентификатор?

Автор:  prostoRoman [ 2019-апр-02 09:57 ]
Заголовок сообщения:  Re: Примеры программ

1max1 писал(а):
Спасибо за помощь! Выражение х=(8188L*8188)+(8188L*8188); Работает в памяти вижу заветное число. Но если перейти дальше, в ходе программы должно реализовываться выражение х=(a*b)+(c*d);
Где a,b,c,d переменные принимающие значения от -8188 до 8188. Если реализовать такой код:
a=8188;
b=8188;
c=8188;
d=8188;
dх=(a*b)+(c*d);
В памяти вижу опять 00 00 00 20.
Подскажите пожалуйста как в этом случае сделать? Ведь L тут добавить неполучается. Могли бы вы подсказать статью где прочитать про данный идентификатор?

Здесь надо таки подучить сам язык Си, в части целых типов данных.
Суть проблемы в том, что компилятор полноправно определяет тип константы 8188 как int (было бы число, не влезающее в int - объявлялось бы как long int, а может и дальше - зависит от копмилятора).
Результат же произведения таких чисел в int уже не влазит, но компилятор этого не анализирует.
Результат произведения имеет тот же тип int, поэтому происходит отсечение старшей части результата произведения.
Добавляя к константе литеру L сообщаем компилятору, чтобы он хранил константу в типе long int.
Далее все вычисления происходят уже с типом long int и поэтому выходной тип так же long int и усечения результата не происходит.
Во втором случае также достаточно определить a,b,c,d как long int, и тогда все вычисления пройдут корректно.
Или можно сделать явное приведение типов непосредственно в строке с вычислением
Код:
х = ( (long int)a * (long int)b ) + ( (long int)c * (long int)d );

Автор:  1max1 [ 2019-апр-02 10:43 ]
Заголовок сообщения:  Re: Примеры программ

Благодарю за помощь. Действительно проглядел этот момент, первый раз столкнулся с данной проблемой, немного запутал. Например в Keil, такой проблемы невстричал никогда.

Автор:  редактор [ 2019-апр-02 11:51 ]
Заголовок сообщения:  Re: Примеры программ

Цитата:
Keil, такой проблемы невстричал никогда.

Просто вы в KEIL с 51-ми (восьмибитниками) не работали.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/