Обновить
169.03

Программирование микроконтроллеров *

Учимся программировать микроконтроллеры

Сначала показывать
Порог рейтинга
Уровень сложности

Дайте мне железа! Часть 2

Время на прочтение5 мин
Охват и читатели14K
Дайте мне железа!

Часть 1

Итак, мы закупились всем необходимым. Настало время развернуть эксперементальную лабораторию!
Читать дальше →

Дайте мне железа! Часть 1

Время на прочтение4 мин
Охват и читатели19K
Дайте мне железа!

Часть 2

На хабре есть много статей, посвященных созданию прикольных самопальных девайсов на базе микроконтроллеров, взять хотябы замечательную серию про необычный подарок (1, 2, 3) и дополнение про сенсорную клавиатуру. Они вызывают энтузиазм, побуждают к экспериментам, но вот возникает примерно такая фраза: «А теперь, значит, рисуем схему, разводим плату, травим, запаиваем, пишем прошивку, заливаем, и дело в шляпе». Вот тут-то у меня, как кодера, ни разу не державшего в руках паяльника, эти самые руки и опускались, ибо все пункты кроме написания прошивки были недоступны.

Но все меняется, когда желание пересиливает лень! В этой статье я расскажу, с чего начать, чтобы приобщиться к экспериментам с микроконтроллерами.

Под катом чуть менее мегабайта картинок
Мне интересно, давай рассказывай!

Мало выводов? Используем RESET

Время на прочтение4 мин
Охват и читатели32K
Многие разработчики устройств на микроконтроллерах хотя бы однажды сталкивались с ситуацией, когда выбранный МК подходит по всем параметрам (быстродействие, объем памяти, наличие нужных функций), за исключением количества портов ввода-вывода. Особенно обидно, когда не хватает всего одной «ножки» и из-за этого приходится выбирать следующую модель чипа. Она будет занимать больше места на плате, потреблять больше энергии, наконец будет просто дороже стоить.

Чтобы сэкономить порт, разработчики прибегают к невероятным ухищрениям. Например, на одном форуме мне встретился способ управления сдвиговым регистром по одному порту (данные и тактовый импульс) через RC-цепочку. Некоторые такие способы приводят к снижению надежности работы устройства и ухудшению его повторяемости (зависят от параметров конкретного экземпляра микросхемы), поэтому прибегать к ним следует с осторожностью, проанализировав все «за» и «против».

Однако есть способ найти «лишний» порт, который прост, работает стабильно и может быть применен во многих случаях. Это — использование вывода RESET.

Два варианта такого использования, применительно к семейству 8-битных МК AVR фирмы Atmel.

Создаем хардварный логгер клавиатуры

Время на прочтение13 мин
Охват и читатели53K
У тебя наверняка не раз возникала ситуация, когда программные логгеры клавы не могли решить поставленных задач. Например, отловить пароль от биоса с помощью программного кейлоггера, загружаемого системой, невозможно. Лично я столкнулся с подобной проблемой, когда мне нужно было узнать админский пароль в локальной сети одной фирмы. Тогда я и подумал, что было бы очень круто сделать «железный» логгер, который бы подключался между клавиатурой и компьютером и ловил все нажатые клавиши, начиная с включения компьютера. В предлагаемой статье изложены принципы работы PS/2 интерфейса, и перехват данных, передаваемых по нему.

image
Парочка аппаратных логгеров клавиатуры

Принципы


Для того чтобы сконструировать подобное устройство, сначала нужно разобраться с тем, как же работает клавиатура. Есть два основных типа клавиатур: АТ (старый стандарт) и PS/2. Отличаются они только разъемами: АТ имеет DIN, а PS/2 — miniDIN. Первый — большой круглый разъемчик с пятью штырьками, второй — маленький, как у мышки, с шестью пинами. По протоколу обмена они полностью совместимы. Наверняка, ты видел переходники с широких старых разъемов на новые маленькие. Этот стандарт появился еще в 1984 году вместе с первым персональным компьютером IBM PC и используется по сей день, практически не претерпев никаких изменений.
Читать дальше →

Осваиваем простейший микроконтроллер PIC. Часть 2

Время на прочтение12 мин
Охват и читатели150K
В первой части мы разобрали как можно прошить выбранный МК, как его правильно сконфигурировать, а так же научились работать с цифровыми портами.
Теперь пришло время рассмотреть остальную периферию микроконтроллера.
Читать дальше →

Осваиваем простейший микроконтроллер PIC. Часть 1

Время на прочтение7 мин
Охват и читатели413K
Выбор микроконтроллера обычно осуществляется под необходимые задачи. Для изучения хорошо подойдет популярный МК с минимальным набором периферии: PIC16F628A.
Читать дальше →

Программирование PIC16F876A. Собираем схему с плавно мигающим светодиодом

Время на прочтение5 мин
Охват и читатели51K
Эта статья направлена на новичков в программировании микроконтроллеров семейства PIC16 от Microchip. В нашем случае, я выбрал немного превосходящий микроконтроллер для таких задач, а именно — PIC16F876A. Программирование микроконтроллера будем производить в MPLAB IDE.

Цель работы: собрать схему, которая будет мигать светодиодом, внимание, с применением ШИМ.

И так, цель задачи обозначили. Теперь перейдем к реализации наших планов.
Читать дальше →

Создаем простейшее usb-устройство для общения со своей программой

Время на прочтение7 мин
Охват и читатели120K
В продолжение темы о создании собственного USB-гаджета.
Создание простого устройства.

Раз устройство планируется подключать к ПК, значит вероятнее всего потребуется передача данных между устройством и ПК.
Начнем писать прошивку и софт, наладив связь между ними.
Читать дальше →

Введение в разработку USB периферии

Время на прочтение4 мин
Охват и читатели51K
Последние полгода я участвую в разработке первого в своей жизни USB-устройства и прикладного ПО к нему, и сейчас хочу поделиться своим пониманием того, как там всё работает: микроконтроллер, драйвер, прикладное ПО. Также затрону вопрос о выборе идентификаторов VID/PID. Список полезных ссылок для желающих более подробно разобраться в теме прилагается.
Читать дальше →

Программирование микроконтроллеров PIC16/PIC18 на языке C. Статья третья. Немного о железе

Время на прочтение2 мин
Охват и читатели29K
Все то оно хорошо, когда мигает в симуляторе светодиод, но неплохо бы посмотреть на это действо вживую.
Расскажу коротко об аппаратной части сего процесса.
Читать дальше →

Программирование микроконтроллеров PIC16/PIC18 на языке C. Статья вторая. Базовые сведения о платформе. Первая программа

Время на прочтение4 мин
Охват и читатели135K
Если в первой статье все получилось хорошо — мы получили базовую программную обстановку для продолжения обучения.

Едем дальше.

Как я говорил ранее, пока что объяснять буду на базе МК PIC16F628A.
Обязательно качаем документацию на него. Рекомендую для поиска — alldatasheet.com
DataSheet — главный документ при разработке на базе МК.
Рекомендую распечатывать основные таблицы и разделы для удобства пользования.

Открываем ДШ.

Наиболее важные сведения о кристалле:
— максимальная рабочая частота — 20МГц;
— 2048х14 бит флеш-ПЗУ;
— 224 байта статической ОЗУ;
— 128 байт энергонезависимой ПЗУ;
— 16 доступных выводов;
— модуль приемо-передатчика;
— 3 таймера.

Данный кристалл — представитель так называемого среднего (Mid-range) семейства МК PIC.

Вкратце расскажу о том, что обязательно нужно понимать.

Читать дальше →

Программирование микроконтроллеров PIC16/PIC18 на языке C. Статья вводная

Время на прочтение3 мин
Охват и читатели85K
Доброго тебе времени суток, хороший человек.

Это вводная статья из небольшого цикла о программировании МК PIC16/18 на языке C.

Необходимый минимум:
ПО:
— MPLAB;
— собственно компилятор C;
— Proteus ISIS;
Железо:
— отладочная плата;
— программатор.

MPLAB — среда разработки от Microchip. Скачать можно на офсайте. Полностью бесплатна.
Содержит компилятор с языка ассемблера, позволяет провести полный цикл разработки в том числе и прошивку(при наличии соответствующего программатора).
Большинство компиляторов языка C имеют механизмы встраивания в эту среду.
Качаем обязательно.

Компилятор C.
Здесь уже немного сложнее с выбором.
Список того, на что я советую обратить внимание:
— CCS PICC;
— Micro-C;
— IAR C;
— HT-PICC;
— Microchip C18;

Читать дальше →

Программирование для AVR в Ubuntu

Время на прочтение1 мин
Охват и читатели23K
Для интересующихся программированием микроконтроллеров подсказываю про существование замечательного плагина для Eclipse, упрощающего разработку софта: AVR Eclipse plug-in. Он позволяет выбрать из списка процессор, создать hex и с помощью avrdude загрузить прошивку, плюс различные бантики с просмотром и редактированием отдельных битов в регистрах и фьюзах.

Про IDE Eclipse я здесь рассказывать не буду — большинство присутствующих его знают и используют, а для тех, кто с ним пока не знаком, найдется немало мануалов по установке.
Вначале установим все необходимое для разработки под AVR:

apt-get install avr-gcc avr-binutils avr-libc avrdude

Теперь запускаем Эклипс, заходим в Help->Software updates->Add site… и вписываем туда адрес сайта плагина avr-eclipse.sourceforge.net/updatesite
Жмем Ok, перезапускаем Эклипс и видим в мастере проектов новый пункт «AVR Cross Target Application». Выбираете процессор, тактовую частоту — и вперед!

Успешной работы и правильных фьюзов ;)

Ближайшие события

Почти ОС реального времени — 2

Время на прочтение2 мин
Охват и читатели9.4K
Теперь, когда инструмент готов, его уже можно и нужно использовать.

Предварительно пара слов про Главный Таймер.
Читать дальше →

Почти ОС реального времени: event-driven

Время на прочтение7 мин
Охват и читатели13K
Пару слов введения:
Делаю систему контроля на базе AtMega32. Цель — отслеживать значение датчиков температуры и давления, управление нагрузкой и сброс отладочных логов в компьютер.

Плюс экранчик 2х16 символов и клавиатура на 7 клавиш. Аппаратную часть использовал готовую — набор NM8036 от МастерКита. А вот с программной частью засада: стандартный алгоритм, уже прошитый в наборе, примитивен и универсален, исходных кодов прошивки нет, обновления выходят в зашифрованном виде. Пришлось писать самому.

Первоначально рисовал «быстро и грязно» — только чтобы работало. Затем система эволюционировала — усложнялись алгоритмы работы, разрастался интерфейс, увеличилось количество параметров, появилась необходимость обучить другого человека работе с системой. Вносить изменение не порушив старый код становилось все сложнее и сложнее. Плюс некоторые архитектурные недоработки, заложенные с самого начала, очень осложняли жизнь.

На форумах, посвященных программированию микроконтроллеров, наткнулся на упоминание об rtos — операционных системах реального времени. Почитал, скачал пару бесплатных, попробовал и принял решение: написать свое.

Читать дальше →

Внутрисхемный программатор отладчик ICD2 + Ubuntu

Время на прочтение3 мин
Охват и читатели4.7K
Разработка в Linux — это просто!

Этот топик будет посвящен подключению программатора отладчика фирмы Olimex — ICD2 на Linux.

Так как в интернете я почти не нашел информации по этому поводу, позволю рассказать себе как я это сделал.
Не хитро догадаться, что нужно знать на какой дистрибутив будем ставить. Мой выбор пал на Ubuntu 8.10. Ядро на данный момент было установлено версии 2.6.27-11-generic ( анстейбл вобщем ).
Однако, это очень дружественный и простой в использовании дистрибутив, но граблей при подключении избежать не удалось.

Читать дальше →

Модернизация телефона старого образца(телефон рулетка).

Время на прочтение4 мин
Охват и читатели16K

Суть(цель?) проекта


— На тот момент это был проект для областных соревнований по радиоэлектронике и радиоконструированию.

Далее по списку:
— Выбрать идею — модернизация телефона.
— Создать устройство на базе микроконтроллера семейства PIC16.
— Более лучшее изучение языка ASM а так же Си.
— Создать юзабельный аппарат через который можно будет звонить.
— что нибуть еще =)
Читать дальше →

Простая реализация схемы шагового двигателя на мк

Время на прочтение3 мин
Охват и читатели43K
И так, данный пост нацелен на новичков в электронике а так же на новичков в программировании и освоении мк и разработке радиоэлектронных устройств.
Данная разработка представляет простейшее включение МК такого как PIC16F84A для управления шаговым двигателем.
Читать дальше →
12 ...
137