Программирование

Печать

Программатор AVR – аналог AVRISP

Опубликовано . Опубликовано в Программирование AVR

Рейтинг:   / 3

Благодаря оптимальному соотношению цена/качество микроконтроллеры семейства AVR фирмы Atmel пользуются заслуженной популярностью как среди радиолюбителей, так и профессионалов. Возможность их программирования по последовательному интерфейсу SPI позволяет использовать для этих целей очень простые программаторы, например PonyProg. Такой программатор подключается к LPT или COM порту компьютера и по сути содержит только буферные элементы для согласования уровней выводов порта с контроллером. Все необходимые алгоритмы реализуются управляющей программой, запускаемой на компьютере. Казалось бы, это самый простой и в то же время наилучший вариант. Зачем усложнять задачу? К сожалению, все не так просто.

Основное назначение LPT порта – это работа с принтером, а COM порта – обеспечение связи с внешними устройствами, например модемом по интерфейсу RS-232. Программное управление уровнями на отдельных линиях этих портов хотя и возможно, но это уже нестандартная задача, а значит за то, что она будет выполняться корректно, изготовители материнских плат ответственности не несут. Да и не далек тот день, когда эти порты вовсе исчезнут из компьютера, а работать через конвертер USB-COM простейшие программаторы не могут. Более того, стандартная аппаратно-программная конфигурация персонального компьютера даже при наличии быстродействующих процессора и ОЗУ не позволяет точно сформировать интервалы времени, меньше нескольких сотен миллисекунд. Для программирования же современных контроллеров необходимы импульсы длительностью порядка единиц микросекунд и менее. Поэтому невозможно гарантировать корректную работу простых программаторов на всех без исключения компьютерах.

Печать

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

Опубликовано . Опубликовано в Программирование на Си

Рейтинг:   / 15

Подробную теоретическую информацию о шаговых двигателях можно найти на просторах интернета, а здесь займемся практическим решением. Униполярный двигатель имеет одну обмотку в каждой фазе, от середины обмотки сделан отвод. Это позволяет изменять направление магнитного поля, создаваемого обмоткой, простым переключением половинок обмотки. При этом существенно упрощается схема драйвера. Драйвер должен иметь только 4 простых ключа. Средние выводы обмоток могут быть объединены внутри двигателя, поэтому такой двигатель может иметь 5 или 6 выводов. Иногда униполярные двигатели имеют раздельные 4 обмотки, по этой причине их ошибочно называют 4-х фазными двигателями. Каждая обмотка имеет отдельные выводы, поэтому всего выводов 8. Из-за простоты подключения и управления униполярного двигателя в этой статье рассмотрим именно этот тип шагового двигателя.

Печать

Миниатюрный программатор USBTiny-MkII SLIM

Опубликовано . Опубликовано в Программирование AVR

Рейтинг:   / 4
Миниатюрный программатор USBTiny-MkII SLIM

USBTiny-MkII SLIM – программатор клон AVRISP-MKII, поддерживающий все микроконтроллеры семейства Attiny, Atmega и Xmega. Программатор имеет три интерфейса программирования: ISP (внутрисистемное программирование), PDI (интерфейс программирования и отладки) и TPI (Tiny Programming Interface. Используется для программирования Low-end микроконтроллеров Atmel серий ATtiny4, ATtiny5, ATtiny9, ATtiny10, ATtiny20, ATtiny40). Подключается непосредственно к интерфейсу USB, что позволяет просто и быстро обновлять прошивку программатора. Программатор поддерживает работу в среде AVR Studio, работает с утилитой AvrDude.

За основу конструкции программатора взят проект LUFA (Lightweight USB Framework for AVRs), представляющий собой завершенный USB стек с открытым исходным кодом для микроконтроллеров Atmel AVR со встроенным USB интерфейсом AT90USBxxxx и ATMEGAxxUx, а также конструкции USBTiny-MKII и USBTiny MKII PL. Сердцем программатора является микроконтроллер AT90USB162, что предоставляет высокую скорость программирования.

Печать

Декодирование сигналов протокола RC5

Опубликовано . Опубликовано в Программирование на Си

Рейтинг:   / 23

Система инфракрасного дистанционного управления RC5 была разработана фирмой Philips для нужд управления бытовой аппаратурой. Когда мы нажимаем кнопку пульта, микросхема передатчика активизируется и генерирует последовательность импульсов, которые имеют заполнение частотой 36 кГц. Светодиоды преобразуют эти сигналы в ИК-излучение. Излученный сигнал принимается фотодиодом, который снова преобразует ИК-излучение в электрические импульсы. Эти импульсы усиливаются и демодулируются микросхемой приемника. Затем они подаются на декодер. Декодирование обычно осуществляется программно с помощью микроконтроллера. Код RC-5 поддерживает 2048 команд. Эти команды составляют 32 группы (системы) по 64 команды в каждой. Каждая система используется для управления определенным устройством, таким как телевизор, видеоплеер и т. д.

Команда согласно протоколу RC5 показана на рис. 1. Кодовая последовательность (красный цвет) состоит из 14 тактовых интервалов длительностью по 1,78 мс (64 периода частоты 36 кГц), в каждом из которых передают один разряд двоичного кода. Лог. 1 соответствует положительный перепад уровня в середине тактового интервала, лог. 0 — отрицательный.

Печать

Восстановление калибровочной константы микроконтроллеров PIC12F629/675

Опубликовано . Опубликовано в Программирование PIC

Рейтинг:   / 15

Микроконтроллеры PIC12F629 и PIC12F675 имеют внутренний генератор 4 МГц, что позволяет работать им без внешнего кварцевого резонатора или RC-цепи. Это освобождает один или два контакта для использования их в качестве ввода/вывода и позволяет устройству иметь в конструкции минимальное количество компонентов.

Внутренний генератор должен быть откалиброван, это достигается путем подбора на заводе значения калибровки и записи его в регистр OSCCAL при инициализации устройства перед запуском рабочей программы. Значение калибровки находится в последнем адресе памяти программ - 0x3FF.

Проблемы возникают если случайно значение по адресу 0x3FF стирается при программировании микроконтроллера. После калибровки значение является уникальным для каждого отдельного микроконтроллера, нет никакого способа узнать какое оно было, но можно восстановить его путем сравнивая с известной частотой.

Для этого создана эта программа и схема. Загрузите в микроконтроллер код, который находится в архиве и поместите его в устройство описанное ниже, и в течение нескольких секунд Вы получите новое значение калибровки для работы внутреннего генератора частотой 4 МГц и точностью 1%.

Печать

Изучаем DS1820/DS18B20. Делаем простой термометр

Опубликовано . Опубликовано в Программирование на Си

Рейтинг:   / 32

В этой статье займемся изучением практического применения цифровых датчиков температуры DS18B20. Сделаем простой термометр на семисегментных индикаторах, который будет показывать положительную и отрицательную температуру с разрешением 0,1 градус Цельсия. Для этой цели используем микроконтроллер Atmega8, который работает от внутреннего генератора частотой 8 МГц, семисегментный индикатор с общим анодом(четырехразрядный) и датчик температуры DS18B20. Схема устройства показана на рисунке 1. Шину данных датчика подключаем к порту PC0, а также подключаем к плюсу питания через резистор R1 номиналом 4,7 кОм, поскольку выходной транзистор датчика имеет открытый сток. При питании датчика от шины данных(паразитное питание) вывод 3 датчика остается свободным.

Как уже известно последовательность действий при работе с одним датчиком будет такая:

1) послать сигнал обнуления линии (480...960 мкc);
2) принять импульс присутствия или заполнить время паузой (60...240 мкc);
3) послать команду пропуска идентификации 0xCC;
4) послать команду начала преобразования 0x44;
5) пауза не менее 500 мкc для завершения процесса преобразования;
6) обнулить линию;
7) послать команду пропуска идентификации 0xCC;
8) послать команду считывания блокнота 0xBE;
9) принять 9 байт;
10) выделить и проанализировать бит десятых долей градуса с установленной точностью, в нашем примере это 0,0625;
11) проанализировать бит знака;
12) если знак отрицательный, то перевести значение температуры в дополнительный код;
13) делаем преобразование целой и дробной части значения температуры и выводим на дисплей.

Печать

Изучаем DS1820/DS18B20

Опубликовано . Опубликовано в Программирование на Си

Рейтинг:   / 22

Датчики температуры с однопроводным интерфейсом 1-WIRE были разработаны фирмой DALLAS SEMICONDUKTOR для использования совместно с микроконтроллерами. Впоследствие эти датчики стали выпускаться фирмой MAXIM. Каждый датчик температуры имеет 56-разрядный индивидуальный идентификационный код, поэтому по одному проводу может быть опрошено практически неограниченное число датчиков. Перед установкой таких датчиков в одну линию необходимо считать 64 разрядный код ROM (в него входит 56-битный номер датчика и 8 бит регистра контроля четности) для каждого датчика и учитывать его при программировании микроконтроллера. Передача 64 разрядов занимает много времени, поэтому в устройствах, использующих небольшое число датчиков, можно обойтись выделением отдельного выхода микроконтроллера для каждого датчика.

Термодатчики DS1820 (DS18S20, DS1821, DS18B20)имеют следующие технические характеристики:
- индивидуальный 64-битный идентификационный номер;
- напряжение питания от +3 до +5,5 В;
- измеряемая температура от -55 до + 125°С;
- погрешность измерения температуры в диапазоне -10...+85°С не более 0,5°С;
- в остальном диапазоне температур погрешность измерения не превышает 2°С;
- информация о температуре выдается 9-битным кодом;
- установка пороговых значений температуры по максимуму и минимуму,
- максимальное время преобразования температуры в код 750 мс;
- возможность питания от высокого уровня шины данных;
- термодатчики не требуют индивидуальной настройки при замене.

Печать

PICKIT2 облегченная версия

Опубликовано . Опубликовано в Программирование PIC

Рейтинг:   / 10
PICKIT2 облегченная версия

Широкому распространению микроконтроллеров фирмы Microchip способствует свободное распространение документации не только на сами микросхемы, но и на отладочные средства для них. Например, в руководстве пользователя программатора-отладчика PICkit 2 дается полная принципиальная схема этого программатора с интерфейсом USB. Такой программатор, однако, слишком сложен для повторения "один к одному". Автор разработал его упрощенную версию. От оригинального PICkit 2 он унаследовал следующие функции: программирование микроконтроллеров с напряжением питания 5 В, преобразователь интерфейса USB-UART, часть функций логического анализатора, автоматическое восстановление калибровочной константы встроенного RC-генератора микроконтроллеров, где такая константа используется, обновление операционной системы программатора с помощью стартового загрузчика. После несложной доработки появляется возможность программировать микроконтроллеры и с напряжением питания менее 5 В.

Схема программатора показана на рис. 1. Установленный в нем микроконтроллер PIC18F2550 (DD1) имеет встроенный контроллер USB, информационные линии которого D- и D подключены к соответствующим контактам розетки XS1, предназначенной для соединения программатора с компьютером. Согласно спецификации USB, разъем ведомого устройства (программатора) типа В, а ведущего (компьютера) типа А. Это гарантирует их правильное соединение стандартным USB-кабелем.

Печать

Изучаем энкодер. Делаем простой RGB контроллер.

Опубликовано . Опубликовано в Программирование на Си

Рейтинг:   / 8

Можно ли одной «ручкой» регулировать контрастность ЖКИ, изменять уровни срабатывания исполнительных устройств, выбирать язык меню, включать или выключать опции настроек? Оказывается, можно. И элемент, при помощи которого возможно осуществить все эти регулировки, носит название энкодер. Далее, собственно, мы и будем знакомиться с этим элементом.

По выполняемым функциям и внешнему виду энкодеры напоминают аналоговые потенциометры, но на этом их сходство заканчивается. Области применения энкодеров шире и разнообразнее. Как правило, с появлением цифровых систем ранее применявшиеся внешние элементы управления, такие как переключатели, аналоговые потенциометры с ручками на панелях управления, плохо стыкуются с их основным элементом — микроконтроллером.

Печать

Использование библиотеки для работы с семисегментным индикатором. Делаем простые часы.

Опубликовано . Опубликовано в Программирование на Си

Рейтинг:   / 19

Использование этой библиотеки значительно упрощает работу с семисегментным индикатором. Библиотека написана под четырехразрядный семисегментный индикатор с общим анодом или катодом. Она позволяет выводить на дисплей не только цифры, но и буквы, текущее время, бегущую строку, менять яркость свечения индикатора. Далее рассмотрим функции этой библиотеки(скачать файлы display.c и display.h можно внизу статьи).


display_init(void); - инициализация дисплея

set_brightness(uint8_t b); - установка яркости от 0 до 100

shift_in(char c); - сдвиг символа на одну позицию справа-налево

set_char_at(char c, uint8_t offset); - вывод символа в определенное знакоместо

Например: set_char_at('A', 0); // вывод символа А в первое знакоместо
set_char_at(2, 2); // вывод цифры 2 в третье знакоместо

set_segments_at(uint8_t segments, uint8_t offset); - вывод сегмента в определенное знакоместо

Например: set_segments_at(2, 1); // вывод сегмента "b" во второе знакоместо

shift_in_segments(uint8_t segments); - сдвиг сегмента на одну позицию справа-налево

set_number(uint16_t num); - вывод цифр в формате "XXXX"

clear_screen(void); - очистить дисплей

set_time(uint8_t hour, uint8_t min, uint8_t sec); - вывод времени в формате "XX.XX.XX"

Рекомендуем посмотреть

No result...