Миландр

Ключевым подразделением нашей компании
является Центр Проектирования интегральных микросхем
Текущее время: 2019-июн-20 14:49

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 86 ] 
Автор Сообщение
 Заголовок сообщения: Компилятор CC7A
СообщениеДобавлено: 2009-май-29 17:40 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 2009-янв-20 10:05
Сообщения: 777
Компилятор CC7A

Компания "Миландр" заключила лицензионное соглашение с норвежской компанией B Knudsen Data на право распространения Си-компилятора CC7A(EXTENDED). Компилятор рекомендован к использованию при программировании на языке Си для микроконтроллеров серии 1886ВЕ.


Последний раз редактировалось Yura 2009-июл-23 19:11, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор CC7A
СообщениеДобавлено: 2009-июн-16 09:30 
Не в сети

Зарегистрирован: 2009-май-22 09:01
Сообщения: 1296
Откуда: АО "ПКК Миландр"
Пример реализации приложения "электронные часы" на демонстрационной отладочной плате для 1886ВЕ2.
Пример написан на языке С, компилируется с помощью компилятора СС7А и демонстрирует возможность создания многозадачного приложения с применением режима LEANSLICE компилятора СС7А (Extended edition)

Техническое описание оформлено в виде статьи
"Реализация многозадачных приложений на отечественных микроконтроллерах серии 1886"
Статья будет опубликована в ближайшем номере журнала "ЭЛЕКТРОНИКА:Наука,Технология,Бизнес"
После публикации статья будет доступна и на нашем сайте.


Вложения:
main.rar [2.07 КБ]
Скачиваний: 957
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Компилятор CC7A
СообщениеДобавлено: 2009-июл-15 15:50 
Не в сети

Зарегистрирован: 2009-июл-15 14:29
Сообщения: 33
Скачал ваш исходный файл, создал проект.Компилятор выдаёт ошибку на директиву #pragma taskOptions 1. В pdfной инструкции на данный компилятор по поводу этой директивы ничего не сказано.Помогите разобраться


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор CC7A
СообщениеДобавлено: 2009-июл-15 16:22 
Не в сети

Зарегистрирован: 2009-май-22 09:01
Сообщения: 1296
Откуда: АО "ПКК Миландр"
Григорий писал(а):
Скачал ваш исходный файл, создал проект.Компилятор выдаёт ошибку на директиву #pragma taskOptions 1. В pdfной инструкции на данный компилятор по поводу этой директивы ничего не сказано.Помогите разобраться


Подробнее про режим многозадачности и соответсвующие директивы можно прочесть в документе приведенном ниже.

Обратите внимание, что режим LEANSLICE доступен только в полной версии компилятора CC7А. Бесплатная демо-версия не позволяет работать в этом режиме.


Вложения:
_LEANSLICE.rar [49.8 КБ]
Скачиваний: 1473
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2009-июл-15 16:42 
Не в сети

Зарегистрирован: 2009-июл-15 14:29
Сообщения: 33
Откуда можно скачать полную версию компилятора CC7А? Она в комплекте не идёт разве с IDE1886v.7.3, выпущенная Миландром?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2009-июл-15 16:53 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 2009-янв-20 10:05
Сообщения: 777
Григорий писал(а):
Откуда можно скачать полную версию компилятора CC7А? Она в комплекте не идёт разве с IDE1886v.7.3, выпущенная Миландром?

Полная версия приобретается у нас отдельно. На диске вместе с отладочным комплектом поставляется демо-версия компилятора, у нее есть некоторые ограничения.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2009-июл-16 11:57 
Не в сети

Зарегистрирован: 2009-июл-15 14:29
Сообщения: 33
А какие ограничения у демо-версии по сравнению с полной?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2009-июл-16 12:27 
Не в сети

Зарегистрирован: 2009-май-22 09:01
Сообщения: 1296
Откуда: АО "ПКК Миландр"
Григорий писал(а):
А какие ограничения у демо-версии по сравнению с полной?


Демо:

Объем кода не более 2К инструкций,
Поддерживаемые типы данных
Integer 8, 16, 24 bit.
Fixed point 8, 16, 24 bit.
Float 24, 32 bit.
Нет LEANSLICE
Поставляется бесплатно.

Полная:

Объем кода не более 64К инструкций,
Поддерживаемые типы данных
Integer 8, 16, 24, 32 bit.
Fixed point 8, 16, 24, 32 bit.
Float 16, 24, 32 bit.
Есть LEANSLICE
Поставляется платно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2009-июл-16 12:45 
Не в сети

Зарегистрирован: 2009-июл-15 14:29
Сообщения: 33
И какова цена на полный компилятор? Что идёт вместе с этим компилятором? Какой ещё софт можете предложить по программированию 1886ВЕ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2009-июл-16 12:50 
Не в сети

Зарегистрирован: 2009-июл-15 14:29
Сообщения: 33
Можно ли найти русскоязычное полное описание этого компилятора и с примерами под 1886ВЕ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2009-июл-16 13:02 
Не в сети

Зарегистрирован: 2009-май-22 09:01
Сообщения: 1296
Откуда: АО "ПКК Миландр"
Григорий писал(а):
Можно ли найти русскоязычное полное описание этого компилятора и с примерами под 1886ВЕ?


Пока нет, но работа по переводу ведется.


Вложения:
Комментарий к файлу: Небольшой проект USB-JTAG под СС7А (demo)
main.rar [2.29 КБ]
Скачиваний: 609
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2009-июл-16 13:29 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 2009-янв-20 10:05
Сообщения: 777
Григорий писал(а):
И какова цена на полный компилятор? Что идёт вместе с этим компилятором? Какой ещё софт можете предложить по программированию 1886ВЕ?

Цену Вы можете узнать, позвонив нам. Весь необходимый софт есть у нас на сайте http://www.milandr.ru/support/software.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2009-июл-16 13:50 
Не в сети

Зарегистрирован: 2009-июл-15 14:29
Сообщения: 33
а есть ещё С компилятор HI-TECH PICC. Он как работает с 1886ВЕ? Можно ли его использовать? И какой всё-таки лучше подходит?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2009-июл-16 13:57 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 2009-янв-20 10:05
Сообщения: 777
Григорий писал(а):
а есть ещё С компилятор HI-TECH PICC. Он как работает с 1886ВЕ? Можно ли его использовать? И какой всё-таки лучше подходит?

HI-TECH PICC тоже подходит, но мы рекомендуем СС7А. Он по показателям лучше.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2009-июл-16 14:05 
Не в сети

Зарегистрирован: 2009-июл-15 14:29
Сообщения: 33
Так всё-таки на чём лучше и проще писать для МК 1886ВЕ на С или ассемблере?На сколько будет отличаться по объёму код?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2009-июл-16 15:06 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 2009-янв-20 10:05
Сообщения: 777
Григорий писал(а):
Так всё-таки на чём лучше и проще писать для МК 1886ВЕ на С или ассемблере?На сколько будет отличаться по объёму код?

У CC7A объем кода (в отличие от HI-TECH PICC) близок к ассемблеровскому. Проще писать на Си.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2009-июл-22 12:57 
Не в сети

Зарегистрирован: 2009-июл-15 14:29
Сообщения: 33
Приведите пожалуйста примеры для компилятора CC7A реализацию USART(инициализация, приём, передача) для 1886ВЕ2. Будет также интересно посмотреть как реализуются ШИМ, АЦП, вывод на 8разр 7+1 сегментный индикатор


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2009-июл-22 14:45 
Не в сети

Зарегистрирован: 2009-май-25 15:07
Сообщения: 158
Откуда: АО "ПКК Миландр"
Григорий писал(а):
Приведите пожалуйста примеры для компилятора CC7A реализацию USART(инициализация, приём, передача) для 1886ВЕ2. Будет также интересно посмотреть как реализуются ШИМ, АЦП, вывод на 8разр 7+1 сегментный индикатор

Пример работы с USART есть в проекте Eval12_CAN.
// init
Init_USART(char BRG, char SYNC, char TXEN, char CREN, char SREN, char CSRC, char RX9, char TX9);
// передача
TXREG1 = 0x10;
while (!TX1IF){}
// прием
if (RC1IF) // USART: принят байт
cmd = RCREG1;
Там же есть пример работы с АЦП.
Работу с ШИМ и сегментными индикаторами Вы можете реализовать, пользуясь примерами из проектов VE5_Test_CC7A и Eval8_MPASM.

Проекты Eval12_CAN, VE5_Test_CC7A и другие включены в архив среды разработки IDE1886.rar, который можно скачать с нашего сайта.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2009-июл-23 08:50 
Не в сети

Зарегистрирован: 2009-июл-15 14:29
Сообщения: 33
Да там есть хорошие примеры. Пример работы с сегментным индикатором написан на ассемблере. Меня интересует на С как это можно реализовать


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2009-июл-23 12:04 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 2009-янв-20 10:05
Сообщения: 777
Григорий писал(а):
Да там есть хорошие примеры. Пример работы с сегментным индикатором написан на ассемблере. Меня интересует на С как это можно реализовать

Григорий, на первой странице есть хороший пример реализации приложения "электронные часы" на демонстрационной отладочной плате для 1886ВЕ2У.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2009-июл-28 12:07 
Не в сети

Зарегистрирован: 2009-июл-15 14:29
Сообщения: 33
У кого есть русскоязычное описание этого компилятора?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2009-июл-28 13:16 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 2009-янв-20 10:05
Сообщения: 777
Григорий писал(а):
У кого есть русскоязычное описание этого компилятора?

Русскоязычное описание мы планируем сделать ориентировочно через 1 месяц.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Компилятор
СообщениеДобавлено: 2009-авг-31 09:04 
Не в сети

Зарегистрирован: 2009-июл-15 14:29
Сообщения: 33
Вышло ли у вас русскоязычное описание данного компилятоа? Жду с нетерпением


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор
СообщениеДобавлено: 2009-авг-31 09:27 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 2009-янв-20 10:05
Сообщения: 777
Григорий писал(а):
Вышло ли у вас русскоязычное описание данного компилятоа? Жду с нетерпением

Григорий, нужно еще недельку подождать, русскоязычное описание проходит последние корректировки.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2009-сен-16 19:49 
Не в сети

Зарегистрирован: 2009-июл-15 14:29
Сообщения: 33
Вышло ли русскоязычное описание компилятора CC7A? Если да,то откуда можно скачать или выложите на форуме?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2009-окт-01 09:04 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 2009-янв-20 10:05
Сообщения: 777
Lew писал(а):
sanya221 писал(а):
Начали работать с 1886ВЕ2 и появилось несколько вопросов:
1. В IDE1886 нет программного симулятора/отладчика для программ, написанных на Си. Можно ли использовать какие-либо симуляторы/отладчики сторонних фирм? Как их “подружить” с IDE1886?
2. Планируется ли серийное изготовление 1886ВЕ2 в более компактном корпусе?
3. Очень бы хотелось в PDF спецификации иметь Bookmarks и чертеж корпуса т.к. он довольно экзотический и пришлось потратить время на поиски чертежей.
4. В MicroProg2006 было бы очень полезно иметь возможность перезаписи памяти без изменения Configuration Word. Так же удобно было бы иметь одну кнопку, по которой бы выполнялись последовательно команды ERASE и PROGRAM, кнопку “обновить” данные из HEX файла.

1. Отладчик работает для HT-PICC. Для СС7А пошаговый отладчик написать практически нереально из-за глубокой оптимизации кода (возможна даже перестановка операторов). Однако выход есть в использовании сгенеренного asm файла, который можно отлаживать после компиляции с помощью MPASM.
2. Заказ нового корпуса для условий, которые требуют наши заказчики - это нереально дорого. Используем то, что есть.
3. Будет учтено.
4. MicroProg2006 больше не поддерживается.

сообщение скопировано из раздела 1886ВЕ2У


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2009-дек-29 14:24 
Не в сети

Зарегистрирован: 2009-ноя-30 12:20
Сообщения: 31
Откуда: СПБ
Вышло ли русскоязычное описание компилятора CC7A??????
и можно ли прикрутить к MPLAB.
P.S. Перевод_LEANSLICE.doc -это у меня есть.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2009-дек-29 14:59 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 2009-янв-20 10:05
Сообщения: 777
DimonD писал(а):
Вышло ли русскоязычное описание компилятора CC7A??????

Окончательного варианта нет. Скинул Вам предварительный вариант.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2009-дек-31 01:32 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 2009-янв-20 10:05
Сообщения: 777
DimonD писал(а):
можно ли прикрутить к MPLAB

можно


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2010-янв-12 14:50 
Не в сети

Зарегистрирован: 2009-ноя-30 12:20
Сообщения: 31
Откуда: СПБ
компилятора CC7A
IDE 1886 7.5
EVAL12A
----------------------
#include <mil1886BE5.h>

выдает ошибку:
Device is not specified
Ссылается на mil1886BE5.h

/*
* Header file for
* 1886BE5 chip
*/
static volatile unsigned char INDF0 @ 0x00; <<< на эту строку

я что-то не пойму в чем причина ошибки?

а если написать:
#include <VE5_CC.h> то ошибок нет.
-----------------------------------------------------------------------------
И еще вопрос, что необходимо для отладки программы в режиме Debug.
В наличие:
Отладочный комплект для микроконтроллера 1886ВЕ5У
В компьютере отсутствует LPT :(
-----------------------------------------------------------------------------
P.S.
Демонстрационно-отладочная плата Eval12.
Техническое описание.

7.1.4.3. Сторожевой таймер: включен предделитель 1. В этом режиме не работает!!! Надо WDT disabled


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2010-янв-12 17:45 
Не в сети

Зарегистрирован: 2009-май-25 15:07
Сообщения: 158
Откуда: АО "ПКК Миландр"
DimonD писал(а):
компилятора CC7A
IDE 1886 7.5
EVAL12A
----------------------
#include <mil1886BE5.h>
а если написать:
#include <VE5_CC.h> то ошибок нет.
-----------------------------------------------------------------------------
И еще вопрос, что необходимо для отладки программы в режиме Debug.
В наличие:
Отладочный комплект для микроконтроллера 1886ВЕ5У
В компьютере отсутствует LPT :(
-----------------------------------------------------------------------------
P.S.
Демонстрационно-отладочная плата Eval12.
Техническое описание.

7.1.4.3. Сторожевой таймер: включен предделитель 1. В этом режиме не работает!!! Надо WDT disabled

1. Правильно. Для СС7А требуется VE5_CC.h. mil1886BE5.h для РIСС.
2. Если нет LPT, то Вы можете приобрести у нас USB программатор.
Режим Debug описан в руководстве пользователя IDE1886.
3. Да, WDT должен быть отключен. Eval12_тех_описание.doc будет исправлен.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2010-янв-13 12:49 
Не в сети

Зарегистрирован: 2009-ноя-30 12:20
Сообщения: 31
Откуда: СПБ
Про режим Debug я что-то не понял. Тот что USB программатор, который входит “отладочный комплект для микроконтроллера 1886ВЕ5У” не годится я вас правильно понял?
И еще прошу совета, каким программным симулятором МК воспользоваться, чтобы прогнать сишный фаил. Пишу на С, компилятор СС7А.
Заранее спасибо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2010-янв-13 14:56 
Не в сети

Зарегистрирован: 2009-май-25 15:07
Сообщения: 158
Откуда: АО "ПКК Миландр"
DimonD писал(а):
Про режим Debug я что-то не понял. Тот что USB программатор, который входит “отладочный комплект для микроконтроллера 1886ВЕ5У” не годится я вас правильно понял?
И еще прошу совета, каким программным симулятором МК воспользоваться, чтобы прогнать сишный фаил. Пишу на С, компилятор СС7А.
Заранее спасибо.

Для режима Debug в IDE1886 может использоваться как LPT, так и USB программатор.
Того, что у Вас есть, достаточно.
Для симуляции можно использовать MPLAB фирмы Microchip.
Т. к. СС7А сильно оптимизирует код и напрямую не поддерживается симуляторами, используйте следующую последовательность действий:
1. Скомпилируйте исходник с ключами, которые генерит для СС7А IDE1886. Вы получите на выходе ассемблерный файл.
2. Отлаживайте этот файл в симуляторе MPLAB или в режиме Debug в IDE1886.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2010-фев-16 16:47 
Не в сети

Зарегистрирован: 2009-ноя-30 12:20
Сообщения: 31
Откуда: СПБ
Выложите, пожалуйста, пример многозадачного приложения с применением режима LEANSLICE компилятора СС7А для отладочной платы 1886ВЕ5У(Eval12) хотя бы моргание светодиодам. Что-то у меня не получается...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2010-фев-16 17:36 
Не в сети

Зарегистрирован: 2009-май-25 15:07
Сообщения: 158
Откуда: АО "ПКК Миландр"
DimonD писал(а):
Выложите, пожалуйста, пример многозадачного приложения с применением режима LEANSLICE компилятора СС7А для отладочной платы 1886ВЕ5У(Eval12) хотя бы моргание светодиодам. Что-то у меня не получается...

Здесь уже было:
http://forum.milandr.ru/download.php?id=46


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2010-фев-17 12:11 
Не в сети

Зарегистрирован: 2009-ноя-30 12:20
Сообщения: 31
Откуда: СПБ
Читал
Вот взял за основу пример и немного изменил
Что я не так делаю?


Вложения:
Комментарий к файлу: EVAL12A LEANSLICE компилятора СС7А
main.zip [1.33 КБ]
Скачиваний: 349
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2010-фев-17 19:23 
Не в сети

Зарегистрирован: 2010-фев-17 19:07
Сообщения: 2
Откуда: АО "ПКК Миландр"
DimonD писал(а):
Читал
Вот взял за основу пример и немного изменил
Что я не так делаю?

Пример взяты Вами из перевода описания leanslice нами не проверялся.
В ситуации с OPTION разберемся в ближайшее время.
http://forum.milandr.ru/download.php?id=42 здесь лежит пример приложения "часы/будильник/таймер" отлаженный на ВЕ2. Можно пока попробовать его.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2010-фев-18 14:54 
Не в сети

Зарегистрирован: 2009-ноя-30 12:20
Сообщения: 31
Откуда: СПБ
Помогите разобраться в LEANSLICE, это мой первый опыт в многозадачности и еще плохо понимаю механизм работы.

Вот простенький набросок программы:
#include <VE5_CC.h>
#pragma taskOptions 1

#define LED2 PORTD.6
#define LED3 PORTD.7
#define LED4 PORTE.0
#define LED5 PORTE.1
#define LED6 PORTE.2
#define LED7 PORTE.3

static uns32 pause1, pause2, i;
static unsigned char inter1, inter2, inter3;

Task Process1(void)
{
while(1)
{
if (inter1 == 1) {LED7=1; LED6=0; inter1=0;}
else {LED7=0; LED6=1; inter1=1;}
for(pause1=0; pause1<1000000; pause1++){}
waitState();
}
}

Task Process2(void)
{
while(1)
{
if (inter2 == 1) {LED4=1; LED5=0; inter2=0;}
else {LED4=0; LED5=1; inter2=1;}
for(pause2=0; pause2<50000; pause2++){}
waitState();
}
}

void main(void)

{
DDRE = 0; DDRD = 0;
inter1=0; inter2=0; inter3=0;
LED2=0; LED3=0; LED4=0; LED5=0; LED6=0; LED7=0;

startTask(Process1);
startTask(Process2);

while(1)
{
if (inter3 == 1) {LED2=1; LED3=0; inter3=0;}
else {LED2=0; LED3=1; inter3=1;}

for(i=0; i<50000; i++){}
taskSlicer();
}
}

Данная программа выполняет последовательно операции, и не какой многозадачности нет. Просто taskSlicer() запускает последовательно функции Process1, Process2. Как сделать, что бы была псевдо параллельность выполнение Process1, Process2 и основной программы?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2010-фев-19 13:00 
Не в сети

Зарегистрирован: 2010-фев-17 19:07
Сообщения: 2
Откуда: АО "ПКК Миландр"
Цитата:
Помогите разобраться в LEANSLICE, это мой первый опыт в многозадачности и еще плохо понимаю механизм работы.


Leanslice реализует разделение по коду, т.е. задачи переключаются
после выполнения некоторого небольшого фрагмента кода. При этом все переменные неактивных задач автоматически сохраняются.
При переключении программа вываливается в main, где и осуществляется управление задачами.

Подробнее об этом можно прочесть в статье "Реализация многозадачных приложений на МК серии 1886" (журнал "ЭЛЕКТРОНИКА: Наука, Технология, Бизнес" (№6, 2009). Публикации.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2010-апр-13 10:36 
Не в сети

Зарегистрирован: 2009-ноя-30 12:20
Сообщения: 31
Откуда: СПБ
Чем отличается новая версия компилятора от старой и где можно ее скачать(не демо)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2010-апр-13 11:00 
Не в сети

Зарегистрирован: 2009-май-22 09:01
Сообщения: 1296
Откуда: АО "ПКК Миландр"
DimonD писал(а):
Чем отличается новая версия компилятора от старой и где можно ее скачать(не демо)


Маркетинг блин! Лишь бы что нить написать....

Пока это бета версия. Она еще тестируется. Как будет финальная версия тем у кого лицензионные копии, будет выслана новая версия привязанная к ключам.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2010-апр-13 11:17 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 2009-янв-20 10:05
Сообщения: 777
DimonD писал(а):
Чем отличается новая версия компилятора от старой и где можно ее скачать(не демо)

Программное обеспечение.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2010-апр-13 13:15 
Не в сети

Зарегистрирован: 2009-ноя-30 12:20
Сообщения: 31
Откуда: СПБ
-=Sergei=-

ОК! бум ждать...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2010-апр-14 12:05 
Не в сети

Зарегистрирован: 2010-янв-08 02:11
Сообщения: 23
Откуда: Азов
Вопрос по использованию компилятора Си CC7A.

Есть код на асме который необходимо переписать на Си:

Код:
Cap3:
                PUSH        ; макрос сохранения контек
   movlr   BANK3
   movfp   ADR_JUMP+BAIT0,PCLATH
   movfp   ADR_JUMP+BAIT1,PCL
         
   
       CAP3_REGIM_00:
         
   ...

   movc16   CAP3_REGIM_01,ADR_JUMP
   POP
   retfie
   
   
       CAP3_REGIM_01:

   ...
         
   movc16   CAP3_REGIM_02,ADR_JUMP
   POP
   retfie
         
   
       СAP3_REGIM_02:

   ...
         
   movc16   CAP3_REGIM_03,ADR_JUMP
   POP
   retfie


... и далее таких блоков идет много :D

Код:
CAP3_REGIM_65:

   ...
         
   movc16   CAP3_REGIM_03,ADR_JUMP
   POP
   retfie



Оператор SWITCH не подходит слишком громоздко, если можно использовать SKIP(X), то как вычислять смещение?
Попытался написать с использованием втроенного ассемблера, но он видит метки которые были обьявлены ранее. Плохо что указателей на функции в компиляторе нет.
КАК НА СИ НАПИСАТЬ ПОДОБНЫЙ КОД?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2010-май-05 08:10 
Не в сети

Зарегистрирован: 2010-янв-08 02:11
Сообщения: 23
Откуда: Азов
Как работает SKIP разобрался. Пример переписанного кода:

Код:
skip(AddressSkip);
   LineGoto;
   #pragma computedGoto 0

           CAP3_REGIM_00:
                    ...
   AddressSkip++;
   return;

           CAP3_REGIM_01:
                    ...
   AddressSkip++;
                    return;

           CAP3_REGIM_65:
                     ...
                    AddressSkip = 0;
                    return;


LineGoto мокрос:

Код:
#define LineGoto \
   goto CAP3_REGIM_00;\
                    goto CAP3_REGIM_01;\
                    goto CAP3_REGIM_02;\
                    ...   
   goto CAP3_REGIM_65;\


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2010-июн-24 17:34 
Не в сети

Зарегистрирован: 2009-дек-14 15:37
Сообщения: 2
Будьте любезны, подскажите что значит ошибка компилятора
Undefined instruction: 'MOVF' ?

и почему она undefined?

Спасибо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2010-июн-25 20:15 
Не в сети

Зарегистрирован: 2010-янв-08 02:11
Сообщения: 23
Откуда: Азов
Здравствуйте Дмитрий.
Сообщение Undefined instruction: 'MOVF' говорит о том что данная инструкция не определена :D в асме всего 6 команд начинающихся на MOV:

Код:
movfp  f,p
movlb  k
movlr  k
movlw  k
movpf  p,f
movwf  f


Выбирай какая нужна. Описание команд в спецификации на 1886ВЕ.
[/quote]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2010-июн-28 08:49 
Не в сети

Зарегистрирован: 2009-май-22 09:01
Сообщения: 1296
Откуда: АО "ПКК Миландр"
Дмитрий писал(а):
Будьте любезны, подскажите что значит ошибка компилятора
Undefined instruction: 'MOVF' ?

и почему она undefined?

Спасибо.


Это проблема в компиляторе, мы сейчас работаем над ее устранением.
Вызывается она при реализации операции умножения различных типов, например int8 на int24. Для исправления пока советую переписать код, так что бы приведение типов выполнялось до операции умножения.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2010-июн-30 13:49 
Не в сети

Зарегистрирован: 2009-дек-14 15:37
Сообщения: 2
-=Sergei=-, Спасибо за ответ.
Я действительно забыл указать, что пользуюсь компилятором CC7A. Проблему уже решил, просто надо попривыкнуть к особенностям данного компилятора.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2010-июл-14 10:04 
Не в сети

Зарегистрирован: 2010-июл-14 09:53
Сообщения: 11
Откуда: Петербург
Добрый день.

Компилятор после HI-TECH PICC непривычный и ограниченный, но сообщения об ошибках у него просто кошмарные - не каждый раз поймёшь, что ему не нравится.

Подскажите, пожалуйста, что бы могло значить сообщение: "Syntax error (or limitation)"? При этом он указывает на прототип функции:
Код:
void initmyproj(void);

Если прототип закомментировать, начинает с тем же сообщением указывать на саму функцию:
Код:
void initmyproj(void)
{
  for (fuzptr = &fuzvals[4];
       fuzptr <= &fuzvals[5];
       *fuzptr++ = 0);
}

При этом можно менять тип и имя функции как угодно, указание компилятора остаётся прежним.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2010-июл-14 12:10 
Не в сети

Зарегистрирован: 2009-май-25 15:07
Сообщения: 158
Откуда: АО "ПКК Миландр"
Вы не указали версию компилятора и тип переменных.
Код:
uns8 fuzptr;uns8 fuzvals[10];

CC7A Ver 1.0C, EXTENDED edition выдает ошибку Syntax error на строку
Код:
   *fuzptr++ = 0);

Тут Вам нужно упростить выражение. В readme.txt читаем:
CC7A is not a full C compiler. There are restrictions to be aware
of. The main problem is that CC7A has limited ability to allocate
temporary variables. Because of this, complex statements often
have to be rewritten using simpler statements. This is most
notisable when using variables of 16 bit or larger. There is an
advantage of such rewriting. Often the generated hex code gets
more compact.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2010-июл-14 12:27 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 2009-янв-20 10:05
Сообщения: 777
Lew писал(а):
CC7A Ver 1.0C
Версия 1.0C сегодня-завтра появится на сайте.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2010-июл-14 12:32 
Не в сети

Зарегистрирован: 2010-июл-14 09:53
Сообщения: 11
Откуда: Петербург
Версия компилятора та же, что у вас: CC7A Ver 1.0C, EXTENDED edition.

Переменные в цикле - это указатели:
Код:
uns8 * fuzptr;
uns8 * fuzvals;

Вы правы, скорее всего, дело именно в сложном синтаксисе. Но если сообщения об ошибках вида "Syntax error" я уже видел и научился с ними бороться, то здесь он указывал на саму функцию и непонятно, что хотел этим сказать. Сейчас взялся править код с другого конца и именно эта ошибка "Syntax error (or limitation)" исчезла.


Проблема в том, что это фрагмент кода библиотеки стороннего разработчика, который в PICC-16 сходу откомпилился без единой ошибки, зашился в контроллер (PIC16F688) и корректно работал, а CC7A в нём спотыкается буквально на каждом шагу из-за сложности выражений.

Будем работать над упрощением исходного кода. В любом случае, спасибо за ответ.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2010-июл-14 12:34 
Не в сети

Зарегистрирован: 2010-июл-14 09:53
Сообщения: 11
Откуда: Петербург
Да, и версия компилятора не 1.0С, а 1.0A.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2010-авг-02 09:45 
Не в сети

Зарегистрирован: 2009-ноя-30 12:20
Сообщения: 31
Откуда: СПБ
Как там насчет замены компилятора 1.0А на 1.0С


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 2010-авг-02 13:19 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 2009-янв-20 10:05
Сообщения: 777
DimonD писал(а):
Как там насчет замены компилятора 1.0А на 1.0С

Насчет замены написано на сайте в разделе "Программное обеспечение". Обратитесь в отдел маркетинга: (495) 981-54-33. Для каждого предприятия (даже для каждого компилятора) идет индивидуальное обновление.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор CC7A
СообщениеДобавлено: 2011-ноя-15 17:15 
Не в сети

Зарегистрирован: 2010-июл-22 15:50
Сообщения: 11
Добрый вечер! Скажите пожалуйста, поддерживает ли компилятор передачу функции параметров по ссылке, в частности массивов. Если можно приведите пример.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор CC7A
СообщениеДобавлено: 2011-ноя-16 14:18 
Не в сети

Зарегистрирован: 2009-май-25 15:07
Сообщения: 158
Откуда: АО "ПКК Миландр"
stormbird4 писал(а):
Добрый вечер! Скажите пожалуйста, поддерживает ли компилятор передачу функции параметров по ссылке, в частности массивов. Если можно приведите пример.
Читаем cc7a-10.pdf:
myfunc(&tab[i]); // char tab[20]; // string in RAM
WBR.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор CC7A
СообщениеДобавлено: 2011-ноя-16 22:01 
Не в сети

Зарегистрирован: 2010-июл-22 15:50
Сообщения: 11
На сколько я понимаю в этом примере передается ссылка на отдельный элемент, а хотелось бы узнать как передать ссылку на массив в целом и в функции его обработать. Такое возможно?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор CC7A
СообщениеДобавлено: 2011-ноя-17 13:39 
Не в сети

Зарегистрирован: 2009-май-25 15:07
Сообщения: 158
Откуда: АО "ПКК Миландр"
stormbird4 писал(а):
На сколько я понимаю в этом примере передается ссылка на отдельный элемент, а хотелось бы узнать как передать ссылку на массив в целом и в функции его обработать. Такое возможно?
А почему, собственно, нет? Вы хотите, чтобы я здесь цитировал учебник "Язык С для начинающих"?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор CC7A
СообщениеДобавлено: 2011-ноя-17 16:37 
Не в сети

Зарегистрирован: 2010-июл-22 15:50
Сообщения: 11
Я разобрался со своей проблемой, прошу прощения. Спасибо за ответы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор CC7A
СообщениеДобавлено: 2012-фев-28 17:01 
Не в сети

Зарегистрирован: 2011-ноя-27 19:28
Сообщения: 6
Товарищи сотрудники фирмы Миландр, требуется ваша консультация.
Есть несколько строк- констант, описанных по образу:
Код:
static const char const_str[]="this is string";

Необходимо сравнивать содержимое строки в ОЗУ микроконтроллера с этими эталонами. Строка в ОЗУ:
Код:
char string[100];

сейчас для сравнения с каждым эталоном существует отдельная функция. Но это слишком массивно. Сравнение произвожу так: очередной символ из строки-константы сохраняю в ОЗУ, сравниваю с соответствующим символом из строки string в ОЗУ.
Хотелось бы сделать одну функцию для сравнения строки string и строки-константы, начинающейся по адресу char* pointer. Но где-то у меня не хватило соображения. Описал его как:
Код:
const char *pointer;

Не компилируется даже такой код (ясно, что он не рабочий- инициализацию и весь функционал выбросил чтобы сократить до минимума)
Код:
#include <1886VE3d.h>
static const char const_str[]="this is string";
const char *pointer;
void prntstr (void)
{
     pointer=const_str;
     while (*pointer!=0)
     {
           while(!TX1IF);
           TXREG=*pointer;
           pointer++;
     }
}
void main(void)
{
     while(1)
     {
     }
}

Выделяется красным цветом последняя строка текста и графа "Сообщение" во вкладке "Компилятор" пуста


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор CC7A
СообщениеДобавлено: 2012-фев-29 07:47 
Не в сети

Зарегистрирован: 2009-май-25 15:07
Сообщения: 158
Откуда: АО "ПКК Миландр"
Странно. Все транслируется.
Код:
                        ;void prntstr (void)
                        ;{
prntstr
                        ;     pointer=const_str;
        CLRF  pointer,1
                        ;     while (*pointer!=0)
m001    MOVFP pointer,WREG
        CALL  _const1
        XORLW 0
        MOVLB 2
        BTFSC 0x04,Zero_
        GOTO  m003
                        ;     {
                        ;           while(!TX1IF);
m002    BTFSS 0x214,TX1IF
        GOTO  m002
                        ;           TXREG=*pointer;
        MOVFP pointer,WREG
        CALL  _const1
        MOVLB 5
        MOVWF TXREG
                        ;           pointer++;
        INCF  pointer,1
                        ;     }
        GOTO  m001
                        ;}
m003    RETURN
                        ;void main(void)
                        ;{
main
                        ;     while(1)
                        ;     {
                        ;      prntstr(); // чтобы не было предупреждения о неиспользуемых функциях
        MOVLB 0
        MOVLR 0
m004    MOVLB 2
        CALL  prntstr
                        ;     }
        MOVLB 0
        GOTO  m004
_const1
        MOVWF ci
        MOVLW 0
        MOVWF TBLPTR+1
        RRCF  ci,W
        ANDLW 127
        ADDLW 39
        MOVWF TBLPTR
        BTFSS 0x04,Carry
        GOTO  m005
        INCF  TBLPTR+1,1
m005    TABLRD 0,0,WREG
        TLRD  0,WREG
        BTFSS ci,0
        GOTO  m006
        TLRD  1,WREG
m006    RETURN
        DW    0x6874
        DW    0x7369
        DW    0x6920
        DW    0x2073
        DW    0x7473
        DW    0x6972
        DW    0x676E
        DW    0x0


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор CC7A
СообщениеДобавлено: 2012-фев-29 16:21 
Не в сети

Зарегистрирован: 2011-ноя-27 19:28
Сообщения: 6
Спасибо за отклик. Добавил использование функции в main() и заработало. Не очень удобная особенность, так как имею привычку сначала описывать все основные функции, а потом приниматься за main(). Нельзя ли попросить разработчика компилятора в следующем релизе ликвидировать эту особенность?

Еще маленький вопрос. При выходе нового релиза как выполняется обновление полной версии компилятора? Снова по почте диск заказывать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор CC7A
СообщениеДобавлено: 2012-фев-29 16:48 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 2009-янв-20 10:05
Сообщения: 777
Pastel писал(а):
Еще маленький вопрос. При выходе нового релиза как выполняется обновление полной версии компилятора? Снова по почте диск заказывать?

Пришлите запрос на admin@milandr.ru, т.е. мне, в ответ пришлю новую версию.

_________________
Правила форума!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор CC7A
СообщениеДобавлено: 2012-мар-01 15:09 
Не в сети

Зарегистрирован: 2009-май-25 15:07
Сообщения: 158
Откуда: АО "ПКК Миландр"
Pastel писал(а):
Спасибо за отклик. Добавил использование функции в main() и заработало. Не очень удобная особенность, так как имею привычку сначала описывать все основные функции, а потом приниматься за main(). Нельзя ли попросить разработчика компилятора в следующем релизе ликвидировать эту особенность?
Еще маленький вопрос. При выходе нового релиза как выполняется обновление полной версии компилятора? Снова по почте диск заказывать?
Никакой особенности замечено не было. Все замечательно компилируется и без функции в main(), просто выдает предупреждение о неиспользуемой функции.
Прежде чем давать такие самоуверенные советы разработчикам компилятора, советую почитать документацию. Вы удивитесь, что, оказывается, существует множество ключей для компилятора, которые, в частности, позволяют задавать степень оптимизации.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Где найти заголовочный файл VE2_CC.h?
СообщениеДобавлено: 2012-мар-02 15:12 
Не в сети

Зарегистрирован: 2012-мар-02 15:00
Сообщения: 3
Откуда: Санкт-Петербург
Собственно начал работать с вашим микроконтроллером 1886ВЕ2У и компилятором CC7A и стандартный пример :"Электронные часы на плате для 1886ВЕ2У" и он не компилируется из-за отсутствия библиотеки VE2_CC.h
Пробовал подключить библиотеку 1886VE2d.h но в среде IDE1886 пишет Fatal internal compiler error no. 9124
Другие библиотеки для 17C756.H и 17C756A, поставляемые вместе с "С" компилятором выдают ошибки: Symbol 'RE2' is undefined
заголовочный файл можно и самому создать, но времени совсем нет. Проект горит что называется.
Сможете мне выслать библиотеку на e-mail?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор CC7A
СообщениеДобавлено: 2012-мар-02 15:38 
Не в сети

Зарегистрирован: 2009-май-25 15:07
Сообщения: 158
Откуда: АО "ПКК Миландр"
Откуда Вы взяли эти :"Электронные часы"? Какая у Вас версия IDE1886?
В примерах в IDE1886 есть демонстрационная программа для 1886ВЕ2, которая может отображать время, но СС7А здесь не причем. Проект написан на ассемблере.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор CC7A
СообщениеДобавлено: 2012-мар-02 16:57 
Не в сети

Зарегистрирован: 2012-мар-02 15:00
Сообщения: 3
Откуда: Санкт-Петербург
проект взят не с IDE1886 а из диска который мы приобрели у Миландра с компилятором CC7A и USB ключём. а IDE1886 версия 8.5(только что в справке к IDE посмотрел). и какая разница-в перечне библиотек к CC7A есть VE2_cc.h а в наличие нет. :) вот такой вот сервис :).
Я уже заголовочный 17C756.H я поправил и теперь прога скомпилировалась и прошилась успешно и работает. но вот хотелось бы получить заголовочный файл. Мало ещё что вылезет там.
И да на форуме нет ни одной похожей темы. видимо мне выдали какой то "особенный" диск с недостающими хэндлами =))) Ну да ладно. Просьба одна:вышлете пожалуйста VE2_CC.h
Благодарю.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор CC7A
СообщениеДобавлено: 2012-мар-02 17:48 
Не в сети

Зарегистрирован: 2009-май-25 15:07
Сообщения: 158
Откуда: АО "ПКК Миландр"
1886VE2d.h и 1886VE2.h это правильные хендлы. просто Вы используете древний проект и устаревшую версию компилятора. Обновите компилятор, отослав запрос на admin@milandr.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор CC7A
СообщениеДобавлено: 2012-мар-05 08:18 
Не в сети

Зарегистрирован: 2012-мар-02 15:00
Сообщения: 3
Откуда: Санкт-Петербург
Какая версия компилятора свежая?
я использую версию 1.0e.
отправил на admin@milandr.ru запрос на библиотеки и свежую версию компилятора.
И кстати вопрос: с LPT программатором внутрисхемную отладку произвести можно? Версия среды IDE1886 8.5


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор CC7A
СообщениеДобавлено: 2012-мар-05 08:44 
Не в сети

Зарегистрирован: 2009-май-25 15:07
Сообщения: 158
Откуда: АО "ПКК Миландр"
ДмитрийК писал(а):
Какая версия компилятора свежая?
я использую версию 1.0e.
отправил на admin@milandr.ru запрос на библиотеки и свежую версию компилятора.
И кстати вопрос: с LPT программатором внутрисхемную отладку произвести можно? Версия среды IDE1886 8.5
У Вас компилятор последней версии. Для всех проектов следует использовать 1886VE2d.h. LPT программатор по функциональности ничем не отличается он USB программатора.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор CC7A
СообщениеДобавлено: 2012-мар-06 15:13 
Не в сети

Зарегистрирован: 2011-ноя-27 19:28
Сообщения: 6
Lew писал(а):
Никакой особенности замечено не было. Все замечательно компилируется и без функции в main(), просто выдает предупреждение о неиспользуемой функции.

Никакого сообщения замечено не было. Компилирую через IDE 1886, без функции в main() окно с прогрессбаром процесса компиляции появляется на мгновение и исчезает, во вкладке "Компилятор" только номер последней строки, она же выделена красным цветом. Отсутствие окна "Compile progress" в совокупности с таким "информативным" выводом было однозначно воспринято как ошибка компиляции. Пикрелейтед.
Lew писал(а):
Прежде чем давать такие самоуверенные советы разработчикам компилятора, советую почитать документацию. Вы удивитесь, что, оказывается, существует множество ключей для компилятора, которые, в частности, позволяют задавать степень оптимизации.

Прежде чем давать такие самоуверенные советы пользователям компилятора, советую предположить, что читать они все же умеют. Вы удивитесь, что, оказывается,они иногда испытывают надежды на комфортное использование компилятора из IDE, а Ваш GUI тоже может иметь пороки.
Успехов!


Вложения:
123.JPG
123.JPG [ 48.32 КБ | Просмотров: 9852 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор CC7A
СообщениеДобавлено: 2012-мар-06 16:22 
Не в сети

Зарегистрирован: 2009-май-25 15:07
Сообщения: 158
Откуда: АО "ПКК Миландр"
Цитата:
Отсутствие окна "Compile progress" в совокупности с таким "информативным" выводом было однозначно воспринято как ошибка компиляции.
Прежде чем однозначно воспринимать и грубить, советую убедится, что код все-таки компилируется. На вкладке Programming появляется код. main.lst, main.asm, main.hex обновляются. На вкладке "Журнал компиляции" и в файле main.err есть предупреждение:
Код:
Warning D:\Soft\IDE_Proj\CC_syntez\main.c 20: Local variables and parameters in uncalled functions are not allocated (1) (The application contains non-library functions that are not called. Local variables in these functions (option -wU) are not allocated to save space)
Всвязи с этим и появляется эта строка без сообщения, информирующая о том, что программа содержит всякий мусор. Подробности можно посмотреть, открыв вкладку "Журнал компиляции" или файл main.err.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор CC7A
СообщениеДобавлено: 2012-мар-06 16:43 
Не в сети

Зарегистрирован: 2011-ноя-27 19:28
Сообщения: 6
1) Если Вы не заметили, я ответил с сохранением стилистики вашего сообщения. Если Вы увидели грубость- вряд ли претензия ко мне.
2) В случае, если компиляция выполняется не впервые за сеанс, на взгляд изменение карты памяти неразличимо.
3) Вы же сами понимаете, что такое сообщение без текста, да еще и на строке, которая не имеет отношения к вызвавшему ситуацию фрагменту кода, и еще без вывода окошка, которое появлялось до этого всегда кроме случаев ошибки это не нормально- интерфейс должен быть информативным и интуитивно понятным.
4) Да, не догадался сразу очистить карту памяти, прочитать еррлист в файле. Готов согласиться со своей некомпетентностью в вопросах программирования. Однако не забывайте, что ПО для микроконтроллеров в подавляющем числе случаев пишут те же люди, которые разрабатывают схему, а не профессиональные программисты, поэтому еще раз- интерфейс должен быть интуитивно понятным таким трудным пользователям как я. Иначе смысл самой IDE пропадает- ведь и так можно работать в шелле и лазать по файлам.

Повторюсь, что проблема решена, предыдущие 2 сообщения и данное писал из лучших побуждений. Жаль, что восприняли это в штыки.
Представления и ожидания связаны не с моими завышенными требованиями, а опытом работы с IDE вроде QtCreator, Borland C++ Builder, AVR Studio.
С уважением.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор CC7A
СообщениеДобавлено: 2012-мар-06 19:51 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 2009-янв-20 10:05
Сообщения: 777
Попрошу не ссориться :D

_________________
Правила форума!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор CC7A
СообщениеДобавлено: 2012-сен-07 10:44 
Не в сети

Зарегистрирован: 2010-фев-06 10:58
Сообщения: 83
Откуда: Чернигов
Есть ли возможность изменять уровень оптимизации кода в среде разработки IDE1886?
Спасибо


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор CC7A
СообщениеДобавлено: 2012-сен-07 14:28 
Не в сети

Зарегистрирован: 2009-май-25 15:07
Сообщения: 158
Откуда: АО "ПКК Миландр"
sw1972 писал(а):
Есть ли возможность изменять уровень оптимизации кода в среде разработки IDE1886?
Смотрите в руководстве по СС7А директиву "#pragma optimize".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор CC7A
СообщениеДобавлено: 2013-окт-17 15:05 
Не в сети

Зарегистрирован: 2013-окт-17 14:52
Сообщения: 15
Здравствуйте, проясните пожалуйста вопрос касающийся массивов. Каким образом нужно его задавать и считывать его элементы для данного компилятора? У меня после инициализации нижеследующего массива различными способами невозможно работать (записывать, производить операции) с дробными, а также отрицательными элементами массива. Как будто они становятся "невидимыми" для компилятора. Повторюсь, что работать с ЦЕЛЫМИ и ПОЛОЖИТЕЛЬНЫМИ переменными из массива удаётся без проблем. Из библиотек подключена только 1886BE6.h и math24f.h

1. const float M[7] = {-100, 53.5, -53.5, 0, 75, 55, 56.3};
либо
2. float M[7] = {-100, 53.5, -53.5, 0, 75, 55, 56.3};
либо
3. float M[7]; Для этого способа элементы массива присваиваются в определённом месте кода программы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор CC7A
СообщениеДобавлено: 2013-окт-19 11:49 
Не в сети

Зарегистрирован: 2013-окт-17 14:52
Сообщения: 15
Shevand писал(а):
Здравствуйте, проясните пожалуйста вопрос касающийся массивов...

Неужели никто не может дать ответ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор CC7A
СообщениеДобавлено: 2013-окт-23 09:21 
Не в сети

Зарегистрирован: 2009-май-25 15:07
Сообщения: 158
Откуда: АО "ПКК Миландр"
Shevand писал(а):
Shevand писал(а):
Здравствуйте, проясните пожалуйста вопрос касающийся массивов...

Здравствуйте.
"Как будто они становятся "невидимыми" для компилятора." Это как Вы определили?
Есть предположение, что здесь есть ошибка библиотек. Попробуйте подключить MATH32F.H Пришлите в личку фрагмент из asm файла, в котором назначается массив и где происходит выборка из него.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор CC7A
СообщениеДобавлено: 2014-апр-15 12:55 
Не в сети

Зарегистрирован: 2014-мар-31 15:27
Сообщения: 4
Глюк компилятора, или я что-то не так делаю?

Делая первые шаги в изучении МК 1886 и из любопытства просматривая получающийся при компиляции сишной программы ассемблерный листинг, наткнулся на любопытное поведение компилятора.

Вот пример простой программы, которая дёргает ножкой порта раз в миллисекунду:
Открыть код программы
Код:
#include <1886VE6.h>
#include <int17xxx.h>
#pragma origin 0x8

unsigned char tmr0_l, tmr0_h;

/*****************************************************************************\
*                                 Interrupt                                   *
\*****************************************************************************/
interrupt iServer(void) {
    multi_interrupt_entry_and_save

INT_service:
    goto int_exit;

TMR0_service:
    TMR0L = tmr0_l;
    TMR0H = tmr0_h;
    T0IF = 0;
   PORTD ^= 1<<3;
    goto int_exit;

T0CKI_service:
    goto int_exit;
   
PERIPHERAL_service:
   
int_exit:   interrupt_exit_and_restore
}


/*****************************************************************************\
*                                   Init                                      *
\*****************************************************************************/
void init(void) {
    GLINTD = 1;
     
    // init IO ports
    DDRD = 0;
    PORTD = 0;
   
    // init timer 0
    tmr0_l = 0x4A;            // 65536 - 2500 + 14
    tmr0_h = 0xF6;            // 1000 ïðåðûâàíèé â ñåêóíäó
    TMR0L = tmr0_l;
    TMR0H = tmr0_h;
    T0STA  = 0b00100000;     // Internal Clock, 1:1 prescaler
    T0IE   = 1;              // TIMER 0 INTERRUPT ENABLE

    GLINTD = 0;              // Ãëîáàëüíîå ðàçðåøåíèå ïðåðûâàíèé
} // void init


/*****************************************************************************\
*                                Main program                                 *
\*****************************************************************************/
void main(void) {
    init();
   while (1) {
    }// while (1)

}// main
Закрыть

Обратим внимание на ассемблерный листинг процедуры обработки прерываний, а конкретно на макрос multi_interrupt_entry_and_save:
Открыть листинг
Код:
             0048                         ;/*****************************************************************************\
             0049                         ;*                                 Interrupt                                   *
             0050                         ;\*****************************************************************************/
             0051                         ;interrupt iServer(void) {
             0052 iServer
             0053                         ;    multi_interrupt_entry_and_save
000008 7A0F  0054         MOVFP BSR,sBSR
000009 7B04  0055         MOVFP ALUSTA,sALUSTA
00000A 290F  0056         CLRF  BSR,1
00000B 4321  0057         MOVPF PCLATH,sPCLATH
00000C 0120  0058         MOVWF sWREG
00000D 2903  0059         CLRF  PCLATH,1
00000E C027  0060         GOTO  m001
00000F 0000  0061         NOP 
000010 7A0F  0062         MOVFP BSR,sBSR
000011 7B04  0063         MOVFP ALUSTA,sALUSTA
000012 290F  0064         CLRF  BSR,1
000013 4321  0065         MOVPF PCLATH,sPCLATH
000014 0120  0066         MOVWF sWREG
000015 2903  0067         CLRF  PCLATH,1
000016 C027  0068         GOTO  m001
000017 0000  0069         NOP 
000018 7A0F  0070         MOVFP BSR,sBSR
000019 7B04  0071         MOVFP ALUSTA,sALUSTA
00001A 290F  0072         CLRF  BSR,1
00001B 4321  0073         MOVPF PCLATH,sPCLATH
00001C 0120  0074         MOVWF sWREG
00001D 2903  0075         CLRF  PCLATH,1
00001E C02D  0076         GOTO  m002
00001F 0000  0077         NOP 
000020 7A0F  0078         MOVFP BSR,sBSR
000021 7B04  0079         MOVFP ALUSTA,sALUSTA
000022 290F  0080         CLRF  BSR,1
000023 4321  0081         MOVPF PCLATH,sPCLATH
000024 0120  0082         MOVWF sWREG
000025 2903  0083         CLRF  PCLATH,1
000026 C02D  0084         GOTO  m002
             0085                         ;
             0086                         ; INT_service:
             0087                         ;    goto int_exit;
             0088                         ;
             0089                         ; TMR0_service:
             0090                         ;    TMR0L = tmr0_l;
000027 6B22  0091 m001    MOVFP tmr0_l,TMR0L
             0092                         ;    TMR0H = tmr0_h;
000028 6C23  0093         MOVFP tmr0_h,TMR0H
             0094                         ;    T0IF = 0;
000029 8D07  0095         BCF   0x07,T0IF
             0096                         ;   PORTD ^= 1<<3;
00002A B008  0097         MOVLW 8
00002B B801  0098         MOVLB 1
00002C 0D15  0099         XORWF PORTD,1
             0100                         ;    goto int_exit;
             0101                         ;
             0102                         ; T0CKI_service:
             0103                         ;    goto int_exit;
             0104                         ;   
             0105                         ; PERIPHERAL_service:
             0106                         ;   
             0107                         ; int_exit:   interrupt_exit_and_restore
00002D 6A20  0108 m002    MOVFP sWREG,WREG
00002E 6321  0109         MOVFP sPCLATH,PCLATH
00002F 641B  0110         MOVFP sALUSTA,ALUSTA
000030 6F1A  0111         MOVFP sBSR,BSR
000031 0005  0112         RETFIE
             0113                         ;}
Закрыть

Видим, что при переходе и по адресу 0x08 (внешнее прерывание на выводе PA0/INT (INTF)), и по адресу 0x10 (прерывание по переполнению TMR0 (T0IF)) после сохранения некоторых регистров происходит переход на метку m001. Другими словами, участок кода, обрабатывающий прерывание от таймера, получит управление не только при прерывании от таймера, но и при прерывании от PA0/INT!

Теперь добавим в обработчик прерывания PA0/INT пустую инструкцию:
Открыть изменённый код процедуры обработки прерываний
Код:
interrupt iServer(void) {
    multi_interrupt_entry_and_save

INT_service:
   nop();
    goto int_exit;

TMR0_service:
    TMR0L = tmr0_l;
    TMR0H = tmr0_h;
    T0IF = 0;
   PORTD ^= 1<<3;
    goto int_exit;

T0CKI_service:
    goto int_exit;
   
PERIPHERAL_service:
   
int_exit:   interrupt_exit_and_restore
}
Закрыть

и посмотрим, что получилось после компиляции:
Открыть ассемблерный листинг
Код:
             0048                         ;/*****************************************************************************\
             0049                         ;*                                 Interrupt                                   *
             0050                         ;\*****************************************************************************/
             0051                         ;interrupt iServer(void) {
             0052 iServer
             0053                         ;    multi_interrupt_entry_and_save
000008 7A0F  0054         MOVFP BSR,sBSR
000009 7B04  0055         MOVFP ALUSTA,sALUSTA
00000A 290F  0056         CLRF  BSR,1
00000B 4321  0057         MOVPF PCLATH,sPCLATH
00000C 0120  0058         MOVWF sWREG
00000D 2903  0059         CLRF  PCLATH,1
00000E C027  0060         GOTO  m001
00000F 0000  0061         NOP 
000010 7A0F  0062         MOVFP BSR,sBSR
000011 7B04  0063         MOVFP ALUSTA,sALUSTA
000012 290F  0064         CLRF  BSR,1
000013 4321  0065         MOVPF PCLATH,sPCLATH
000014 0120  0066         MOVWF sWREG
000015 2903  0067         CLRF  PCLATH,1
000016 C029  0068         GOTO  m002
000017 0000  0069         NOP 
000018 7A0F  0070         MOVFP BSR,sBSR
000019 7B04  0071         MOVFP ALUSTA,sALUSTA
00001A 290F  0072         CLRF  BSR,1
00001B 4321  0073         MOVPF PCLATH,sPCLATH
00001C 0120  0074         MOVWF sWREG
00001D 2903  0075         CLRF  PCLATH,1
00001E C02F  0076         GOTO  m003
00001F 0000  0077         NOP 
000020 7A0F  0078         MOVFP BSR,sBSR
000021 7B04  0079         MOVFP ALUSTA,sALUSTA
000022 290F  0080         CLRF  BSR,1
000023 4321  0081         MOVPF PCLATH,sPCLATH
000024 0120  0082         MOVWF sWREG
000025 2903  0083         CLRF  PCLATH,1
000026 C02F  0084         GOTO  m003
             0085                         ;
             0086                         ; INT_service:
             0087                         ;   nop();
000027 0000  0088 m001    NOP 
             0089                         ;    goto int_exit;
000028 C02F  0090         GOTO  m003
             0091                         ;
             0092                         ; TMR0_service:
             0093                         ;    TMR0L = tmr0_l;
000029 6B22  0094 m002    MOVFP tmr0_l,TMR0L
             0095                         ;    TMR0H = tmr0_h;
00002A 6C23  0096         MOVFP tmr0_h,TMR0H
             0097                         ;    T0IF = 0;
00002B 8D07  0098         BCF   0x07,T0IF
             0099                         ;   PORTD ^= 1<<3;
00002C B008  0100         MOVLW 8
00002D B801  0101         MOVLB 1
00002E 0D15  0102         XORWF PORTD,1
             0103                         ;    goto int_exit;
             0104                         ;
             0105                         ; T0CKI_service:
             0106                         ;    goto int_exit;
             0107                         ;   
             0108                         ; PERIPHERAL_service:
             0109                         ;   
             0110                         ; int_exit:   interrupt_exit_and_restore
00002F 6A20  0111 m003    MOVFP sWREG,WREG
000030 6321  0112         MOVFP sPCLATH,PCLATH
000031 641B  0113         MOVFP sALUSTA,ALUSTA
000032 6F1A  0114         MOVFP sBSR,BSR
000033 0005  0115         RETFIE
             0116                         ;}
Закрыть

Теперь всё будет работать как надо: по адресу 0x08 происходит переход на метку m001, где после NOP идёт GOTO на m003 - выход из прерывания, а по адресу 0x10 происходит переход на m002 - обработчик прерывания TMR0. То есть сейчас обработчик прерывания TMR0 уже не будет вызван при возникновении прерывания PA0/INT.

Является ли данное поведение багом или фичей компилятора CC7A?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор CC7A
СообщениеДобавлено: 2015-дек-16 10:32 
Не в сети

Зарегистрирован: 2015-сен-14 09:35
Сообщения: 7
Есть ли в этом волшебном компиляторе возможность использования типа void* в качестве параметра функции? Например, прототип такой функции
Код:
int8 foo (void *pParam, uns8 cParam);

В руководстве пользователя не нашёл об этом ничего.
И ещё. Неужели нет возможности компилировать проекты с большим количеством исходных файлов (*.c)? При компиляции ругается
Код:
370 D:\trash\key_1886_2015\main.c Function 'testPortInit' is not defined

хотя есть в хэдере есть
Код:
extern void testPortInit (void);

и сам хэдер подключен в main.c после функции
Код:
interrupt iServer (void)
{
...
}

Что делаю не так?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор CC7A
СообщениеДобавлено: 2016-фев-08 10:48 
Не в сети

Зарегистрирован: 2015-дек-22 13:22
Сообщения: 4
Подскажите как приобрести полную версию компилятора CC7А.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор CC7A
СообщениеДобавлено: 2016-фев-08 11:23 
Не в сети
Moderator

Зарегистрирован: 2015-мар-02 09:52
Сообщения: 43
Откуда: АО "ПКК Миландр"
Отправьте, пожалуйста, запрос на info@milandr.ru в отдел маркетинга и продаж.

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компилятор CC7A
СообщениеДобавлено: 2017-янв-19 15:42 
Не в сети

Зарегистрирован: 2016-окт-10 09:19
Сообщения: 1
Здравствуйте ! В процессе компиляции выскакивает окно (report window)"File size error!".Объясните пожалуйста с чем это связано. Заранее спасибо.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 86 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB