Микроконтроллеры
От: Sub0  
Дата: 27.02.03 03:10
Оценка: 2 (1)
Привет всем.

Хочу разобраться с программированием микроконтроллеров и подключением оных к PC например через USB, подскажите с чего начать, ходил на сайт MicroChip кое-что почитал, но datasheets не очень помогают. Мне интересно всё — напрмиер написал я программу, как мне её заставить работать на микроконтроллере, как контроллер подключить к PC. Поделитесь ссылочками и личным опытом.
Re: Микроконтроллеры
От: Linuxoid  
Дата: 27.02.03 09:17
Оценка:
Здравствуйте, Sub0, Вы писали:

S>Привет всем.


S>Хочу разобраться с программированием микроконтроллеров и подключением оных к PC например через USB, подскажите с чего начать, ходил на сайт MicroChip кое-что почитал, но datasheets не очень помогают. Мне интересно всё — напрмиер написал я программу, как мне её заставить работать на микроконтроллере, как контроллер подключить к PC. Поделитесь ссылочками и личным опытом.


Привет!
Могу поделиться личным опытом. Я занимался два года программированием AVR (это семейство микроконтроллеров фирмы Atmel — www.atmel.com)
Расскажу как начинал. Дело было на первой работе, сразу после института. Опыта — почти ноль, только институтская бакалаврская на 1816ВЕ48, впрочем, до железа так и не доведенная. В качестве первого задания дали исходники реального проекта (на asme для AVR), нужно было разобраться, как они работают и потом доработать программу. Сначала почитал даташит на микроконтроллер, потом разбирался с листингом, попутно изучая систему команд. Где-то через неделю наступило прояснение — понял, как работает программа и что она делает. Потом были свои разработки, шишек набил конечно немало.

Для программирования микроконтроллеров необходимо и достаточно иметь описание контроллера (datasheet), среду разработки (компилятор, отладчик) и программатор. Для PIC'ов и AVR могу посоветовать PonyProg — бесплатный программатор, очень простой, но достаточно надежный и удобный. Схему и программное обеспечение можно скачать здесь — www.lancos.com
Что касается подключения к компьютеру — проще всего сделать это, используюя COM-порт. С USB не работал, ничего по этому поводу сказать не могу.
Если появятся еще вопросы (я думаю, они появятся обязательно), рекомендую конференцию по микроконтроллерам на www.telesys.ru (Раздел Электроника -> Конференции).
Успехов! >BR
Re: Микроконтроллеры
От: UgN  
Дата: 27.02.03 09:38
Оценка:
Здравствуйте, Sub0, Вы писали:

S>Хочу разобраться с программированием микроконтроллеров и подключением оных к PC например через USB, подскажите с чего начать, ходил на сайт MicroChip кое-что почитал, но datasheets не очень помогают. Мне интересно всё — напрмиер написал я программу, как мне её заставить работать на микроконтроллере, как контроллер подключить к PC. Поделитесь ссылочками и личным опытом.


А оно тебе надо?
Это же не только программирование, это еще и схемотехника...
И чтобы все грамотно сделать -- нужены не только знания, но и опыт.

Программу написать несложно.
Проще всего на ассемблере.
Как правило, инструменты для этого бесплатны и лежат на сайте производителя контроллера.
Можно поискать и компиляторы ЯВУ (Я пользовал IAR С)
Для того,чтобы написать программу для микроконтроллера (даже на ЯВУ), неплохо бы изучить архитектуру выбранного чипа.
Как с памятью работать, как с прерываниями и т.д. Это в DataSheets написано.

После того, как напишешь и отладишь (как правило есть программные эмуляторы, но если есть возможность -- используй ICE),
бинарник нужно залить в микроконтроллер. Нужен программатор. Хотя, если использовать чипы с возможностью in-system programmable (как например Atmel AVR -- рекомендую), то можно обойтись и без программатора -- паяешь кабель на LPT и прошиваешь с PC. Программку для прошивания напишешь сам -- не сложно, как именно прошиваются in-system написано у них в доках. (Например, через ноги MISO-MOSI).

Как ты контроллер будешь подключать?
Не знаю, зависит от того, что тебе нужно...
Но в любом случае, некоторая обвязка нужна самому контроллеру + обычно, еще конвертор для связи с внешним миром (Например, через RS-232 для нормализации уровней, для токовой петли... для USB тоже что-то было...).


Ссылки:
www.autex.ru
www.argussoft.ru
www.atmel.com
www.atmel.ru
www.iar.com
www.telesys.ru/wwwboards/mcontrol/index.shtml
Re[2]: Микроконтроллеры
От: Tim18 Россия  
Дата: 26.03.06 16:51
Оценка:
Здравствуйте, Linuxoid, Вы писали:
---
Привет!
Меня интересует среда написания программы для микроконтроллера!
Собственно в чём надо прогу воять? Компилить? Отладка?
На Ассемблере?
А есть что нибудь получше, более удобное, чем код асмы?
Re[3]: Микроконтроллеры
От: Valery A. Boronin Россия linkedin.com/in/boronin
Дата: 27.03.06 11:00
Оценка:
Здравствуйте, Tim18, Вы писали:
убедительная просьба следить за объемом цитирования — модератор
... << RSDN@Home 1.2.0 alpha rev. 648>>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Re[3]: Микроконтроллеры
От: TarasCo  
Дата: 27.03.06 13:07
Оценка:
Здравствуйте, Tim18, Вы писали:

T>Здравствуйте, Linuxoid, Вы писали:

T>---
T>Привет!
T>Меня интересует среда написания программы для микроконтроллера!
T>Собственно в чём надо прогу воять? Компилить? Отладка?
T>На Ассемблере?
T>А есть что нибудь получше, более удобное, чем код асмы?

Какой микроконтроллер?

Существуют три метода:
1. Использовать бесплатный компилятор/ассемблер. Производители как правило держат это добро на сайтах. Работаем так:
-пишем в текстовом редакторе текст программы
-собираем компиляторм/асемблеров из командной строки. На выходе получаем бинарный модуль, годный для заливки в микропроцессор
-берем программатор ( бывают аппартаные или ( если микропроцессор поддерживает ) программные ( PonyProg например ) )
-тестирование и отладка только по косвенным признакам — мигаем лампочками и.т.д.
2. Использовать IDE. С этим посложнее, многие производители продают IDE, причем зачистую в составе китов. В последнем случае стоимость комплекта может быть внушительной. По сравнению с п.1 появляются следующие удобствия:
— возможность редактирования кода в спецалино заточенной под это IDE ( подсветка синтаксиса )
— использования симулирующего отладчика
— сборка в визуальном режиме.
Далее, как и в п. 1:
— ручная заливка
— отладка собственными силами
3. Использование специальных отладочных плат совместно с IDE.
В этом случае все происходит в визуальной среде.

Послений вариант наиболее удобен.

Многие фирмы продают т.н starter kit — комплект для изучения. Они как правило не дорогие ( не больше 1000$ ) и дают полное представление о цикле разработки. Если есть возможность, рекомендую начать с такого комплекта.
Да пребудет с тобою сила
Re[4]: Микроконтроллеры
От: Аноним  
Дата: 27.03.06 13:19
Оценка:
Здравствуйте, TarasCo, Вы писали:

TC>Существуют три метода: ......

А какой контроллер выбрать для обучения? -типа: для мигания лампочками, пару входов и выходов? Может PIC?
Программатор есть. PonyProg и ICProg есть!
Надобы учебник по асме!
Re[5]: Микроконтроллеры
От: TarasCo  
Дата: 27.03.06 15:07
Оценка:
Здравствуйте, Аноним, Вы писали:

АА>А какой контроллер выбрать для обучения? -типа: для мигания лампочками, пару входов и выходов? Может PIC?

IMHO, самые удобные AVR. PIC — хорошая машинка, только программировать не удобно, мне лично с AVR больше нравилось работать. Также, можно посветовать классику — 8051.

А>Надобы учебник по асме!

отучайтесь от учебников. Мануалы нужно читать
Да пребудет с тобою сила
Re[6]: Микроконтроллеры
От: Аноним  
Дата: 17.05.06 05:38
Оценка: 7 (1)
Здравствуйте, TarasCo, Вы писали:

АА>>А какой контроллер выбрать для обучения? -типа: для мигания лампочками, пару входов и выходов? Может PIC?

TC>IMHO, самые удобные AVR. PIC — хорошая машинка, только программировать не удобно, мне лично с AVR больше нравилось работать. Также, можно посветовать классику — 8051.

Я бы посоветовал TUSB3210 от техаских ковбоев. Плюсы:
1. Классическое ядро 8052
2. Загрузка фирмвари по USB, отлаживаться очень удобно.
3. 8 Кб памяти программ для обучения — за глаза.
4. Отличная реализация USB 1.1 — опять таки для изучения шины и особенностей написания драйверов — вполне достаточно.
5. Бесплатные образцы контроллеров Texas Instruments доставит Вам в течении 3-10 дней (мне пришло за 4 дня).

Ссылка на описание производителя: http://focus.ti.com/docs/prod/folders/print/tusb3210.html
Re[3]: Микроконтроллеры
От: Streamer1 Украина  
Дата: 17.05.06 20:25
Оценка:
Здравствуйте, Tim18, Вы писали:

T>Меня интересует среда написания программы для микроконтроллера!

T>в чём надо прогу воять? Компилить? Отладка? На Ассемблере?
T>А есть что нибудь получше, более удобное, чем код асмы?

есть, IAR Embedded Workbench, который выпускается в версиях наверное под все типы процессоров и контроллеров... например PIC,AVR, MSP430(крайне рекомендую!),Z80,Motorola и т.д.
там есть:
— ASM
— С
— EC++ (Embedded C++, это C++ но без некоторых вредных для контроллеров фич)
— отладчик-симулятор со скриптами и кучами всяких наворотов
— отладчик-внутрисхемный — позволяет отлаживать программу прямо в реальном процессоре, установленном в ус-во
— встроенный прошиватор контроллера совмещенный с отладчиком, т.е нажал кнопку — скомпилилось, залилось, запустилось, отлаживай прямо в среде по исходнику...

ходи на telesys.ru, в раздел микроконтроллеры, там сможешь узнать где что брать и как чего сделать, периодически даже лекарство появляется
сам уже под контроллеры не пишу, так что о последних новинках не в курсе

также рекомендую uC/OS-II — мультиплатформенное многозадачное ядро реального времени на Си (кстати сертифицировано в США для применения в устройствах от которых зависит жизнь людей! широко применяется в аппаратуре самолетов) — довольно простое, легко портируется под любой процессор, не требовательно:
типично кушает ~2 кБ программной памяти; 2 кБ ОЗУ хватает на 3-4 задачи, одна из которых активно кушает стэк (например использующая printf)...
После виндовса это ядро очень удобно, т.к. дает возможность писать нормальные многозадачные решения, не заморачиваясь на машинах состояний, циклограммах и т.п.
Само ядро платное, стоит порядка $2000, демоверсии не распространяются, но если будет нада — найдешь
Тот кто говорит не знает, тот кто знает не говорит.
Re[7]: Микроконтроллеры
От: Streamer1 Украина  
Дата: 17.05.06 20:40
Оценка:
Здравствуйте, <Аноним>, Вы писали:

АА>>>А какой контроллер выбрать для обучения? -типа: для мигания лампочками, пару входов и выходов? Может PIC?

TC>>IMHO, самые удобные AVR. PIC — хорошая машинка, только программировать не удобно, мне лично с AVR больше нравилось работать. Также, можно посветовать классику — 8051.

А>Я бы посоветовал TUSB3210 от техаских ковбоев. Плюсы:

А>1. Классическое ядро 8052

AVR это фигня, сидел я на нем около года, TUSB3210 не знаю, но раз на ядре 8052 — тоже фигня: очередной ископаемый-монстр-зверо-ящер а-ля 51...

Для начала рекомендую PIC (проще 84-й) — очень простой контроллер: всего порядка 14 команд, порты FLASH/RAM, таймеры, все дела — для начала идеальный вариант: недорого, просто, доступно

Потом рекомендую семейство MSP430 от тексас инструментс — контроллер ЗВЕРЬ! Особенно модель MSP430F149 (или 168/169/другие) (правда в домашних условиях паять их тяжело, но в стартеркит входит тестовая плата с панелькой) — стартеркит у нас стоит $100
Правда MSP430 для изучения за один день сложноват, слишком много туда всякой всячены понапихали, кучи настроек понаделали, поначалу непревычно, а потом на другие даже смотреть нехочется, потомучто AVR'ы всякие со своими ATmaga'ми слишком ущербными представляются...

хотя в качестве миниатюрного контроллера ATtiny неплох (в soic исполнении), но архитектура у AVR дрянь, хотя древним программерам привыкшим к 8-битным процессорам нравится...
Тот кто говорит не знает, тот кто знает не говорит.
Re[2]: Микроконтроллеры
От: Streamer1 Украина  
Дата: 17.05.06 20:57
Оценка:
Здравствуйте, UgN, Вы писали:

UgN>Как правило, инструменты для этого бесплатны и лежат на сайте производителя контроллера.


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

UgN>Можно поискать и компиляторы ЯВУ (Я пользовал IAR С)


java на слабых контроллерах нету, есть ASM, C и EC++ (в IAR например)

UgN>Как с памятью работать, как с прерываниями и т.д. Это в DataSheets написано.


да, без даташита с контроллерами никуда, заводи даташит — постоянно в него заглядывать прийдется

UgN>бинарник нужно залить в микроконтроллер. Нужен программатор. Хотя, если использовать чипы с возможностью in-system programmable (как например Atmel AVR -- рекомендую), то можно обойтись и без


AVR очень уродский контроллер — для программеров-пенсионеров, привыкших к 8-битам...

для начала PIC, потом рекомендую MSP430 — стратеркит стоит $100 в него входит плата с панелькой, на
плате выведены все выводы от контроллера и разьем для FET (Flash Emulation Tool) и небольшой девайсик подключаемый к LPT порту (слухи ходили вроде уже и USB появились) — с помощью этого девайса ты сможешь прошивать контроллер прямо из среды и отлаживать прямо в среде — по исходникам, код исполняемый прямо в реальной схеме! (in system programmable/in-system emulation), павда для прошивки бита защиты прийдется повозиться.

UgN>программатора -- паяешь кабель на LPT и прошиваешь с PC. Программку для прошивания напишешь сам -- не сложно, как именно прошиваются in-system написано у них в доках. (Например, через ноги MISO-MOSI).


для PIC'а схемка на паре диодах и конденсаторе в COM-порт, для AVR удобен LPT-порт, а для MSP430 лучше купить стартеркит — в него входит 2 контроллера (1 про запас), плата с панелькой, разьемом для FET и разьемчиками от каждого вывода контроллера и собственно FET (такая белая коробочка). Прежде чем покупать стартер кит выбери процессор — смотри чтоб удобно было паять и ресурсов было достаточно, стартеркиты есть под разные процессоры — отличаются платой с панелькой, FET везде одинаковый.
Тот кто говорит не знает, тот кто знает не говорит.
Re: Микроконтроллеры
От: Pavel_Agurov Россия  
Дата: 19.05.06 16:27
Оценка:
>Хочу разобраться с программированием микроконтроллеров и
>подключением оных к PC например через USB,

Возьмите книги:
Интерфейс USB: Практика использования и программирования
Практика программирования USB

Все что надо, там есть на диске.
Re[3]: Микроконтроллеры
От: crazz  
Дата: 24.10.06 05:48
Оценка:
Здравствуйте, Streamer1, Вы писали:


UgN>>Как правило, инструменты для этого бесплатны и лежат на сайте производителя контроллера.


S>я бы сказал что как правило платные, а те что бесплатные — фуфло...


ммм, можно поподробней, какие пробовали и в чем заключается фуфлизм.


S>AVR очень уродский контроллер — для программеров-пенсионеров, привыкших к 8-битам...


а какже AVR32 ?
Re[3]: Микроконтроллеры
От: ДимДимыч Украина http://klug.org.ua
Дата: 24.10.06 07:13
Оценка:
Здравствуйте, Streamer1, Вы писали:

UgN>>Можно поискать и компиляторы ЯВУ (Я пользовал IAR С)


S>java на слабых контроллерах нету, есть ASM, C и EC++ (в IAR например)


Я думаю, под ЯВУ автор имел ввиду Язык Высокого Уровня.
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Re[5]: Микроконтроллеры
От: Сергей Россия  
Дата: 25.10.06 13:54
Оценка:
Здравствуйте, Аноним, Вы писали:

А>А какой контроллер выбрать для обучения? -типа: для мигания лампочками, пару входов и выходов? Может PIC?


Наиболее распространенные — PIC и AVR, по ним можно найти прорву примеров, наработок, готовых исходников. Я бы рекомендовал AVR, у него архитектура поизящнее и проще для понимания. Еще будут советовать различные клоны 8051, но я бы не советовал с ними связываться. Для изучения действительно легки, но архитектура безнадежно устарела и неэффективна, и если в дальнейшем планируется профессиональная работа в этой области, лучше сразу изучать более современные архитектуры.

А>Надобы учебник по асме!

Писать лучше на С (а для AVR можно и на С++). Но архитектуру целевого процессора знать хорошо, а она лучше всего описана в даташитах.
Re[6]: Микроконтроллеры
От: programmater  
Дата: 27.10.06 16:17
Оценка:
Здравствуйте, Сергей, Вы писали:

С>Здравствуйте, Аноним, Вы писали:


А>>А какой контроллер выбрать для обучения? -типа: для мигания лампочками, пару входов и выходов? Может PIC?


С> Наиболее распространенные — PIC и AVR, по ним можно найти прорву примеров, наработок, готовых исходников. Я бы рекомендовал AVR, у него архитектура поизящнее и проще для понимания. Еще будут советовать различные клоны 8051, но я бы не советовал с ними связываться. Для изучения действительно легки, но архитектура безнадежно устарела и неэффективна, и если в дальнейшем планируется профессиональная работа в этой области, лучше сразу изучать более современные архитектуры.


А>>Надобы учебник по асме!

С> Писать лучше на С (а для AVR можно и на С++). Но архитектуру целевого процессора знать хорошо, а она лучше всего описана в даташитах.

С на PIC, на котором нету программного доступа к стеку? Это интересно. Как же там аргументы передаются и организются рекурсивные функции?
Re[7]: Микроконтроллеры
От: Сергей Россия  
Дата: 28.10.06 18:30
Оценка:
Здравствуйте, programmater, Вы писали:

P>С на PIC, на котором нету программного доступа к стеку? Это интересно. Как же там аргументы передаются и организются рекурсивные функции?


Если говорить о PIC16, то у него не просто доступа к стеку нет, а вообще нет стека данных, а стек возвратов ограничен всего 8 уровнями. Тем не менее, компиляторы С с этим вполне справляются. Используется так называемый компилированнный стек, то есть в процессе компиляции строится дерево вызовов, а затем компилятор раскладывает локальные переменные по статической памяти, с учетом порядка вызовов, чтобы они не они не перекрывались. Компилированный стек данных, кстати, более эффективен, чем обычный с точки зрения размера памяти. Ограничение — отсутствие реентерабельности, но это общая беда PIC16, хоть на АSМ пиши, хоть на С.
Лучшим компилятором для PIC16 считается Hi-Tech, пытаться писать на асме лучше чем он компилит — утопия. В смысле, выгадать процентов 30-40 по объему кода можно, но не стоит оно того в 21 веке, когда память дешевая, а зарплата программиста не очень.
А у PIC18 уже полноценный стек есть, на нем и С++ может быть, в частности у IAR есть. Но он, говорят, не очень, по качеству кодогенерации Hi-Tech проигрывает.
Re[2]: Микроконтроллеры
От: Igor S Mandrigin Россия
Дата: 28.10.06 23:32
Оценка:
Здравствуйте, Pavel_Agurov, Вы писали:

>>Хочу разобраться с программированием микроконтроллеров и

>>подключением оных к PC например через USB,

P_A>Возьмите книги:

P_A>Интерфейс USB: Практика использования и программирования
P_A>Практика программирования USB

P_A>Все что надо, там есть на диске.


Хе, могу заметить, что одна из глав (вроде бы классификация, точно не помню)скатана с книги М.Гука почти один к одному, а многие главы — перевод документации с USB.org
К тому же примеры на делфяк — зло! =))
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Микроконтроллеры
От: Igor S Mandrigin Россия
Дата: 28.10.06 23:32
Оценка:
Здравствуйте, Sub0, Вы писали:

S>Привет всем.


S>Хочу разобраться с программированием микроконтроллеров и подключением оных к PC например через USB, подскажите с чего начать, ходил на сайт MicroChip кое-что почитал, но datasheets не очень помогают. Мне интересно всё — напрмиер написал я программу, как мне её заставить работать на микроконтроллере, как контроллер подключить к PC. Поделитесь ссылочками и личным опытом.


Сам я сейчас программирую PIC18... Для работы с USB не самый удобный микроконтроллер, но для начала может подойти =))
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[8]: Микроконтроллеры
От: programmater  
Дата: 30.10.06 13:05
Оценка:
Здравствуйте, Сергей, Вы писали:

С>Здравствуйте, programmater, Вы писали:


P>>С на PIC, на котором нету программного доступа к стеку? Это интересно. Как же там аргументы передаются и организются рекурсивные функции?


С>Если говорить о PIC16, то у него не просто доступа к стеку нет, а вообще нет стека данных, а стек возвратов ограничен всего 8 уровнями.

Ну я именно это и имел в виду, просто видимо неудачно выразился.
С>Тем не менее, компиляторы С с этим вполне справляются. Используется так называемый компилированнный стек, то есть в процессе компиляции строится дерево вызовов, а затем компилятор раскладывает локальные переменные по статической памяти, с учетом порядка вызовов, чтобы они не они не перекрывались. Компилированный стек данных, кстати, более эффективен, чем обычный с точки зрения размера памяти. Ограничение — отсутствие реентерабельности, но это общая беда PIC16, хоть на АSМ пиши, хоть на С.
Спасибо, этого не знал. Хотя на 32 ячейках ОЗУ (да еще и разбитых на 2 страницы — тоже считаю общей бедой пиков) не больно-то размахнешься на выращивания деревьев . Кстати, как компиляторы с двумя страницами справляются?
С> Лучшим компилятором для PIC16 считается Hi-Tech, пытаться писать на асме лучше чем он компилит — утопия. В смысле, выгадать процентов 30-40 по объему кода можно, но не стоит оно того в 21 веке, когда память дешевая, а зарплата программиста не очень.
Вот с этим я бы поспорил. Насколько мне известно, понятие "память дешевая" к пикам (во всяком случае 16) неприменимо. Почему? Да потому что у них нет внешней шины адреса и шины данных! Или есть? Да не, ножек там мало. Так вот поэтому насколько мне известно, к пику внешнюю память не подключить, а посему втискиваться в ту, которая есть (а насколько я знаю, у самого большого 16 пика объем памяти под код 32килослова). Так что тут речь уже идет о том, влезем мы или не влезем в отведенное количество памяти, и никакой "дешевой памятью" эту ситуацию не исправить. Если не влезем — придется ставить более дорогой контроллер. Это вообще отличительная черта пиков — отсутствие внешней шины. ПИК — это "все в одном". С одной стороны это гуд (не нужна лишняя внешняя обвеска и минимум ног, а значит и габаритов), а с другой стороны не совсем — потому, что я описал выше. Так что я если уж надо писать для пика (кстати, не люблю я это занятие — уж больно спецефический ассемблер у него, а слежение за переключениями страниц вообще убивает), то пишу исключительно на асме и компиляторам не доверяю.

С> А у PIC18 уже полноценный стек есть, на нем и С++ может быть, в частности у IAR есть. Но он, говорят, не очень, по качеству кодогенерации Hi-Tech проигрывает.

Ну 18 — это уже "совершеннолетний" . Это уже совсем другая песня.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.