Jump to content

    

Микроконтроллеры для начинающих

ПРостите, а где можно надыбать компилятор с Си для MCS-51? Франклин не советуют, избыточный код мол генерирует, советуют Кейл, а даже дем версии на сайте Кейла я не нашел. Есть кряканый, но на китайском языке тот сайт.

И вообще, насколько рационально переходить на Си?

Работая на Си, практически не зависишь от структуры контроллера. Посмотрел регистры специальных функций и достаточно. Остальное - дело компилятора. Если очень заботит скорость, то прежде чем переходить на ассемблер, лучше глянуть в библиотечные функции. Там обычно есть функции, реализующие особенности контроллера для более быстрого выполнения. Да и структура программы получается гораздо более логичной (для начинающих) при отсутствии оператора goto.

Отсюда вывод - переходить стоит!

Share this post


Link to post
Share on other sites

Пик и авр- это как ислам с христанством- каждый доказывает то, во что верит...

 

хотя сам начал с авр, изучал пики, 51 и 430 немного, но авр остается первым и любимым :)

 

на си - однозначно переходить стоит- если это не тини12 конечно же...

Share this post


Link to post
Share on other sites

To SSerge:

Ya nachinal s BASIC programmirovat'...eshe v shkole...Tak chto ya - umstvenno otstaliy ??? Nu ne bilo na UKNCshkah i Poiskah togda drugih kompiliatorov... ABIDNO :)

Share this post


Link to post
Share on other sites
To SSerge:

Ya nachinal s BASIC programmirovat'...eshe v shkole...Tak chto ya - umstvenno otstaliy ??? Nu ne bilo na UKNCshkah i Poiskah togda drugih kompiliatorov... ABIDNO :)

Ну почему сразу отсталый? Всего лишь оболваненный :), как и я кстати, если дословно понимать Дейкстру, это из него цитата в том сообщении. Герр проффессор просто немного сгустил краски, вот у него и получилась такая загогулина - гипербола, т.е. художественное преувеличение.

 

Что же до компиляторов - то их было просто вагон. На PDP под RT-11 были Фортран-4 и Фортран-77, целых два Паскаля, и два С (DECUS-овский и на основе pcc), и даже Кобол был. Вот только дисковых накопителей у УКНЦ не было.

А с SCSI-винчестером да с электронным диском, да ещё со скоростным сетевым интерфейсом - вполне можно было работать.

Share this post


Link to post
Share on other sites
Объясню: у PIC-ов слишком оригинальная архитектура, неудачная регистровая система, банки памяти - все это ИМХО конечно.

 

честно говоря, мне то же нравится пиковская архитектура. Хотя может просто потому, что начинал с 51. Вернее даже с 31. Но регигтровая система неудачная - первый раз слышу. Банки памяти - потому что память такая. У АВР она то же есть, но всего 32 регистра вроде. Или около того.

 

Если смотреть 18 серию, там уже попроще с банками. Страниц нет вообще. Кроме того, ечть 24 и dsПики.

 

Сам я начинал с асма. Потому что 10 лет назад не знал о компиляторах. Инета не было, а были 2 книги - одна по однокристалкам 51, второй толмут от микрочипа. Потом перешел на Си. Первое время делал асм вставки. Потом меньше и меньше. Считаю - что переход нужен.

Share this post


Link to post
Share on other sites

Попахивает очередной священной войной.

Работайте, пофиг на чём. Можно работать на любых uC. Требования к интрегированным

интерфейсным модулям первичны, и энергопотребление - для критичных к этому параметру задач.

При прочих равных применяется то, с чем больше опыта.

Share this post


Link to post
Share on other sites

Преподаю программирование для микроконтроллеров уже много лет. Пробовали PIC, Fujitsu, MCS51, ARM. Лучше всего для новичков прижился MCS-51. Литературы и методических материалов - море. Для "продвинутых парней" - ARM7. Язык программирования - немного ассемблера для MCS51, для затравки, дальше C. Для ARM7 - только C.

Share this post


Link to post
Share on other sites
Преподаю программирование для микроконтроллеров уже много лет

 

А где преподаете? Что посоветуете совсем начинающим (речь о радиокружке), есть какие-то очень доступные обучалки? Проблема вот в чем, если с обычной логикой все обычно схватывается на лету, то вот когда речь заходит о микроконтроллерах, то проблема начинается практически сразу на этапе объяснения архитектуры. Помнится в институте у нас были "чемоданы" на которых изучался асм, нет ли чего-нибудь подобного для AVR (PIC)

Share this post


Link to post
Share on other sites
Есть кряканый, но на китайском языке тот сайт.

 

Я знаю китайский. Давайте ссылку. ^_^

Share this post


Link to post
Share on other sites
...Что посоветуете совсем начинающим (речь о радиокружке)...

 

Добрый день!

 

Если позволите, я хотел бы выяснить у Вас в части радиокружка - а какие интересы у радиокружковцев? Я часто советую начинать освоение микроконтроллеров с помощью программ вида FlowCode. Но у меня нет ни опыта преподавания, ни навыков ведения кружков и т.д. То есть я могу ориентироваться только на мнение других.

 

Если Вас не затруднит, был бы признателен за совет практика.

Share this post


Link to post
Share on other sites
Guest opolo8

Хотелось бы освоить программирование контроллеров AVR на языке C++, может кто - нибудь знает какую - нибудь литературу по этой теме? Столкнулся с тем что все примеры для C, и книги которые есть посвящены программированию на C. Хотелось бы узнать как компилятор C, распологает программу в памяти контроллера. Заранее благодарю за ответы( если будут).

Share this post


Link to post
Share on other sites

будут...

читай ШПАК Ю.А. Программирование микроконтрллеров AVR и PIC на языке С.

Евстифеев Микроконтроллеры AVR семейства tINY и mEGA...(ну или чета такое в этом роде) книга есть 2004 года и 2007 года

программа CodevisionAVR компилятор и загрузчик (чета загрузчик у меня плохо работает загружаю PonyProg)

программа VMLAB - симулятор простецкий типа просто отладчик кода

программа Proteus - крутой симулятор но AVR тама мало ждемс версию 7.3

а вообще отладчиками пользоваться имхо на них не надо надеяться - в них много глюков и недочетов...

 

Компилятор не располагает саму программу в контроллер есть программы загрузчики PonyProg или компилятор-загрузчик CodevisionAVR...

 

программа AVRStudio отладчик компилятор загрузчик - вроде не наврал...

 

нужно сделать тестовую плату например есть например тупо повесить на порт светодиодики (для начала) потом с микросхемами тестовую - знаю ссылку могу сказать

Share this post


Link to post
Share on other sites
Guest opolo8

Спасибо за рекомендацию. Для отладки есть плата STK500, так что с этим проблем нет. Ю.А.Шпака просмотрел, надо будет все таки подробно почитать. Но там примеры все на C, в этом и проблема, знаю C++ и не очень хочется разбираться с особенностями C, но похоже что придется. А про память я немного другое имел ввиду, как программа располагается в пространстве памяти? Раньше программировал на ассемблере контроллеры с архитектурой MCS-51, так там все просто так как полностью сам управляешь расположением всей программы в пространстве памяти, а вот в C что то не совсем ясно.

Share this post


Link to post
Share on other sites
Спасибо за рекомендацию. Для отладки есть плата STK500, так что с этим проблем нет. Ю.А.Шпака просмотрел, надо будет все таки подробно почитать. Но там примеры все на C, в этом и проблема, знаю C++ и не очень хочется разбираться с особенностями C, но похоже что придется.

Если знаете С++, значит, знаете и С, т.к. С является подмножеством С++. Особенностей С, в которых он не совпадает с С++, очень немного - на одной руке пальцев хватит пересчитать. Еще надо обратить внимание на то, какие возможности языка поддерживаются - они, как правило, не все поддерживаются (и это часто оправдано). Например, врядли найдете 8/16-разрядный процессор, компилятор которого поддерживал бы исключения. Но в остальном все вполне пристойно - классы, наследование, полиморфизм, шаблоны, все это на сегодняшний день уже есть.

 

А про память я немного другое имел ввиду, как программа располагается в пространстве памяти? Раньше программировал на ассемблере контроллеры с архитектурой MCS-51, так там все просто так как полностью сам управляешь расположением всей программы в пространстве памяти, а вот в C что то не совсем ясно.

Все как обычно. И тоже все управляемо. В библиотеке есть функция startup (ее названия у всех платформ свои, но суть одна), которая выполняет инициализацию регистров процессора (указатель стека и др.), а также статическую и динамическую инициализацию, после чего передает управление функции main путем вызова ее. Эта функция (startup) размещается в памяти программ всегда, и ей передается управление при сбросе процессора - т.е. когда процессор стартует с начального адреса (у разных платформ этот адрес тоже свой в силу аппаратных особенностей). Конкретные детали реализации этого - как что размещается и т.д. - надо смотреть документацию на используемую платформу. Как правило данные и код мапятся на именованные сегменты памяти, а сами сегменты размещаются в памяти в соответствии с директивами линкеру, задаваемыми в линкерном скрипте. Обычно пакет поставляется уже в таком виде, что там все как-то настроено по умолчанию, и уже можно начать сразу что-то писать. При желании можно разобраться, что к чему, и "перезаточить" под свои нужды/вкусы.

Share this post


Link to post
Share on other sites
Guest opolo8

Болшое спасибо за исчерпывающий ответ. Осталось только разобраться какие классы и функции существуют для работы с контроллерами AVR.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this