Перейти к содержанию
    

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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 :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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-винчестером да с электронным диском, да ещё со скоростным сетевым интерфейсом - вполне можно было работать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Преподаю программирование для микроконтроллеров уже много лет

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть кряканый, но на китайском языке тот сайт.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...Что посоветуете совсем начинающим (речь о радиокружке)...

 

Добрый день!

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость opolo8

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

будут...

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

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

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

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

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

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

 

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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость opolo8

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость opolo8

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...