PIC10F200- мигаем светодиодиком
При первом старте самое простое и эффектное – помигать светодиодом ;)
Так как раньше я не программировал под ПИКи, а только прошивал их, начну с документации:
PIC10F200/202/204/206 Data Sheet 6-Pin, 8-Bit Flash Microcontrollers скачать.
Давайте ещё раз посмотрим какими возможностями обладает выбранный микроконтроллер:
Тактовый генератор
Микроконтроллер PIC10F200 имеет встроенный RC-генератор, частота генератора 4 МГц. Данный генератор является единственным источником тактовых сигналов.
Существует возможность изменять частоту генератора в небольших пределах, необходимо для калибровки частоты. Изначально генератор калибруется на заводе, калибровочное значение храниться в регистре OSCCAL. При стирании флеш-памяти микроконтроллера данное значение теряется, поэтому его нужно предварительно считать и сохранить. При использовании программатора PicKit 2 (возможно и в других есть, я не знаю) можно не думать о сохранении данной ячейки, так как во первых при программировании микроконтроллера программа автоматически запоминает значение OSCCAL, а во вторых имеется возможность авто калибровки. Для этого в память микроконтроллера записывается специальная программа, назначение которой “вывести” на определенную линию сигнал со встроенного генератора с определенным коэффициентом деления, измерением частоты сигнала определяется отклонение частоты и рассчитывается калибровочное значение.
Конфигурационные биты
Работу некоторых модулей микроконтроллера возможно настроить только на этапе программирования (могу ошибаться, из-за малого опыта).
Для этого существуют так называемые конфигурационные биты (байты, слово).
Конфигурационное слово микроконтроллера PIC10F200 (CONFIGURATION WORD):
Как видим возможностей немного:
- MCLRE - позволяет настроить линию сброса в качестве линии GP3
- CP – устанавливает защиту программного кода
- WDTE – разрешает/запрещает работу сторожевого таймера
Линии ввода-вывода
Посмотрим как можно использовать доступные нам четыре линии ввода-вывода:
Как видим первые три линии GP0-GP2 могут работать как вход или как выход, а линия GP3 только как вход.
Мне повезло я предусмотрел подключение светодиода к линии GP0, хотя изначально при трассировке платы хотел подключить к GP3.
Для управления линиями предназначены четыре регистра:
Очень непривычно :(
В Data Sheets я не нашел подробного описания регистров.
Регистр TRISGPIO позволяет задать направление работы линии (вход или выход):
- ‘0’ – выход
- ‘1’ – вход
Регистр GPIO предназначен для чтения или записи логического состоянии линии.
Описание регистров OPTION и STATUS выносится на самостоятельное изучение.
Мигаем светодиодом
Ну вот кратенько прошлись по основным моментам, теперь можно перейти к программе.
Напомню что шаблон был создан в предыдущей статье смотреть.
Начнем с настройки конфигурационного слова. Для установки нужных нам бит достаточно описать их в нашей программе и они будут добавлены в выходной файл (т.е. файл с программным кодом будет содержать так же и конфигурационное слово, очень удобно). Я решил отключить защиту, запретить работу сторожевого таймера и настроить линию сброса в качестве линии GP3:
Теперь переходим к самой программе.
Так как микроконтроллер довольно шустрый, необходимо написать функцию задержки (можно было бы использовать таймер, но пока это сложно для меня):
Настроим линию GP0 на выход, и будем менять состояние линии с некоторой задержкой:
Компилируем программу.
Смотрим расход памяти:
Программируем микроконтроллер:
И наслаждаемся миганием светодиода:
comments powered by Disqus