Как стать автором
Обновить

«Программирование мышкой» для микроконтроллеров

Время на прочтение5 мин
Количество просмотров39K
Всего голосов 13: ↑13 и ↓0+13
Комментарии13

Комментарии 13

Жесть, до чего докатились!
Представляю себе, как выглядит автогенерированный код. Поди-ка поправь в нем что-нибудь…
А вы не представляйте, вы посмотрите.
Там разграничены области, которые обновляются конфигуратором, и области для user code. Всё что между знаков $ перезаписывается автоматически.
Часть функции инициализации АЦП
extern void ADC_0_enter_DefaultMode_from_RESET(void) {
	// $[ADC0MX - ADC0 Multiplexer Selection]
	/*
	// ADC0MX (AMUX0 Positive Input Selection) = ADC0P6 (Select channel
	//     ADC0.6.)
	*/
	ADC0MX = ADC0MX_ADC0MX__ADC0P6;
	// [ADC0MX - ADC0 Multiplexer Selection]$


	// $[ADC0CF - ADC0 Configuration]
	/*
	// AD8BE (8-Bit Mode Enable) = 8_BIT (ADC0 operates in 8-bit mode.)
	// ADGN (Gain Control) = GAIN_1 (The on-chip PGA gain is 1.)
	// ADSC (SAR Clock Divider) = 0x19
	// ADTM (Track Mode) = TRACK_NORMAL (Normal Track Mode. When ADC0 is
	//     enabled, conversion begins immediately following the start-of-
	//     conversion signal.)
	*/
	ADC0CF = ADC0CF_AD8BE__8_BIT | ADC0CF_ADGN__GAIN_1 | (0x19 << ADC0CF_ADSC__SHIFT)
		 | ADC0CF_ADTM__TRACK_NORMAL;
	// [ADC0CF - ADC0 Configuration]$


	// $[ADC0TK - ADC0 Burst Mode Track Time]
	// [ADC0TK - ADC0 Burst Mode Track Time]$


	// $[ADC0PWR - ADC0 Power Control]
	// [ADC0PWR - ADC0 Power Control]$

...


громоздко разве что
Каждый раз, когда я вижу подобное разделение, у меня в голове голос робота говорит: «Че-ло-век, пи-ши код сю-да».
Кстати, пользоваться автогенератором можно хотя бы для того, чтобы создавать примерчики, не выуживая последовательности, регистры и сдвиги из даташита, прыгая от страницы к страницы по получасу.
Т.е. всё же это продвинутый графический инициализатор, который сейчас во многих платформах есть, или реально визуальный ЯП, типа «algorithm builder» или «дракон»?
Это инициализатор кристалла, ничего революционного, но весьма удобно. Позволю себе самоцитату:
Многие микроконтроллерные платформы поддерживают инструменты для создания начальной конфиграции периферийных устройств и портов ввода/вывода. Обычно это ...

Т.е. речь о автоматизации создания «статичных» режимов работы, а не полноценных алгоритмов.
Ясно, меня смутило слово «программироваине».
Вот кстати, если кому интересно, подобный инициализатор для PIC-ов:
puu.sh/iKfw6/3f3185d837.png
И, в каком-то виде для STM32Fxxx/STM32Lxxx — STM32CubeMX. Как минимум, настройка системы тактирования там была. Настройка IO, скорее всего, тоже.
НЛО прилетело и опубликовало эту надпись здесь
Ага, главное чтобы errata вовремя подгружались :)
Порог вхождения в программирование микроконтроллеров надо снижать и статьи подобные этой дают надежду неподготовленному читателю. Увы, без теоретических знаний добиться понимания будет сложно, использование автогенератора может только усложнить задачу для тех, кто хочет заниматься данным вопросом всерьез.
Ну это же не Arduinoвские analogRead(), а интерфейс, позволяющий вместо поиска в datasheet регистров Timer 2 Reload High и Low Byte набрать в поле Timer Overflow 1000 мс и, главное, получить

	// $[TMR2RLH - Timer 2 Reload High Byte]
	/*
	// TMR2RLH (Timer 2 Reload High Byte) = 0xFF
	*/
	TMR2RLH = (0xFF << TMR2RLH_TMR2RLH__SHIFT);
	// [TMR2RLH - Timer 2 Reload High Byte]$

	// $[TMR2RLL - Timer 2 Reload Low Byte]
	/*
	// TMR2RLL (Timer 2 Reload Low Byte) = 0x30
	*/
	TMR2RLL = (0x30 << TMR2RLL_TMR2RLL__SHIFT);
	// [TMR2RLL - Timer 2 Reload Low Byte]$


Я бы вообще не говорила что конфигуратор — инструмент, предназначенный для новичков. Это инструмент, помогающий специалистам любого класса упросить ту часть работы, которую упрощать можно и нужно. Это как использовать Ctrl-F вместо пролистывания 500-страничного pdf.
Наверное было не совсем правильно разбирать в статье почти полностью автоматически созданное приложение. Это наталкивает на мысль, что программирование заключается в тыканьи мышкой, в реальности же работа инженера начинается только после нажатия «Genarate Source».
Зарегистрируйтесь на Хабре, чтобы оставить комментарий