32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

Интерфейс прибора реализован на базе монохромного индикатора разрешением 128х64, и включает в себя 35 различных экранов, в которых выполняются все манипуляции с прибором, включая его наладку и тестирование всех узлов (ЦАП, АЦП, все дискретные входы и выходы), установку параметров алгоритма обработки сигналов (DSP), а также все переменные настройки прибора (более 200 переменных).

Программно интерфейс реализован в виде библиотеки классов C++, представляющих элементы управления (кнопки, поля ввода, текстовые поля и пр.)

Так это выглядит в натуральном виде:

Ещё  несколько картинок под катом.

Read the rest of this entry »

32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

В предыдущей части (http://32bit.me/?p=842) были рассмотрены основные функции работы с прерываниями микроконтроллера LPC17хх. Однако, рассмотренные функции не работают с особым видом прерываний ядра Cortex M3 – системными исключениями. Ниже будет рассмотрена работа с системными исключениями на примере системного исключения SysTick. Также будет рассмотрено одно исключение из тех правил работы с прерываниями, которые рассматривались в части 2.

Read the rest of this entry »

32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

В первой части (http://32bit.me/?p=839) были приведены некоторые сведения о структуре контроллера прерываний Cortex M3. В этой части будут рассматриваться примеры обработки прерываний в этой архитектуре.

Read the rest of this entry »

32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

По сравнению с микроконтроллерами ARM7, такими как LPC2368, в архитектуре Cortex M3 наибольшей модернизации подверглась система прерываний. Она стала существенно более сложной и гибкой. Ниже будут рассмотрены некоторые особенности нового контроллера прерываний (Nested Vectored Interrupt Controller, NVIC).

Read the rest of this entry »

32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

Repetitive Interrupt Timer (RIT) является ещё одним таймером, которого не было в ARM7, и который появился в Cortex M3. Как следует из названия, он предназначен для генерации прерываний, повторяющихся через определённые промежутки времени. Его структура намного проще, чем у обычного таймера-счётчика, но несколько сложнее, чем у SysTick, рассмотренного здесь: http://32bit.me/?p=796. В большинстве практических случаев эти таймеры взаимозаменяемы.
Ниже будет рассмотрено применение таймера RIT.

Read the rest of this entry »

32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

В микроконтроллерах LPC17xx (ядро Cortex M3), наряду с обычными универсальными таймерами-счётчиками в количестве 4-х штук есть два дополнительных таймера: SysTick и Repetitive Interrupt Timer, использование которых позволяет освободить универсальные таймеры-счётчики для других целей.

Read the rest of this entry »

32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

Проект, написанный на С++ в IAR под микроконтролер LPC2368 (ядро ARM7TDMI), не заработал после перекомпиляции под LPC1768 (ядро Cortex M3). Предпринятые исследования показали, что программа падает на совершенно невинной строке:

AddControl(new usBmpButton(110, 9, 17, 18, 10, BTN_FORWARD, MSG_BTN_FORWARD));

то есть, как нетрудно догадаться, именно на операции выделения памяти new.

Дальнейшее изучение проблемы привело к файлам конфигурации, хранящимся в папке config проекта. В файле LPC1768_Flash.icf есть строка:

define symbol __ICFEDIT_size_heap__     = 0×400;

то есть на «кучу» (динамически распределяемую память) отводится всего лишь 1 кбайт памяти! В старом проекте в аналогичном файле было указано значение 0×6000, т.е. 24 кбайта! После изменения значения программа заработала.

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

32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

При перетаскивании проекта с LPC2368 (ядро ARM7TDMI) на LPC1768, который является pin-to-pin совместимым с LPC2368, но на ядре Cortex M3, столкнулся со следующими проблемами и особенностями:

Read the rest of this entry »

32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

Плата прибора, разработкой которого я сейчас занимаюсь. Плата содержит микроконтроллер LPC1768 и четыре гальванически изолированных (друг от друга и от процессора) каналов ЦАП (токовые выходы 4-20 мА, 12 разрядов), а также различные порты (USB, RS-232, RS-485).

32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

Вчера в Екатеринбурге состоялся семинар, посвящённый продукции фирмы NXP – микроконтроллерам с ядром Cortex M3.

Семинар проводила фирма SIMECS из Санкт-Петербурга (www.microcontroller.ru) и фирма «Радиоэлектроника», г. Екатеринбург (www.radioel.ru).

Был прочитан доклад по архитектуре Cortex M3, по среде разработки Keil, а также проведён тренинг на базе отладочного набора Keil с микроконтроллером LPC1768.

Profile

32bit_me: (Default)
32bit_me

July 2017

S M T W T F S
      1
2345678
9101112131415
16171819202122
232425262728 29
3031     

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 21st, 2017 01:32 am
Powered by Dreamwidth Studios