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

Примеры программ
https://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 КБ]
437 скачиваний

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

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

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

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

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

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

Автор:  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 КБ]
156 скачиваний

Автор:  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-ми (восьмибитниками) не работали.

Автор:  Dmitro25 [ 2020-май-29 08:11 ]
Заголовок сообщения:  Re: Примеры программ

Petr писал(а): *
Пример и инструкция по размещению программы для DSP-ядра внутри Flash-памяти контроллера 1901ВЦ1Т.
Здравствуйте!
Обнаружил ошибку при работе программы "DSP_ASCII_2_FILE_Conv".
Делаю тестовый проект, результат компиляции (out-файл) обрабатываю последовательно с помощью программы hex500.exe (получаю hex-файл), а затем - программой DSP_ASCII_2_FILE_Conv.exe (получаю результирующий h-файл).
Данный процесс работал нормально, но в какой-то момент я скомпилировал код, запустил обработку и обнаружил, что результирующий h-файл имеет слишком большой размер (более 8 Мб), при том, что промежуточный hex-файл имеет вполне обычный размер в 18 кБ. Оказалось, что в ошибочном h-файле по сравнению с обычным добавилась одна дополнительная секция размером 964561 элементов! Мало того, элементы данной секции не укладываются в размерность uint16_t, а имеют 5 цифр в шестнадцатеричной записи (например, 0xAEB99).
Что интересно, ошибочный h-файл генерируется для моего проекта только при определённых уровнях оптимизации, при других уровнях генерируется нормальный h-файл.
Пример, состоящий из out- и hex-файла своего проекта, которые генерируют ошибочный h-файл, прикладываю к сообщению.
Версия CCS: 3.3.38.2

Есть предложение к автору программы "DSP_ASCII_2_FILE_Conv": если решите исправить данную ошибку, то нельзя ли ещё добавить в программу возможность передавать имя обрабатываемого файла в командной строке - это позволило бы автоматически создавать результирующий h-файл сразу после компиляции проекта.
Если на исправление/добавление новых возможностей нет времени, может быть, имеет смысл поделиться исходниками проекта "DSP_ASCII_2_FILE_Conv", я мог бы сделать необходимые доработки?

Вложения:
Example_Bad.rar [11.45 КБ]
4 скачивания

Автор:  Artem1 [ 2020-июн-05 16:13 ]
Заголовок сообщения:  Re: Примеры программ

Dmitro25 писал(а): *
Petr писал(а): *
Пример и инструкция по размещению программы для DSP-ядра внутри Flash-памяти контроллера 1901ВЦ1Т.
Здравствуйте!
Обнаружил ошибку при работе программы "DSP_ASCII_2_FILE_Conv".
Делаю тестовый проект, результат компиляции (out-файл) обрабатываю последовательно с помощью программы hex500.exe (получаю hex-файл), а затем - программой DSP_ASCII_2_FILE_Conv.exe (получаю результирующий h-файл).
Данный процесс работал нормально, но в какой-то момент я скомпилировал код, запустил обработку и обнаружил, что результирующий h-файл имеет слишком большой размер (более 8 Мб), при том, что промежуточный hex-файл имеет вполне обычный размер в 18 кБ. Оказалось, что в ошибочном h-файле по сравнению с обычным добавилась одна дополнительная секция размером 964561 элементов! Мало того, элементы данной секции не укладываются в размерность uint16_t, а имеют 5 цифр в шестнадцатеричной записи (например, 0xAEB99).
Что интересно, ошибочный h-файл генерируется для моего проекта только при определённых уровнях оптимизации, при других уровнях генерируется нормальный h-файл.
Пример, состоящий из out- и hex-файла своего проекта, которые генерируют ошибочный h-файл, прикладываю к сообщению.
Версия CCS: 3.3.38.2

Есть предложение к автору программы "DSP_ASCII_2_FILE_Conv": если решите исправить данную ошибку, то нельзя ли ещё добавить в программу возможность передавать имя обрабатываемого файла в командной строке - это позволило бы автоматически создавать результирующий h-файл сразу после компиляции проекта.
Если на исправление/добавление новых возможностей нет времени, может быть, имеет смысл поделиться исходниками проекта "DSP_ASCII_2_FILE_Conv", я мог бы сделать необходимые доработки?
Здравствуйте!
Исходники ПО DSP_ASCII_2_FILE_Conv.exe во вложении.
Архив опубликован в формате "AS IS", то есть без каких-либо гарантий и дальнейшей поддержки.

Вложения:
DSP_ASCII_2_FILE_Converter.zip [42.57 КБ]
4 скачивания

Страница 1 из 1 Часовой пояс: UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/