Микроконтроллеры: начало, теория — различия между версиями
Digit (обсуждение | вклад) м |
Vooon (обсуждение | вклад) |
||
(не показаны 4 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
− | + | [[Категория:Микроконтроллеры]] | |
− | + | '''Микроконтроллер''' (МК) - основная деталь любого небольшого [[робот]]а, именно благодаря ему можно гибко запрограммировать поведение машины, настраивать робота на выполнение разных задач, не меняя его электронной начинки. Грубо говоря - это маленький [[компьютер]]. | |
− | Внутри | + | Внутри МК обычно находится: |
− | *Ядро процессора | + | *[[Ядро]] процессора |
− | *Энергонезависимая память программы (Flash) | + | *[[Энергонезависимая память]] программы (Flash) |
− | *Оперативная память | + | *[[Оперативная память]] |
*Энергонезависимая память данных (EEPROM) | *Энергонезависимая память данных (EEPROM) | ||
− | *Таймер | + | *[[Таймер]] |
− | *Набор портов ввода-вывода | + | *Набор [[Порты Ввода-Вывода|портов ввода-вывода]] |
Так-же там можно обнаружить: | Так-же там можно обнаружить: | ||
− | *Аппаратные интерфейсы (RS-232, I2C, SPI и другие) | + | *Аппаратные интерфейсы ([[RS-232]], [[I2C]], [[SPI]] и другие) |
− | *АЦП | + | *[[АЦП]] |
− | *Внешние линии прерываний | + | *Внешние линии [[прерывания|прерываний]] |
− | *Аналоговый компаратор | + | *[[Аналоговый компаратор]] |
И еще много всякой полезной переферии | И еще много всякой полезной переферии | ||
− | Меня часто спрашивают что выбрать, PIC или AVR? - это, как говорится, вопрос религии. Я остановился на AVR и дальше буду писать в основном о них. Но PIC не хуже и не лучше, они просто другие. | + | Меня часто спрашивают что выбрать, [[PIC]] или [[AVR]]? - это, как говорится, вопрос религии. Я остановился на AVR и дальше буду писать в основном о них. Но PIC не хуже и не лучше, они просто другие. |
Применительно к роботам часто задают следующие вопросы, постараюсь на них ответить: | Применительно к роботам часто задают следующие вопросы, постараюсь на них ответить: | ||
− | + | # Нужно ли собирать или покупать "кроваточный" параллельный программатор? - Нет, эта штука постепенно отходит в прошлое, сейчас почти все МК поддерживают внутрисхемное программирование. Тоесть шлейф-программатор подключается непосредственно к плате, на которой контроллеру предстоит работать и прошивается он не отключаясь от устройства. | |
− | + | # На что способен AVR? - Скажу сразу - никакой обработки видео он не потянет, а вот управлять роботом опираясь на сигналы датчиков сможет довольно неплохо. При грамотном подходе можно даже составлять карту местности и ориентироваться по ней. | |
− | + | # Можно ли подключать двигатели прямо к выводам МК? - Нет. Ни двигатели, ни какие бы то ни было силовые нагрузки подключать нельзя. МК - это цифровая микросхема и не может выдавать большие токи в нагрузку. Для подключения моторов следует использовать [[:Категория:Драйверы двигателей|драйверы двигателей]] (например [[Драйвер двигателя L293B|L293B]]), интерфейсные микросхемы (например [[ULN2003]]), транзисторы. | |
− | + | # Сколько раз можно перепрограммировать МК? - Считайте что бесконечно. А так - около 10 тысяч циклов гарантировано. | |
− | + | # Чего следует опасаться, чем можно испортить МК? - '''Самая частая ошибка''' - переполюсовка питания. Здесь надо быть максимально внимательным, перепутывание питания даже на доли секунды безвозвратно повреждает МК. Он может не сгореть окончательно, а начать по-всякому глючить, что тоже малоприятно. '''Вторая ошибка''' - неправильная установка битов конфигурации. Во время этой операции надо просто как следует подумать перед тем как жать кнопку. Советую так-же сохранить что там было прошито по-дефолту. Об этой ошибке я еще напишу позже. '''Третья ошибка''' хоть и не убивает МК, но геморроя от нее бывает больше чем от первых двух - не оставляейте ресет висеть в воздухе, подтягивайте его к +5В резистором 20 кОм и заземляйте конденсатором - иначе всякие необъяснимые глюки гарантированы. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | Процесс работы с | + | Процесс работы с микроконтроллером выглядит так: |
− | Программа пишется на ПК, компилируется и прошивается в контроллер. | + | [[Программа]] пишется на ПК, [[компилятор|компилируется]] и [[Программирование МК|прошивается]] в [[контроллер]]. |
− | Казалось-бы все просто, но есть одна проблема: на ПК всегда можно запустить отладчик и посмотреть что происходит в программе. Но у системы на МК чаще всего нету ни клавиатуры ни дисплея - в лучшем случае есть пара | + | Казалось-бы все просто, но есть одна проблема: на ПК всегда можно запустить [[отладчик]] и посмотреть что происходит в программе. Но у системы на МК чаще всего нету ни [[клавиатура|клавиатуры]] ни [[дисплей|дисплея]] - в лучшем случае есть пара [[светодиод]]ов, которыми можно поморгать. |
− | + | {{elec-stub}} |
Текущая версия на 02:04, 27 июля 2007
Микроконтроллер (МК) - основная деталь любого небольшого робота, именно благодаря ему можно гибко запрограммировать поведение машины, настраивать робота на выполнение разных задач, не меняя его электронной начинки. Грубо говоря - это маленький компьютер.
Внутри МК обычно находится:
- Ядро процессора
- Энергонезависимая память программы (Flash)
- Оперативная память
- Энергонезависимая память данных (EEPROM)
- Таймер
- Набор портов ввода-вывода
Так-же там можно обнаружить:
- Аппаратные интерфейсы (RS-232, I2C, SPI и другие)
- АЦП
- Внешние линии прерываний
- Аналоговый компаратор
И еще много всякой полезной переферии
Меня часто спрашивают что выбрать, PIC или AVR? - это, как говорится, вопрос религии. Я остановился на AVR и дальше буду писать в основном о них. Но PIC не хуже и не лучше, они просто другие.
Применительно к роботам часто задают следующие вопросы, постараюсь на них ответить:
- Нужно ли собирать или покупать "кроваточный" параллельный программатор? - Нет, эта штука постепенно отходит в прошлое, сейчас почти все МК поддерживают внутрисхемное программирование. Тоесть шлейф-программатор подключается непосредственно к плате, на которой контроллеру предстоит работать и прошивается он не отключаясь от устройства.
- На что способен AVR? - Скажу сразу - никакой обработки видео он не потянет, а вот управлять роботом опираясь на сигналы датчиков сможет довольно неплохо. При грамотном подходе можно даже составлять карту местности и ориентироваться по ней.
- Можно ли подключать двигатели прямо к выводам МК? - Нет. Ни двигатели, ни какие бы то ни было силовые нагрузки подключать нельзя. МК - это цифровая микросхема и не может выдавать большие токи в нагрузку. Для подключения моторов следует использовать драйверы двигателей (например L293B), интерфейсные микросхемы (например ULN2003), транзисторы.
- Сколько раз можно перепрограммировать МК? - Считайте что бесконечно. А так - около 10 тысяч циклов гарантировано.
- Чего следует опасаться, чем можно испортить МК? - Самая частая ошибка - переполюсовка питания. Здесь надо быть максимально внимательным, перепутывание питания даже на доли секунды безвозвратно повреждает МК. Он может не сгореть окончательно, а начать по-всякому глючить, что тоже малоприятно. Вторая ошибка - неправильная установка битов конфигурации. Во время этой операции надо просто как следует подумать перед тем как жать кнопку. Советую так-же сохранить что там было прошито по-дефолту. Об этой ошибке я еще напишу позже. Третья ошибка хоть и не убивает МК, но геморроя от нее бывает больше чем от первых двух - не оставляейте ресет висеть в воздухе, подтягивайте его к +5В резистором 20 кОм и заземляйте конденсатором - иначе всякие необъяснимые глюки гарантированы.
Процесс работы с микроконтроллером выглядит так: Программа пишется на ПК, компилируется и прошивается в контроллер.
Казалось-бы все просто, но есть одна проблема: на ПК всегда можно запустить отладчик и посмотреть что происходит в программе. Но у системы на МК чаще всего нету ни клавиатуры ни дисплея - в лучшем случае есть пара светодиодов, которыми можно поморгать.