Набросок шпаргалки для avr

Давно витает в голове идея шпаргалки по настройкам, регистрам микроконтроллеров. Мне понравился пример реализации подобной шпаргалки для stm32 на сайте mycontroler.ru. Для авр может и не нужна ни какая шпаргалка, то мне хочется её сделать, хотя бы для себя.
Может кто подскажет что нужно добавить, что хотят видеть.
На данный момент накидал интерфейс, заполнил некоторые поля. Файл прикрепил.
Представляю работу софтины как выставления галочек, установлен нужный_бит = 1, а на выходе получать что-то типа
ИМЯ_РЕГИСТРА = 0XFF // описание что включено а что выключено.


Прикрепил файл проета на C# для Visual studio 2012. Студия качается бесплатно с сайта мелкософта.
После попыток вспомнить дельфи, студия пошла как хлеб с маслом. Всё интуитивно понятно.
  • +6
  • 19 сентября 2012, 01:54
  • sasha85ru
  • 1
Файлы в топике: avr.zip

Комментарии (65)

RSS свернуть / развернуть
Идея хорошая. Только хардкодить интерфейс программы под конкретную микросхему не интересно. Можно сделать, чтобы программа подтягивала описание регистров из внешнего фала (например, XML). Получится универсальное решение для любого МК (достаточно будет только создать для конкретного МК этот самый файл описания регистров периферии).
+1
  • avatar
  • e_mc2
  • 19 сентября 2012, 02:26
тогда сначало надо сгородить это xml, например из stm32f10x.h — там дофига всего…
Была мысль как-то разбирать stm32f10x.h, но как определить по #define где бит, где регистр, где ещё что.
Выкорчевать все строки с началом #define, убрать дефайн, оставить имена регистров, битов, и комментарии. Вот только как это сделать чтобы туда ни чего лишнего не попало? Да зачитаться надо в интернете по поводу как разобрать текстовый файл.
0
Ну, дык тебе все равно нужно как-то описать все регистры. Сейчас ты делаешь это в дизайнере формы. А так тебе нужно будет составить описание в виде XML. В обоих случая нужно вручную описывать каждый регистр. Только в случае с XML решение получается более гибким.

По поводу парсигна stm32f10x.h – попробовать можно, но я бы на это не рассчитывал.
0
XML-файл описания регистров контроллера — это правильная идея. Только не надо городить свой велосипед, всё уже реализовано в стандарте CMSIS SVD. Скачать CMSIS (куда входит CMSIS SVD) можно здесь, а файлы-описания (в т.ч. для STM) — здесь.
Файл svd имеет несколько уровней: Device Level, Peripherals Level (периферия), Registers Level (регистры), Fields Level (битовые поля) и Enumerated Values Level (значения битовых полей). Плюс поддерживаются комментарии. По этому файлу с помощью svdcovn.exe (или несложной самописной программой) можно сгенерировать заголовочный файл и sfr-файл для Keil с комментариями для каждого define'а.

(Правда все версии svdcovn.exe, которые встречались мне, в упор не генерируют значения для уровня Enumerated Values Level и не генерируют sfr-файлы. Хотя правильный svdcovn.exe где-то должен быть.
0
Так что файл stm32f10x.h разбирать не нужно, нужно разбирать соответствующий файл svd.
0
Гм, я думал шпаргалка для AVR, а не STM32. Алсо, для AVR-ок в составе студии есть xml-ки с довольно подробным описанием железа, в том числе и регистров.
0
  • avatar
  • Vga
  • 19 сентября 2012, 03:31
Вроде для AVR. Но пошёл разговор о STM, и я указал, что такие xml-файлы уже есть. Хотя тот же CMSIS SVD можно прикрутить хоть для AVR, хоть для PIC. Глянул, в студии нечто подобное CMSIS SVD, конечно, надо использовать эти файлы-описания.
0
по уму надо не такое кодевижн-говностайл лепить:
ИМЯ_РЕГИСТРА = 0XFF // описание что включено а что выключено.
а
ИМЯ_РЕГИСТРА [|/&]= [~(](1<<ИМЯ_БИТА)|(1<<ИМЯ_БИТА)...[)]
0
и так надо и сяк надо, кому удобно чтобы настройки был вообще к чертям в отдельный файл, чтоб не мешались.А кому-то надо чтобы они всегда были под рукой.
0
но нагляднее все-таки не наборы магических чисел (что само по себе говнокод и плохая практика), а имена битов, согласись.
а кому надо в отдельный файл — сами скопипастят.
но повторюсь. наборы магических чисел == кодевижн-говнокод. и тебе не так уж много работы…
0
и да. для такого результата (с набором магических чисел) твоя софтина совершенно не нужна. для этого можно просто кодевижн скачать. выход его мастера как раз
ИМЯ_РЕГИСТРА = 0XFF
тока без подсказки…
0
а в сухом остатке — сижу и мечусь между двумя кнопками. за старание "+", за реализацию "-". пока еще не определился…
0
полностью поддерживаю
0
лучше
ИМЯ_РЕГИСТРА |=~(\; типа настраиваем порт х на
(1<<ИМЯ_БИТА)|\; вход
(1<<ИМЯ_БИТА); выход

парсить хмл файлы я давно предлогал, но эта затея быстро стухла
0
идея не стухла, я первый раз слышу про этот xml. На дежурстве будет много время, вот и займусь изучением.
0
Генерацию кода можно сделать на шаблонах, тогда каждый сможет настроить генератор под себя.
0
Чувак тут спрашывал что добавить и просит совета. Лично мне такая шпаргалка была б очень полезна, при том что она еще и генерит выходной код. Можно ее еще подмутить чтоб код выдавала для разных компиляторов. Пока автор будет делать шпаргалку, гляди и выучит иницыализацыю портов ))
0
я конечно двоечник по русскому языку, но «жи ши» мне режет глаза. :-)
0
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
комментарий был удален
может на форуме пообщаетесь?
0
пришел лесник, и всех разогнал… ;)
0
Возвращайся на филфак и срись по поводу правил там. Заебали тут уже на пустом месте срачи разводить.
0
Ди, если уж ты тут — не пора ли пройтись постотеркой? Тут завалялась пара дублей (в том числе один мой, в блоге «PB») и реклама.
0
  • avatar
  • Vga
  • 21 сентября 2012, 11:48
да мы вроде и не срались…
0
Если человек решил поделиться мыслями с общественностью, то ему стоит позаботиться о том, чтобы этой самой общественности было приятно его читать. Конечно, никто не требует от электронщика знания токостей языка и умения создавать высокохудожестенный образ (хотя тоже неплохо бы). Но делать ошибки в школьном материале просто постыдно.

А срач разводить и правда не надо. Просто тихо поправить ошибки по первому замечанию, и все.
0
ты проморгал. там автора даже не трогали. мирная дискуссия, даже скорее просто обсуждение.
0
Мил человек, в прошлый раз тоже была мирная дискуссия. По крайней мере, пока я присутствовал. Что потом было, я не видел. Но, видимо, у кого-то случается дикий баттхерт только от малейшего намека на то, что хорошая статья должна быть грамотной не только в технико-фактологическом, но и в речевом плане.
0
да и тут была даже более чем мирная.
(эх, чую нам ща опять барин люлей выпишет… ;) )
0
Замечания надо писать в личку.
0
В общем, логично. Но первый позыв комментировать, ессно. :)
0
в новой студии пишем «переменную.» и вылезает менюшка со списком того что может переменная, при 1 клике выходит описание. Вот бы тоже самое для микроконтроллеров…
0
в avr студии наверное можно такое сделать?
0
В компиляторах МикроЭдектроники это давно тоже есть. По крайней мере, в МикроПаскалях для PIC и для AVR.
0
  • avatar
  • SWG
  • 19 сентября 2012, 14:06
6-ая студия тоже может так показывать методы и свойства объекта.
0
Храните информацию в JSON, он более читабельный в отличие от XML.
ww2.servicestack.net/wp-uploads/2010/09/JsonXmlResults.png
0
Я бы, все же, использовал XML. Читабельность – вопрос субъективный и не принципиальный (все равно данные будет программа парсить). Зато парсеров XML навлом, под любую платформу и фреймворк. И есть такие очень полезные вещи как XSLT и XSD.
0
Вижу, кодевижен тут уже вспоминали. Только хотел напомнить…
0
  • avatar
  • _YS_
  • 23 сентября 2012, 16:05
привет всем, я делаю прямо в коде так (AVR asm, и на С можно похожее наворотить)
(не люблю внешние include)
;Пример настройки USART

	;Задать формат кадра 8N1 (8бит, без контроля четности, 1стоп)
	.set  umode = (0<<UMSEL1)		;Асинхронный режим
	.set  parit = (0<<UPM11)|(0<<UPM10)	;Контроль четности = НЕТ
	.set  stop  = (0<<USBS1)		;1 стоп-бит
	.set  size  = (1<<UCSZ11)|(1<<UCSZ10)	;Размер символа 8 бит - см.также UCSZ12(UCSR1B)
	ldi   r16, umode|parit|stop|size
	OUTP  UCSR1C,r16

	.set  rxie  = (0<<RXCIE1)		;Запретить прерывание RX Complete
	.set  txie  = (0<<TXCIE1)		;Запретить прерывание TX Complete
	.set  udie  = (0<<UDRIE1)		;Запретить прерывание Data Register Empty
	.set  rxe   = (1<<RXEN1)		;Разрешить приемник USART1 (Enable receiver)
	.set  txe   = (1<<TXEN1)		;Разрешить передатчик USART1 (Enable transmitter)
	.set  size  = (0<<UCSZ12)		;Размер символа 8 бит - см.также UCSZ11,UCSZ10(UCSR1C)
	ldi   r16, rxie|txie|udie|rxe|txe|size
	OUTP  UCSR1B,r16

менять 1 и 0 надо только в директивах .set, имена переменных в .set могут повторяться в разных местах программы, ибо они могут переопределяться
0
Мусье знает толк в извращениях. Имхо надо было сделать обычной справкой, или набором взаимосвязанных html страниц. Делать справку-шпаркалку в виде отдельной софтины, это сильно конечно, но не удобно, слишком не удобно. :(
0
Месье, как я понимаю, хочет сделать автоконфигуратор. Тобишь не справка (она и так есть, в pdf, даташитом зовется), а потыкал крыжики — получил код.
0
Сегодня повилось время попаять свой блок питания.
И ни как нет время на вбивания всего этого в xml.
Да и наверное это ни кому не нужно будет? Хотя если взять отдельно взятые библиотеки и сделать для них гуй? Например как водвизжон-авр настройка lcd?
Полностью не забрасываю эту тему потому что бывает свободное время далеко от дома, когда только субноут с собой. Так вот на нём и можно удвольтворить свои потребности в ковырянии чего нибудь.
Да, прошу прощения за тему про политику. Исправлюсь.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.