8-900-374-94-44
[email protected]
Slide Image
Меню

Dspic в проектах – Загрузчик для dsPIC33 / Habr

Средства программирования PIC-контроллеров / Habr

Введение


PIC-контроллеры остаются популярными в тех случаях, когда требуется создать недорогую компактную систему с низким энергопотреблением, не предъявляющую высоких требований по ее управлению. Эти контроллеры позволяют заменить аппаратную логику гибкими программными средствами, которые взаимодействуют с внешними устройствами через хорошие порты.

Миниатюрные PIC контроллеры хороши для построения преобразователей интерфейсов последовательной передачи данных, для реализации функций «прием – обработка – передача данных» и несложных регуляторов систем автоматического управления.

Компания Microchip распространяет MPLAB — бесплатную интегрированную среду редактирования и отладки программ, которая записывает бинарные файлы в микроконтроллеры PIC через программаторы.

Взаимодействие MPLAB и Matlab/Simulink позволяет разрабатывать программы для PIC-контроллеров в среде Simulink — графического моделирования и анализа динамических систем. В этой работе рассматриваются средства программирования PIC контроллеров: MPLAB, Matlab/Simulink и программатор PIC-KIT3 в следующих разделах.

• Характеристики миниатюрного PIC контроллера PIC12F629
• Интегрированная среда разработки MPLAB IDE
• Подключение Matlab/Simulink к MPLAB
• Подключение программатора PIC-KIT3

Характеристики миниатюрного PIC-контроллера


Семейство РIС12ххх содержит контроллеры в миниатюрном 8–выводном корпусе со встроенным тактовым генератором. Контроллеры имеют RISC–архитектуру и обеспечивают выполнение большинства команд процессора за один машинный цикл.

Для примера, ниже даны характеристики недорогого компактного 8-разрядного контроллера PIC12F629 с многофункциональными портами, малым потреблением и широким диапазоном питания [1].

• Архитектура: RISC
• Напряжение питания VDD: от 2,0В до 5,5В (< 6,5В)
• Потребление:
— <1,0 мА @ 5,5В, 4МГц
— 20 мкА (тип) @ 32 кГц, 2,0В
— <1,0 мкА (тип) в режиме SLEEP@2,0В
• Рассеиваемая мощность: 0,8Вт
• Многофункциональные каналы ввода/вывода: 6/5
• Максимальный выходной ток портов GPIO: 125мА
• Ток через программируемые внутренние подтягивающие резисторы портов: ≥50 (250) ≤400 мкА @ 5,0В
• Разрядность контроллера: 8
• Тактовая частота от внешнего генератора: 20 МГц
Длительность машинного цикла: 200 нс
• Тактовая частота от внутреннего RC генератора: 4 МГц ±1%
Длительность машинного цикла: 1мкс
• FLASH память программ: 1К
Число циклов стирание/запись: ≥1000
• ОЗУ память данных: 64
• EEPROM память данных: 128
Число циклов стирание/запись: ≥10K (-40оС ≤TA≤ +125 оС)
• Аппаратные регистры специального назначения: 16
• Список команд: 35 инструкций, все команды выполняются за один машинный цикл,
кроме команд перехода, выполняемых за 2 цикла
• Аппаратный стек: 8 уровней
• Таймер/счетчик ТМR0: 8-разрядный с предделителем
• Таймер/счетчик ТМR1: 16-разрядный с предделителем

Дополнительные особенности:
• Сброс по включению питания (POR)
• Таймер сброса (PWRTтаймер ожидания запуска генератора (OST
• Сброс по снижению напряжения питания (BOD)
• Сторожевой таймер WDT
• Мультиплексируемый вывод -MCLR
• Система прерываний по изменению уровня сигнала на входах
• Индивидуально программируемые для каждого входа подтягивающие резисторы
• Программируемая защита входа
• Режим пониженного энергопотребления SLEEP
• Выбор режима работы тактового генератора
• Внутрисхемное программирование ICSP с использованием двух выводов
• Четыре пользовательские ID ячейки

Предельная рабочая температура для Е исполнения (расширенный диапазон) от -40оС до +125 оС;
Температура хранения от -65оС до +150 оС.

КМОП технология контроллера обеспечивает полностью статический режим работы, при котором остановка тактового генератора не приводит к потере логических состояний внутренних узлов.
Микроконтроллер PIC12F629 имеет 6-разрядный порт ввода/вывода GPIO. Один вывод GP3 порта GPIO работает только на вход, остальные выводы можно сконфигурировать для работы как на вход так и на выход. Каждый вывод GPIO имеет индивидуальный бит разрешения прерываний по изменению уровня сигнала на входах и бит включения внутреннего подтягивающего резистора.

Интегрированная среда разработки MPLAB IDE

MPLAB IDE — бесплатная интегрированная среда разработки ПО для микроконтроллеров PIC включает средства для создания, редактирования, отладки, трансляции и компоновки программ, записи машинного кода в микроконтроллеры через программаторы.

Загрузка MPLAB IDE

Бесплатные версии MPLAB (включая MPLAB 8.92) хранятся на сайте компании Microchip в разделе «DOWNLOAD ARCHIVE».

Создание проекта

Пример создания проекта программ PIC контроллера в среде MPLAB включает следующие шаги [2].

1. Вызов менеджера проекта.


2. Выбор типа PIC микроконтроллера.
3. Выбор компилятора, например, Microchip MPASM для ассемблера.
4. Выбор пути к каталогу проекта (клавиша Browse…) и ввод имени проекта.

5. Подключение файлов к проекту в окне Project Wizard → Step Four можно не выполнять. Это можно сделать позднее, внутри активного проекта. Клавиша Next открывает следующее окно.

6. Завершение создания проекта (клавиша Finish).

В результате создания проекта FirstPrMPLAB интерфейс MPLAB принимает вид, показанный на Рис. 1.


Рис. 1. Интерфейс среды MPLAB v8.92 и шаблон проекта.

Создание файла программы
Программу можно создать при помощи любого текстового редактора. В MPLAB имеется встроенный редактор, который обеспечивает ряд преимуществ, например, оперативный лексический анализ исходного текста, в результате которого в тексте цветом выделяются зарезервированные слова, константы, комментарии, имена, определенные пользователем.

Создание программы в MPLAB можно выполнить в следующей последовательности.

1. Открыть редактор программ: меню → File → New. Изначально программе присвоено имя Untitled.

2. Набрать или скопировать программу, например, на ассемблере.

3. Сохранить программу под другим именем (меню → File → Save As), например, FirstPrMPLAB.asm.


Рис. 2. Пример простейшей программы (на ассемблере) вывода сигналов через порты контроллера GP0, GP1, GP2, GP4, GP5 на максимальной частоте.

Запись ‘1’ в разряде регистра TRISIO переводит соответствующий выходной буфер в 3-е состояние, в этом случае порт GP может работать только на вход. Установка нуля в TRISIO настраивает работу порта GP на выход.

Примечание. По спецификации PIC12F629 порт GP3 микроконтроллера работает только на вход (соответствующий бит регистра TRISIO не сбрасывается – всегда находится в ‘1’).

Регистры TRISIO и GPIO находятся в разных банках области памяти. Переключение банков выполняется 5-м битом регистра STATUS.

Любая программа на ассемблере начинается директивой org и заканчивается директивой end. Переход goto Metka обеспечивает циклическое выполнение программы.

В программе (Рис. 2) используются следующие обозначения.

Директива LIST — назначение типа контроллера
Директива __CONFIG — установка значений битов конфигурации контроллера
Директива equ — присвоение числового значения
Директива org 0 — начало выполнения программы с адреса 0
Команда bsf — устанавливает бит указанного регистра в 1
Команда bсf — сбрасывает бит указанного регистра в 0
Команда movlw — записывает константу в регистр W
Команда movwf — копирует содержимое регистра W в указанный регистр
Команда goto — обеспечивает переход без условия на строку с меткой
Директива end — конец программы

Установка требуемой конфигурации микроконтроллера
Конфигурация микроконтроллера PIC12F629 зависит от настроек слова конфигурации (2007h), которые можно задать в программе через директиву __CONFIG.

Непосредственно или через окно MPLAB: меню → Configure → Configuration Bits:

Где:

Бит 2-0 — FOSC2:FOSC0. Выбор тактового генератора
111 — Внешний RC генератор. Подключается к выводу GP5. GP4 работает как CLKOUT
110 — Внешний RC генератор. Подключается к выводу GP5. GP4 работает как ввод/вывод
101 — Внутренний RC генератор 4МГц. GP5 работает как ввод/вывод. GP4 — как CLKOUT
100 — Внутренний RC генератор 4МГц. GP5 и GP4 работают как ввод/вывод
011 — EC генератор. GP4 работает как ввод/вывод. GP5 — как CLKIN
010 — HC генератор. Резонатор подключается к GP4 и GP5
001 — XT генератор. Резонатор подключается к GP4 и GP5
000 — LP генератор. Резонатор подключается к GP4 и GP5

Бит 3 — WDTE: настройка сторожевого таймера (Watchdog Timer)
1 — WDTE включен
0 — WDTE выключен

Сторожевой таймер предохраняет микроконтроллер от зависания – перезапускает программу через определенный интервал времени если таймер не был сброшен. Период таймера устанавливается в регистре OPTION_REG. Обнуление сторожевого таймера вызывается командой CLRWDT.

Бит 4 — PWRTE: Разрешение работы таймера включения питания:
1 — PWRT выключен
0 — PWRT включен

Таймер задерживает микроконтроллер в состоянии сброса при подаче питания VDD.

Бит 5 — MCLR: Выбор режима работы вывода GP3/-MCLR
1 — работает как -MCLR
0 — работает как порт ввода-вывода GP3

Бит 6 — BODEN: Разрешение сброса по снижению напряжения питания (как правило < 2.0В)
1 — разрешен сброс BOR
0 — запрещен сброс BOR автоматически включается таймер

При разрешении сброса BOR автоматически включается таймер PWRT

Бит 7 — .CP: Бит защиты памяти программ от чтения программатором
1 Защита выключена
0 Защита включена

При выключения защиты вся память программ стирается

Бит 8 — .CPD: Бит защиты EPROM памяти данных
1 Защита выключена
0 Защита включена

После выключения защиты вся информация будет стерта

Бит 11-9 — Не используются: Читается как ‘1’.

Бит 13-12 — BG1:BG0. Биты калибровки сброса по снижению питания
00 — нижний предел калибровки
11 — верхний предел калибровки


Добавление программы к проекту

Пример добавления программы к проекту показан на (Рис. 3).


Рис. 3. Добавление программы FirstPrMPLAB.asm к проекту FirstPrMPLAB.mcp

Сохранить материалы проекта можно командой: меню → File → Save Workspace.

Компиляция


Чтобы создать бинарный файл с расширением hex для прошивки микроконтроллера необходимо откомпилировать проект. Запуск компиляции выполняется командой меню → Project → Build All. Результаты компиляции можно увидеть в окне Output (Рис. 1). Если в программе нет ошибок, то компилятор выдаёт сообщение об успешной компиляции: BUILD SUCCEEDED, загрузочный HEX файл можно найти в рабочем каталоге:

Отладка программы


Отладку программы в среде MPLAB IDE можно выполнить при помощи аппаратного эмулятора MPLAB REAL ICE или программного симулятора MPLAB SIM. Запуск последнего выполняется как показано на Рис. 4.
Рис. 4. Подключение к симулятору MPLAB SIM для отладки программы.

После запуска отладчика в окне Output (Рис. 1) появляется закладка MPLAB SIM, куда MPLAB выводит текущую информацию отладчика. Команды отладчика (Рис. 5) после запуска становятся активными.


Рис. 5. Команды отладчика.

Команды отладчика:

• Run — Непрерывное выполнение программы до точки останова (Breakpoint) если таковая установлена.
• Halt — Остановка программы на текущем шаге выполнения.
• Animate — Анимация непрерывного выполнения программы.
• Step Into — Выполнение по шагам (вызовы Call выполняются за один шаг).
• Step Over — Выполнение по шагам включая команды вызовов Call.
• Reset — Начальная установка программы. Переход указателя на первую команду.
• Breakpoints — Отображение списка точек останова. Обработка списка.

При выполнении программы по шагам текущий шаг выделяется стрелкой (Рис. 6). Непрерывное выполнение программы останавливается командой Halt или достижением программой точки останова. Точка останова устанавливается/снимается в строке программы двойным щелчком.
Пример программы на ассемблере, которая с максимальной скоростью меняет состояние портов контроллера показан на Рис. 6 (справа). Программа передаёт в регистр портов GPIO данные b’10101010’ и b’01010101’. Поскольку в регистре GPIO передачу данных в порты контроллера выполняют не все разряды, а только 0,1,2,4 и 5, то состояние регистра GPIO (Рис. 6, слева) отличается значениями: b’00100010’ и b’00010101’.


Рис. 6. Состояние регистров специального назначения контроллера на момент выполнения программы (слева) и выполняемая по шагам программа (справа).

В процессе отладки можно наблюдать за состоянием регистров, переменных, памяти в соответствующих окнах, открываемых в разделе View основного меню. В процессе отладки можно вносить изменения в код программы, содержимое регистров, памяти, изменять значения переменных. После изменения кода необходимо перекомпилировать программу. Изменение содержимого регистров, памяти и значения переменных (окна раздела View: Special Function Register, File Register, EEPROM, Watch) не требует перекомпиляции.

Входные сигналы портов модели микроконтоллера можно задать в разделе Debugger → Stimulus. Устанавливаемые состояния сигналов портов привязываются к времени (тактам) отладки.

Иногда результаты выполнения программы в режиме отладки не соответствуют выполнению этой же программы в реальном контроллере, так, например, отладчик программы (Рис. 6) без инструкций movlw 0x07 и movwf cmcon показывает, что выходы GP0 и GP1 регистра GPIO не изменяются — находятся в нулевом состоянии, содержимое регистра GPIO попеременно равно 0x14 и 0х20. Однако, контроллер, выполняющий программу без указанных инструкций, показывает на осциллографе циклическую работу всех пяти выходов: 0x15 и 0х22, включая GP0 и GP1 (см. Рис. 7).

Осциллограммы контроллера, выполняющего циклы программы Рис. 6 (Metka… goto Metka) показаны на Рис. 7.


Рис. 7. Осциллограммы выхода GP0 (слева) и GP1 (справа) микроконтроллера PIC12F629, работающего от внутреннего 4МГц RC генератора. Программа (Рис. 6) формирует сигналы максимальной частоты на всех выходах контроллера. За период сигналов 5.3 мкс выполняется 5 команд (6 машинных циклов), амплитуда GP0 сигнала на осциллограмме равна 4.6В, измеренное программатором питание контроллера 4.75В.

Прошивка микроконтроллера


Для записи программы в микроконтроллер (прошивки контроллера) необходимо микроконтроллер подключить к интегрированной среде MPLAB IDE через программатор. Организация подключения показана ниже в разделе «Подключение программатора PIC-KIT3».

Примечание. В контроллер PIC12F629 записана заводская калибровочная константа настройки частоты внутреннего тактового генератора. При необходимости её можно прочитать и восстановить средствами MPLAB с использованием программатора.

Команды для работы с программатором и изменения его настроек находятся в меню MPLAB Programmer. Тип программатора в MPLAB выбирается в разделе: меню → Programmer → Select Programmer.


Рис. 8. Выбор программатора для подключения к среде MPLAB.

Прошивка микроконтроллера через программатор запускается командой: меню → Programmer → Program. Сообщение об успешной прошивке показано на Рис. 9.


Рис. 9. Запуск прошивки микроконтроллера и вид сообщения об успешной прошивке.

Примечание: Во время прошивки микроконтроллера у программатора PIC-KIT3 мигает желтый светодиод.

Подключение MATLAB/SIMULINK к MPLAB


В системе моделирования динамических систем Simulink (приложение к Matlab) на языке графического программирования [7] можно разрабатывать программы для семейства PIC контроллеров имеющих АЦП/ЦАП, счетчики, таймеры, ШИМ, DMA, интерфейсы UART, SPI, CAN, I2C и др.

Пример Simulink программы PIC контроллера показан на Рис. 10.


Рис. 10. Пример программы на языке графического программирования для PIC контроллера выполненной в среде моделирования динамических систем Simulink.

Взаимодействие средств разработки и компиляции программ для PIC контроллеров в Simulink показано на Рис. 11 [6].


Рис. 11. Структура средств построения адекватной модели PIC контроллера на языке графического программирования.

Для построения среды разработки необходимы следующие компоненты Matlab:

• Simulink
• Real-Time Workshop Embedded Coder
• Real-Time Workshop

И Cи компилятор компании Microchip:

• C30 для контроллеров PIC24, dsPIC30 и PIC33
• или C32 для контроллеров серии PIC32

Установка компонентов Matlab


На сайте имеются Simulink библиотеки (dsPIC Toolbox) для PIC контроллеров и версий Matlab c R2006a по R2012a:

Для скачивания библиотеки необходимо зарегистрироваться. Программы поддерживают работу 100 микроконтроллеров из серий PIC 16MC, 24F, 30F, 32MC, 33F, 56GP, 64MC, 128MC, 128GP.
Бесплатные версии работают с Simulink моделями PIC контроллеров имеющих до 7 портов ввода-вывода.

Для установки dsPIC Toolbox — библиотеки блоков PIC контроллеров для Matlab/Simulink необходимо [4]:

• Скачать dsPIC Toolbox для требуемой версии Matlab.
• Распаковать zip файл в папке, в которой будут установлены Simulink блоки.
• Запустить Matlab.
• Настроить текущий каталог Matlab на папку с распакованным файлом.
• Открыть и запустить файл install_dsPIC_R2012a.m, например, кнопкой меню или клавишей клавиатуры.

Библиотеки dsPIC и примеры Simulink моделей устанавливаются в текущую папку Matlab (Рис. 12). Установленные блоки для моделирования PIC контроллеров доступны в разделе Embedded Target for Microchip dsPIC библиотеки Simulink (Рис. 13).


Рис. 12. Содержимое текущего каталога после выполнения install_dsPIC_R2012a.m.
Рис. 13. Блоки, установленной библиотеки «Embedded Target for Microchip dsPIC».

Для совместной компиляции Simulink модели средствами Matlab и MPLAB необходимо прописать в переменной окружения path Matlab с высшим приоритетом путь к каталогу MPLAB с файлами MplabOpenModel.m, MplabGetBuildinfo.m и getHardwareConfigs.m:

>> path('c:\Program Files (x86)\Microchip\MPLAB IDE\Tools\MATLAB\',path) 

Установка Си компилятора MPLAB


Компиляторы MPLAB находятся на сайте Microchip (Download Archive → MPLAB C Compiler for PIC24 and dsPIC DSCs). Для установки демонстрационной версии компилятора С30 необходимо его скачать по ссылке PIC24/dsPIC v3.25 (Рис. 14) и запустить принятый файл mplabc30-v3.25-comboUpgrade.exe.
Рис. 14. Версии Си компилятора (слева) и режимы его установки (справа).

Примечание. Работа выполнена с версией v3.25 компилятора С30 для PIC24/dsPIC. Проверка показала, что следующая версия v3.30 не поддерживает совместную компиляцию моделей Matlab R2012a (dsPIC Toolbox) без ошибок.

Установочный exe файл создаёт в разделе c:\Program Files (x86)\Microchip\ новый каталог mplabc30 с файлами:


Рис. 15. Каталоги компилятора C30 MPLAB.

Последовательность Simulink программирования для PIC контроллеров

1. Создайте рабочий каталог и скопируйте в него *.mdl примеры из раздела example (см. Рис. 12).
2. Загрузите Matlab. Настройте его на рабочий каталог.
3. Включите в переменную окружения path Matlab с высшим приоритетом путь к MPLAB — каталогу c:\Program Files (x86)\Microchip\MPLAB IDE\Tools\MATLAB\:

>> path('c:\Program Files (x86)\Microchip\MPLAB IDE\Tools\MATLAB\',path) 

Примечание: Использование команды >>path без аргументов приводит к отображению списка путей переменной path в окне команд (Command Window). Удалить путь из переменной path можно командой rmpath, например:
>>rmpath(' c:\Program Files\Microchip\MPLAB IDE\Tools\MATLAB\')

4. Создайте Simulink модель для PIC контроллера, используя блоки библиотеки «Embedded Target for Microchip dsPIC» (Рис. 13), или загрузите готовую модель, например, Servo_ADC.mdl.

Тип контроллера, для которого разрабатывается Simulink модель, выбирается из списка в блоке Master > PIC (Рис. 16, Рис. 10), который должен быть включен в состав модели.


Рис. 16. Выбор типа контроллера в блоке Master модели.

5. Проверьте настройки конфигурации модели: Меню → Simulation → Configuration Parameters <Ctrl+E>. В строке ввода System target file раздела Code Generation должен быть указан компилятор S-функций dspic.tlc (Рис. 17). Выбор dspic.tlc настраивает все остальные параметры конфигурации модели, включая шаг и метод интегрирования.


Рис. 17. Выбор компилятора S-функций dspic.tlc для моделей PIC-контроллеров в разделе «основное меню → Simulation → Configuration Parameters → Code Generation».

6. Откомпилируйте модель tmp_Servo_ADC.mdl. Запуск компилятора показан на Рис. 18.


Рис. 18. Запуск компилятора Simulink модели.

В результате успешной компиляции (сообщение: ### Successful completion of build procedure for model: Servo_ADC) в текущем каталоге создаются HEX файл для прошивки PIC контроллера и MCP проект среды MPLAB (Рис. 19).


Рис. 19. Результаты компиляции модели.

Запуск модели в Matlab/Simulink выполняется в окне модели кнопкой, условное время моделирования устанавливается в строке:


Управление компиляцией Simulink моделей из среды MPLAB

Управление компиляцией Simulink модели можно выполнять командами раздела Matlab/Simulink среды MPLAB, например, в следующем порядке.

1. Разработайте модель PIC контроллера в Matlab/Simulink. Сохраните модель.
2. Запустите MPLAB.
3. Выберите MPLAB меню → Tools → Matlab/Simulink и новый раздел появится в составе меню.


4. В разделе Matlab/Simulink откройте Simulink модель, например, Servo_ADC, командой «Matlab/Simulink → Specify Simulink Model Name → Open → File name → Servo_ADC.mdl → Open». Команда Open запускает Matlab и открывает модель.

5. Откомпилируйте модель и создайте MCP проект командами Generate Codes или Generate Codes and Import Files. Перевод MDL модели в MCP проект выполняется TLC компилятором Matlab.
В результате создаётся проект MPLAB:

со скриптами модели на языке Си.

6. Откройте проект: меню → Project → Open → Servo_ADC.mcp (Рис. 20).


Рис. 20. Структура MCP проекта Simulink модели Servo_ADC.mdl в среде MPLAB.
Проект Simulink модели готов для редактирования, отладки и компиляции в машинные коды контроллера средствами MPLAB.

Подключение программатора PIC-KIT3


Узнать какие программаторы записывают бинарный код в конкретный микроконтроллер можно в разделе меню → Configure → Select Device среды MPLAB 8.92. Например, программатор PIC-KIT3 не поддерживает контроллер PIC12C508A (Рис. 21, левый рисунок), но работает с контроллером PIC12F629 (Рис. 21, правый рисунок).
Рис. 21. Перечень программаторов для прошивки микроконтроллера.

Информацию об установленном драйвере программатора PIC-KIT3 можно запросить у менеджера устройств ОС Windows (Рис. 22).


Рис. 22. Информация об установленном драйвере программатора PIC-KIT3.

Схема подключения микроконтроллера PIC12F629 к программатору PIC-KIT3 показана на Рис. 23.


Рис. 23. Схема подключения микроконтроллера PIC12F629 к программатору PIC-KIT3.

Вывод PGM программатора для прошивки контроллеров PIC12F629 не используется. Наличие вывода PGM для разных типов PIC контроллеров показано на Рис. 24. Вывод PGM рекомендуется «притягивать» к общему проводу (GND), через резистор, номиналом 1К [3].


Рис. 24. Выводы PGM PIC контроллеров.

Индикация светодиодов программатора Olimex PIC-KIT3 показана в ниже:

Желтый — Красный — Состояние программатора
Вкл — Выкл — Подключен к USB линии
Вкл — Вкл — Взаимодействие с MPLAB
Мигает — Включен постоянно — Прошивка микроконтроллера

Не следует подключать питание микроконтроллера VDD (Рис. 23) к программатору, если контроллер запитывается от своего источника питания.

При питании микроконтроллера от программатора на линии VDD необходимо установить рабочее напряжение, например, 5В программой MPLAB (Menu → Programmer → Settings → Power), как показано на Рис. 25.

Примечание. При отсутствии напряжения на линии VDD MPLAB IDE выдает сообщение об ошибке: PK3Err0045: You must connect to a target device to use


Рис. 25. Установка напряжения VDD на программаторе PIC-KIT3 программой MPLAB IDE v8.92.

Если программатор не может установить требуемое напряжение, например, 5В при его питании от USB, в которой напряжение меньше 5В, MPLAB IDE выдает сообщение об ошибке: PK3Err0035: Failed to get Device ID. В этом случае, сначала необходимо измерить напряжение программатора — считать его в закладке меню → Programmer → Settings → Status, а затем установить напряжение (не больше измеренного) в закладке меню → Programmer → Settings → Power.


Рис. 26. Измерение (слева) и установка (справа) VDD напряжения программатора PIC-KIT3 программой MPLAB IDE v8.92.

Пример MPLAB сообщения успешного подключения микроконтроллера к программатору по команде меню → Programmer → Reconnect показан на Рис. 27.


Рис. 27. Сообщение MPLAB об успешном подключении микроконтроллера к программатору.

Можно программировать не только отдельный PIC контроллер, но и контроллер, находящийся в составе рабочего устройства. Для программирования PIC контроллера в составе устройства необходимо предусмотреть установку перемычек и токоограничивающих резисторов как показано на Рис. 28 [3].


Рис. 28. Подключение микроконтроллера в составе электронного устройства к программатору.

Заключение


Малоразрядные PIC-контроллеры имеют широкий диапазон питания, низкое потребление и малые габариты. Они программируются на языках низкого уровня. Разработка программ на языке графического программирования Simulink с использованием многочисленных библиотек значительно сокращает время разработки и отладки в сравнении с программированием на уровне ассемблера. Разработанные для PIC-контроллеров Simulink структуры можно использовать и для компьютерного моделирования динамических систем с участием контроллеров. Однако, из-за избыточности кода такой подход применим только для семейств PIC контроллеров с достаточными ресурсами.

habr.com

Новые микроконтроллеры dsPIC30 серии SMPS

 

 

 

 

Практически все современные импульсные источники питания построены на основе специализированных микросхем. Но зачастую даже этот факт вынуждает разработчика каждый раз проектировать источник заново под конкретные условия работы очередного изделия. Этот задачу можно решить путем использования микроконтроллера с необходимым набором встроенных периферийных узлов для управления импульсным источником. Цена такого микроконтроллера, как правило, сравнима со стоимостью специализированных микросхем, а выгода от его использования значительно выше из-за меньшего числа требуемых внешних элементов.

SMPS микроконтроллеры семейства dsPIC30

Практически в каждое семейство выпускаемых компанией Microchip 8- и 16-битных микроконтроллеров включены контроллеры для построения импульсных источников питания различной сложности и функциональности (рис. 1).

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

В рамках семинара Masters (26-29 июля 2006), проведенного фирмой Microchip, были представлены три новых микроконтроллера популярного семейства dsPIC30: dsPIC30F1010, dsPIC30F2020 и dsPIC30F2023 (табл. 1).

Таблица 1. Основные параметры SMPS-микроконтроллеров семейства dsPIC30

Микро-
контроллер
Чис-
ло
вы-
во-
дов
Кор-
пус
Flash-
па-
мять,
Кбайт
ОЗУ,
байт
Тай-
ме-
ры
Мо-
ду-
ли
зах-
вата
Мо-
ду-
ли
срав-
не-
ния
UARTSPII2CШИМ-
конт-
рол-
ле-
ры
АЦПУВХВходы
АЦП
Ана-
лого-
вые
ком-
пара-
торы
dsPIC30F101028DIP625620111111262
dsPIC30F101028SOIC625620111111262
dsPIC30F101028QFN625620111111262
dsPIC30F202028DIP1251231211111484
dsPIC30F2020 28SOIC1251231211111484
dsPIC30F202028QFN1251231211111484
dsPIC30F202344QFN12512312111114124
dsPIC30F202344TQFP12512312111114124

Эти контроллеры специально спроектированы и предназначены для работы в составе импульсных источников питания (SMPS — Switch Mode Power Supply) и таких устройств преобразования энергии, как мощные инверторы и блоки бесперебойного питания (UPS).

По утверждению Microchip, использование этих микроконтроллеров позволяет сократить число внешних компонентов мощного импульсного источника питания до 50%, по сравнению с источниками питания на основе специализированных микросхем, что вызывает резкое уменьшение габаритов изделия, его цены и, конечно, увеличения его надежности.

Рис. 2. Структурная схема микроконтроллеров семейства dsPIC30 серии SMPS

Таблица 2. Зависимость частоты ШИМ-сигнала управления от его разрядности

Производительность,
MIPS
Частота ШИМ-сигнала, кГц
16 бит14 бит12 бит10 бит8 бит
3014,5582349373,748
209,6391566242,496

 

Это обеспечивается благодаря встроенным периферийным узлам (рис. 2): многоканальный ШИМ-контроллер с высоким разрешением 1 нс (табл. 2) и большим числом режимов работы (см. далее), многоканальный 10-битный АЦП с высокой скоростью преобразования до 2 млн./сек и до 4-х УВХ, внутренний тактовый RC-генератор (9,7 МГц и 14,6 МГц) с точностью ±1%, популярные последовательные интерфейсы (UART, SPI, I2C), от двух до четырех быстрых аналоговых компараторов.

dsPIC30F1010/2020/2023 имеют встроенное ядро ЦОС, внутреннюю флэш-память программ — до 12 Кбайт, внутреннее статическое ОЗУ — до 512 байт и высокую производительность — до 30 MIPS. Это позволяет строить на их основе сложные интеллектуальные источники питания с ПИД-регулированием (рис. 3), адаптивными методами управления и встроенным корректором мощности (Power Factor Corrector). Полный цифровой контроль всей цепочки преобразования энергии в аппаратуре управления интеллектуального источника питания: мягкий старт с ограничением пускового тока, контроль очередности подачи питания, синхронизация многоканальных источников друг с другом. Это достигается благодаря оптимальному сочетанию качества программного обеспечения и производительности встроенных периферийных узлов.

Рис. 3. Структурная схема импульсного источника питания c ПИД-регулированием

Встроенное ядро ЦОС позволяет выполнять одну итерацию с полным ПИД-управлением менее чем за 2 мкс. Из них 1 мкс отводится на работу полного ПИД-регулятора, и 1 мкс — на работу со встроенной периферией — АЦП, многоканальный ШИМ-контроллер, аналоговые компараторы.

Функции, выполняемые аппаратурой на основе dsPIC30F1010 /2020/2023, теперь могут включать автоматическую калибровку, температурную компенсацию, обеспечивать повышенную плотность мощности, большую экономическую эффективность и поддержку введения отличий в аппаратуру с помощью программного обеспечения.

Стоит отметить, что dsPIC30F1010/2020/2023 — это не только микроконтроллер с богатым набором периферийных узлов, но фактически — специализированная микросхема со встроенной памятью и микропроцессором с ядром ЦОС, спроектированная специально для работы в составе интеллектуальных импульсных источников питания. Это факт подтверждает наличие программируемых связей между встроенными периферийными узлами (IPC — Power Control Peripheral Interconnect), которые в значительной степени сокращают нагрузку на ядро процессора (рис. 4). Например, встроенный АЦП способен работать в синхронизации с ШИМ-контроллером, что позволяет минимизировать ошибки преобразования тока выходных транзисторов при их переключениях.

Рис. 4. Структурная схема внутренних программируемых связей периферийных узлов dsPIC301010/2020/2023

Как было сказано выше, ШИМ-контроллер способен работать в различных режимах работы:

  • стандартный однотактный режим (повышающие, понижающие и инвертирующие DC/DC-преобразователи малой мощности),
  • комплементарный однотактный режим (повышающие, понижающие и инвертирующие DC/DC-преобразователи средней мощности),
  • двухтактный режим (гальванически развязанные DC/DC-преобразователи на основе трехобмоточного трансформатора со средней точкой),
  • многофазный режим (мощные инверторы и источники бесперебойного питания — UPS),
  • режим с изменяющейся фазой (мощные DC/DC-преобразователи с высоким КПД),
  • режим управления скважностью в зависимости от тока (корректор коэффициента мощности),
  • режим частотного управления с фиксированным временем выключенного состояния транзистора (повышающие, понижающие и инвертирующие DC/DC-преобразователи малой и средней мощности),
  • режим управления скважностью в зависимости от тока внешнего транзистора и фиксированным временем его включенного состояния.
  • многоканальный режим с независимым управлением каждого канала (одновременное управление корректором коэффициента мощности и преобразователя в мощных инверторах, выполненного по мостовой схеме).

Цепь управления отключением обратной связи на время завершения переходных процессов (LEB — Leading Edge Blanking) позволяет отключать на программируемое фиксированное время выходы аналоговых компараторов и/или определенные внешние сигналы. Наличие этой цепи позволяет избежать включения в состав импульсного источника питания (особенно источников высокой мощности) соответствующих дополнительных внешних компонентов.

Примером приложения, где преимущества от использования новых микроконтроллеров по цене и выполняемым функциям наиболее ярко выражены, являются многоканальные источники питания. В них может быть реализована синхронная работа на одну нагрузку, поддержка горячего включения, встроенная коррекция коэффициента мощности и полная обработка аварийных ситуаций. Микроконтроллеры могут применяться и в цифровом управлении освещением или подсветкой ЖКИ-панелей большого размера.

dsPIC30F1010/2020/2023 поддерживаются бесплатной интегрированной средой разработки MPLAB IDE, недорогим С-компилятором MPLAB C30, внутрисхемными отладчиками MPLAB ICD2 и MPLAB ICE.

Для начального ознакомления и быстрого освоения импульсных источников питания на основе SMPS-микроконтроллеров dsPIC1010/2020/2023 фирма Microchip предлагает недорогой комплект отладки dsPICDEMTMSMPS.

Плата включает в свой состав микроконтроллер dsPIC2020, два независимых маломощных управляемых DC/DC-преобразователя (работа в синхронном и асинхронном режимах), узел имитации динамически изменяемой нагрузки для исследования переходной характеристики преобразователя, переменный резистор и миниатюрные кнопки (подстройка уровня выходного напряжения, стартового тока и режимов работы преобразователя).

Вся необходимая информация о микроконтроллерах серии SMPS, принципах работы импульсных источников питания, примерах их реализации и расчета доступна на сайте фирмы Microchip: www.microchip.com/smps. 

 

Получение технической информации, заказ образцов, поставка —
e-mail:
[email protected]

Наши информационные каналы

Рубрика: статья

О компании

…читать далее

www.compel.ru

Лабораторная работа № 20реализация временных функций в микропроцессорных системах на базе миКроконтроллера семейства dsPic33f Цель работы

  1. Изучить особенности программной и аппаратной реализации временных функций в микроконтроллерах (МК) семейства dsPIC33F.

  2. Изучить режимы работы и порядок формирования таймеров МК семейства dsPIC33F.

  3. Создать проект, составить исходный код программы реализации временных функций по заданному алгоритму, откомпилировать ее в среде MPLAB IDE 8, записать в память программ МК dsPIC33FJ32MC204 учебного стенда НТЦ-31.000 и выполнить.

  4. Исследовать реализацию временных функций с помощью учебного стенда НТЦ-31.000.

Подготовка к выполнению работы

  1. Изучить по [1] теоретические вопросы, связанные с понятием машинного цикла, принципами функционирования таймера/счетчика и системы прерываний.

  2. Изучить по [2] принципиальную электрическую схему к лабораторной работе.

  3. Изучить алгоритмы и исходные коды программ на языке программирования С, приведенные в методических указаниях.

  4. Подготовить ответы на вопросы для самоконтроля.

  5. Подготовить заготовку отчета (см. содержание отчета).

Вопросы для самоконтроля

  1. Укажите область применения временных функций.

  2. Дайте определение машинного цикла МК.

  3. В чем заключается метод программных циклов?

  4. В чем заключается метод реализации временных функций с использованием таймера/счетчика.

Приборы, оборудование и документация

  1. Персональный компьютер.

  2. Учебный стенд НТЦ – 31.000.

  3. Методические указания к лабораторной работе.

  4. MPLAB IDE 8. Руководство пользователя.

Порядок выполнения работы

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

  2. Произвести внешний осмотр учебного стенда и персонального компьютера (ПК) и убедиться визуально в отсутствии каких-либо повреждений и дефектов.

  3. Подключить стенд к сети. Включить тумблер «Сеть» на задней панели стенда.

  4. С помощью кабеля USB AM-BM через гнездо «USB» на задней панели стенда подключить стенд к USB – порту ПК.

  5. Включить ПК и запустить MPLAB IDE.

  6. Задание № 20.1. Создать проект LR20_1 для учебного стенда, который реализует следующее условие: мигать светодиодом VD1 с частотой 1 Гц, используя метод программных циклов. Листинг (исходный код) программы к заданию № 1 приведен в методических указаниях к данной лабораторной работе.

6.1 Выполнить пункты 2.1…2.7 руководства пользователя MPLAB IDE 8. При этом в пункте 2.4 в качестве инструмента программирования «Active Toolsuite» установите «Microchip C30 Toolsuite», а в качестве языка программирования «Toolsuite Сontents» выберите язык программирования C (MPLAB С30) (рисунок 20.1), а в пункте 2.5 выбора каталога для сохранения проекта укажите LR20_1.

6.2 С помощью пункта меню «File Import» (рисунок 20.2) открыть исходный файл к заданию № 1. В каталоге файлов исходных кодов программ «Files LR17…LR20» на локальном диске D выбрать «LR20_1.hex».

Рисунок 20.1 – Выбор инструмента и языка программирования

Рисунок 20.2 – Выбор исходного файла к заданию № 20.1

6.3 С помощью пункта меню «Programmer Select Programmer» выбрать программатор PICkit2.

6.4 Запрограммировать МК стенда НТЦ-31.000 созданной программой, используя пункт меню «Programmer Program».

Результат программирования отобразится в окне сообщений, и в случае успешного программирования (сообщение — …PICkit2 Ready) необходимо перевести МК в рабочий режим с помощью пункта меню «Programmer Release From Reset».

6.5 После получения сообщения указанного на рисунке 20.3 МК запрограммирован.

Рисунок 20.3 – Сообщение о результатах прошивки МК программой к заданию № 20.1

6.6 Проверить работу светодиодного индикатора VD1.

7 Задание № 20.2. Создать проект LR20_2 для учебного стенда, который реализует следующее условие: мигать светодиодом VD1 с частотой 1 Гц, используя таймер/счетчик. Листинг (исходный код) программы к заданию №2 приведен в методических указаниях к данной лабораторной работе.

7.1 Выполнить пункты 2.1…2.7 руководства пользователя MPLAB IDE 8. При этом в пункте 2.4 в качестве инструмента программирования «Active Toolsuite» установите «Microchip C30 Toolsuite», а в качестве языка программирования «Toolsuite Сontents» выберите язык программирования C (MPLAB С30) (рисунок 20.1), а в пункте 2.5 выбора каталога для сохранения проекта укажите LR20_2.

7.2 С помощью пункта меню «File Import» (рисунок 20.4) открыть исходный файл к заданию №2. В каталоге файлов исходных кодов программ «Files LR17…LR20» на локальном диске D выбрать «LR20_2.hex».

Рисунок 20.4 – Выбор исходного файла к заданию № 20.2

7.3 С помощью пункта меню «Programmer Select Programmer» выбрать программатор PICkit2.

7.4 Запрограммировать МК стенда НТЦ-31.000 созданной программой, используя пункт меню «Programmer Program».

Результат программирования отобразится в окне сообщений, и в случае успешного программирования (сообщение — …PICkit2 Ready) необходимо перевести МК в рабочий режим с помощью пункта меню «Programmer Release From Reset».

7.5 После получения сообщения указанного на рисунке 20.3 МК запрограммирован.

7.6 Проверить работу светодиодного индикатора VD1.

8 Задание № 20.3. Создать проект LR20_3 для учебного стенда НТЦ-31.000, который реализует следующее условие: при включении тумблеров SA1 и SA2 одновременно мигать светодиодами VD1 и VD2 попеременно с частотой 1 Гц, используя метод программных циклов. Листинг (исходный код) программы к заданию №3 приведен в методических указаниях к данной лабораторной работе.

8.1 Выполнить пункты 2.1…2.4 руководства пользователя MPLAB IDE 8. При этом в пункте 2.4 в качестве инструмента программирования установите «Microchip C30 Toolsuite» и выберите язык программирования С (рисунок 20.1).

8.2 В окне выбора пути к каталогу сохранения файлов проекта выберите «Browse…». В открывшемся окне (рисунок 20.5) выберите путь: «Мой компьютер\Локальный диск D\Lan\DSPIC33\TE111\Ivanov\LR20_3\».

Примечание – Фамилию учащегося, набранную буквами английского алфавита, выбрать из списка своей учебной группы и создать папку для лабораторной работы LR20_3 и нажать кнопку «Сохранить». Окно выбора пути к каталогу будет иметь вид, показанный на рисунке 20.6. Нажмите кнопку «Далее».

Рисунок 20.5 – Окно выбора пути к каталогу сохранения файла

Рисунок 20.6 – Выбор каталога для сохранения проекта к заданию № 20.3

8.3 В открывшемся окне (рисунок 20.7) добавить существующие файлы в проект: «+С:\+ProgrammFiles(x86)\+Microchip\+MPLABC30\+support\ +dsPIC33F\+gld\+p33FJ32MC204.gld». Нажмите кнопку «Далее».

Рисунок 20.7 – Окно добавления существующих файлов в проект

8.4 В открывшемся окне суммарной информации по проекту убедитесь, что МК и средство программирования выбраны правильно и нажмите кнопку «Готово» (рисунок 20.8).

Рисунок 20.8 – Суммарная информация по проекту

Файл появится в папке «Linker Script» инспектора проекта (рисунок 20.9).

Рисунок 20.9 – Инспектор проекта

8.5 После создания проекта в него необходимо добавить файл с исходным кодом программы МК. Для этого необходимо воспользоваться пунктом меню «File New». В появившемся окне редактора исходных текстов (рисунок 20.10) наберите исходный код программы, приведенный в методических указаниях к данной лабораторной работе.

Рисунок 20.10 – Редактор исходных текстов программ

8.6 После написания исходного кода программы к заданию № 3 с помощью пункта меню «File Save As…» откройте окно «Сохранить как» (рисунок 20.11). В этом окне выберите папку «LR20_3», в которой сохраняли файл исходного кода проекта и в строке «Имя файла» задайте название исходного кода программы, как «LR20_3.c» (рисунок 20.12). Затем нажмите кнопку «Сохранить».

Рисунок 20.11 – Окно сохранения файла исходного текста программы

Рисунок 20.12 – Сохранение исходного кода программы к заданию № 20.2

Рисунок 20.13 – Добавление исходного файла в проект

8.7 Кликните правой кнопкой мыши в окне редактора исходного кода и выберите пункт «Add To Project» (рисунок 20.13).

После описанных действий инспектор проекта должен иметь вид, показанный на рисунке 20.14.

Рисунок 20.14 – Инспектор проекта

8.8 Выполните компиляцию проекта, используя пункт меню «Project Build All». Компилятор выводит отчет о компиляции в окне «Output». В случае успешной компиляции получите сообщение BUILD SUCCEEDED (рисунок 20.15). В случае обнаружения ошибок в исходном коде соответствующие сообщения будут выведены в область уведомлений. В таком случае необходимо исправить ошибки и запустить заново компилирование проекта.

8.9 После успешной компиляции с помощью пункта меню «Programmer Select Programmer» выбрать программатор PICkit2.

8.10 Запрограммировать стенд (прошить микроконтроллер) используя пункт меню «Programmer Program».

8.11 Результат программирования отобразится в окне сообщений, и в случае успешного программирования (сообщение – … PICkit2 Ready) необходимо перевести МК в рабочий режим с помощью пункта меню «Programmer Release from Reset».

8.12 После получения сообщения, указанного на рисунке 20.3, микроконтроллер запрограммирован.

8.13 Проверить работу светодиодных индикаторов VD1 и VD2 в зависимости от положения тумблеров SA1 и SA2.

9 После проверки преподавателем результатов работы закрыть MPLAB IDE, выключить ПК и учебный стенд.

10 Оформить отчет и сдать зачет.

Рисунок 20.15 – Отчет о компиляции

studfiles.net

8. Модуль spi в dsPic

8.1. Описание интерфейса SPI

8.2. Характеристики модуля SPI в dsPIC

8.3. Режимы работы модуля SPI

8.4. Работа модуля SPI в режиме ведущего

8.5. Работа модуля SPI на примере (пример в PROTEUS)

8.1. Описание интерфейса spi

SPI – это интерфейс для последовательного обмена данными. Интерфейс SPI, так же как и его «конкурент» I2C являются самыми распространенными. Эти протоколы предназначены для использования их в масштабах платы. Хотя вполне могут работать и в других условиях. На шине должен обязательно ведущий и ведомый. В качестве ведущего в большинстве случаев выступает микроконтроллер. А такие устройства, как память, АЦП, RTC выступают в роле ведомого.

Основным элементом модуля SPI является сдвиговый регистр. И протокол SPI осуществляет обмен данными (битами) между двумя сдвиговыми регистрами. Главной особенностью данного протокола является возможность одновременного приёма и передачи данных. Один бит выходит из сдвигового регистра, а с другой стороны уже поступает бит. Это действие происходит одновременно. А синхронизацию на шине обеспечивает ведущий.

Подключение осуществляется по принципу: вход одного устройства подключается к выходу другого и наоборот. Что касается тактового сигнала, то тут всё должно быть понятно.

Установка данных при передаче и выборка при приеме всегда выполняются по противоположным фронтам синхронизации. Это необходимо для гарантирования выборки данных после надежного их установления. Так что при конфигурировании модуля SPI, учтите это.

Это что касается вкратце о протоколе SPI. Есть много источников, где можно ознакомиться с данным протоколом, поэтому здесь больше не будем на этом останавливаться.

8.2. Характеристики модуля spi в dsPic

В зависимости от варианта dsPIC предлагается один или два SPIмодуля на одном устройстве.

Модули, определяемые как SPI1 и SPI2, являются функционально идентичными. Модуль SPI1 доступен на всех устройствах, в то время как SPI2 модуль доступен во многих из более крупных (по количеству выводов) микроконтроллерах.

Примечание: В этом документе, модули SPI упоминаются вместе как SPIx, или отдельно как SPI1 и SPI2. Специальные функциональные регистры будут точно также упоминаться. Например, SPIxCON относится и к модулю SPI1 и к модулю SPI2.

SPIxпоследовательный интерфейс имеет четырех вывода:

• SDIx: Последовательный Вход данных

• SDOx: Последовательный Выход данных

• SCKx: Вход тактовых импульсов или выход тактовых импульсов

• SSx/FSYNCx: Управляемый низким уровнем сигнала выбор ведомого или вход/выход Структуры синхронизирующего импульса.

SPIxмодуль может быть сконфигурирован, чтобы использовать 2, 3 или 4 вывода. В режиме с 3 выводами,SSxне используется. В режиме с 2 выводами, ниSDOx, ниSSxне используются.

Рисунок 3. Блок схема модуля SPI

8.3. Режимы работы модуля spi

SPIмодуль использует следующие режимы работы:

• 8 битная и 16-битная Передача/приём данных

• ведущий и ведомый режим

• FramedSPI режимы

• SPIxрежим только приёма

• SPIxобработка ошибок

В данной статье будет рассмотрен режим ведущего. Для ознакомления с другими режимами необходимо смотреть даташит.

8-ми битные и 16-ти битные операции

Бит управления режимом связи MODE16в регистре управления (SPIxCON1 <10>) позволяет модулю связываться или в 8 битном или 16 битном режиме. Функциональные возможности те же самые для каждого режима кроме количества битов, которые передаются или принимаются. В этом контексте:

• модуль SPIсбрасывается, когда значение бита MODE16 изменено. Следовательно, бит не должен быть изменен в ходе нормальной работы модуля

• Данные передаются старшим битов вперёд: с 7-го бита из сдвигового регистра (SPIxSR) для 8-ми битной операции, в то время как 16 битная операция передаёт с 15 бита (SPIxSR<15>) . В обоих режимах, данные завершаются передачей 0-го бита (SPIxSR<0>)

• При передаче или получении данных, требуется 8 тактовых импульсов на выводе SCKx, чтобы переместить данные в 8-ми битном режиме. В 16-разрядном режиме требуется 16 тактовых импульсов на выводеSCKx.

studfiles.net

dsPIC DAC Project | Программирование на С | Электротехника

tupperware

Hi, Thanks for the invite :-). Couple of questions about the project: 1. Since we are talking about microphones and speakers for this project I am wondering why we would need 200kHz sample rate for the ADCs? Si Больше

$90 USD за 5 дней(-я)

www.freelancer.com.ru

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *