Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|
Микроконтроллеры Microchip, введение. |

07.11.2007, 00:07
|
|
Участник форума
Регистрация: 08.11.2006
Сообщений: 208
Провел на форуме: 1038169
Репутация:
184
|
|
Микроконтроллеры Microchip, введение.
Микроконтроллеры
Микроконтроллеры - это автономные процессоры, имеющие память для хранения исполняемой программы, энергонезависимую память для хранения данных, линии ввода\вывода. Микроконтроллеры применяются в самых различных устройствах, где требуется цифровая обработка информации. При подачи питания на микроконтроллер начинает выполнятся загруженная в его память программа, и он начинает взаимодействовать со схемой а также с другими микроконтроллерами через линии ввода\выода. Есть микроконтроллеры и с микромощным передатчиком (rfPIC) для обмена информацией, но я рассмотрю их позднее.
Запись программы в микроконтроллер производится с помощью программатора, т.е. устройства для "прошивки" контроллеров. подключается оно к компьютеру, откуда идет управление специальным ПО ходом прошивки, стирания, а также считывания программы. Существует много схем программаторов, от сложности схемы зависит и колчиество поддерживаемых микроконтроллеров, а также надежность загрузки программы в кристалл (прошивки).
Для разработки программ для микроконтроллеров Microchip создана среда разработки - MPLAB. Это и ассемблер, и отладчик. Однако конечный результат важно достигнуть именно на практике. Есть и плагин для MPLAB, позволяющий писать прошивки на языке С.
Также в моём арсенале имеется симулятор и дезасемблер.
Помимо вычислений, современные микроконтроллеры имеют аппаратные поддержки различных полезных функций, например как Широко Импульсная Модулация (ШИМ) Аналого-Цифровые преобразователи (АЦП), Компараторы, прерывания по различным событиям например как изменение лог. уровней на линиях, переполнение сторожевого таймера.
На примере я буду рассматривать контроллер PIC12F629. Он наиболее дешев, и обладает нужными мне функциями.
нашел http://www.microchip.ru/d-sheets/41190.htm:PIC12F629:1x1 Оисание на Русском
Он будет применятся у меня как обработчик сенсорного контакта(да, контроллер может и такое), и выставлять при прикосновении лог.1 на одной из линий, тем самым через транзисторный каскад будет подаватся +12В на реле, которое будет управлять питанием мощного усилителя.
Наиболее распространёный микроконтроллер в радиолюбительских устройствах - PIC16F84A. Однако существуют контроллеры дешевле и производительней, но статистика вещ упрямая 
этот контроллер имеет 13 линий ввода\вывода и 2 порта PORTA и PORTB. (не путать с линиями, порт - это группа линий!)
PORTA и PORTB - это регистры этого процессора, состояние битов этих регистров зависит от логического уровня на выводах микроконтроллера, т.е. линий ввода-вывода. установка бита <0> в 1 регистра PORTA приведет к появлению высокого уровня на вывода RA0. Для работы с линиями ввода\вывода нужно настроить их на ввод или на вывод, путем установки соответствующего бита в регистре TRISA и TRISB соответственно.
PIC16F84A поддерживает 35 комманд.
Также хочу обратить ваше внимание на конфигурацию процессора. Ее можно изменять непосредсвенно в WinPic (программа для прошивки), и указать директивой __CONFIG.
Конфигурацию, записанную в кристалл нельзя изменить программно, возможно только при помощи программатора.
PIC контроллеры имеют внутренний тактовый генератор (4 МГц), но лучше использовать внешний кварцовый, если требуется повышенная точность тактовой частоты. В данном случае, если у вас простой JDM программатор, то лучше в конфигурации указать использовать внешний генератор, т.к. при последущей попытке прошить контроллер возникнут проблемы, тк при подключении питания начнет исполнятся программа.
За один такт выполняется одна комманда, кроме комманд перехода, они выполняются за 2 машинных цикла.
Чтож, если этот материал уяснен, можно приступать к практике, что я опишу в следующей статье...
ССЫЛКИ ПО ТЕМЕ
MPLAB 7.62
Симулятор со схемами
Схема программатора
Программатор попроще
ПО для прошивки
Компилятор С интегрируемый в MPLAB
PS что еще интересует\непонятно пишите, буду дополнять
Последний раз редактировалось MegaDeth; 07.11.2007 в 19:04..
|
|
|

07.11.2007, 10:26
|
|
Fail
Регистрация: 17.09.2005
Сообщений: 2,242
Провел на форуме: 9089375
Репутация:
4268
|
|
Зачетно, вот не мог бы ты рассказать аудитории какие самые применяемые ака распространенные и наиболее удовлетворяющие требованиям контроллеры, есть на белом свете? Какие используешь лично ты? В Ксакепе были статьи по обману "Таблеток" с помощью Pic микросхемки. Плюс я там не раз видел статьи с их применением.
__________________
...
|
|
|

07.11.2007, 18:39
|
|
Moderator - Level 7
Регистрация: 19.10.2007
Сообщений: 225
Провел на форуме: 1260519
Репутация:
298
|
|
Какие требования - такие и контроллеры! 
Линейка ПИКов делится на серии: Pic12FXXX, Pic16FXXX, Pic18FXXX, а дальше пока не интересно.  Чем выше индекс, тем "круче" контроллеры (Больше программной и оперативной памяти, выше тактовая частота, всякие примочки типа АЦП, Usart, ШИМ и т.д.)
Для начала я бы порекомендовал PIC16F676. Вроде бы их везде как грязи и недорого. На него можно спокойно переносить (с доработками конечно) любые проекты, написанные для старого доброго PIC16F84(16C84), которых в сети накопилось за прошлые годы тьма тьмущая. Основные параметры: 14-ти ногий корпус, килобайт для написания программы, 64 байта оперативной памяти, внутренний генератор на 4 мегагерца (что очень радует. подключил пять вольт и контроллер заработал, никакой возьни с кварцем) Для создания эмулятора "таблетки" его хватит за глаза! Да и много еще для чего.
|
|
|

07.11.2007, 18:54
|
|
Участник форума
Регистрация: 08.11.2006
Сообщений: 208
Провел на форуме: 1038169
Репутация:
184
|
|
Сообщение от Animal
Какие требования - такие и контроллеры! 
Линейка ПИКов делится на серии: Pic12FXXX, Pic16FXXX, Pic18FXXX, а дальше пока не интересно.  Чем выше индекс, тем "круче" контроллеры (Больше программной и оперативной памяти, выше тактовая частота, всякие примочки типа АЦП, Usart, ШИМ и т.д.)
Для начала я бы порекомендовал PIC16F676. Вроде бы их везде как грязи и недорого. На него можно спокойно переносить (с доработками конечно) любые проекты, написанные для старого доброго PIC16F84(16C84), которых в сети накопилось за прошлые годы тьма тьмущая. Основные параметры: 14-ти ногий корпус, килобайт для написания программы, 64 байта оперативной памяти, внутренний генератор на 4 мегагерца (что очень радует. подключил пять вольт и контроллер заработал, никакой возьни с кварцем) Для создания эмулятора "таблетки" его хватит за глаза! Да и много еще для чего.
ну внутренний генератор и у 12ХХ пиков есть, ты бы лучше линк на даташит бы выложил =))))
|
|
|

07.11.2007, 19:01
|
|
Участник форума
Регистрация: 08.11.2006
Сообщений: 208
Провел на форуме: 1038169
Репутация:
184
|
|
Сообщение от Alexsize
Зачетно, вот не мог бы ты рассказать аудитории какие самые применяемые ака распространенные и наиболее удовлетворяющие требованиям контроллеры, есть на белом свете? Какие используешь лично ты? В Ксакепе были статьи по обману "Таблеток" с помощью Pic микросхемки. Плюс я там не раз видел статьи с их применением.
ок, учел =)
|
|
|

07.11.2007, 19:12
|
|
Moderator - Level 7
Регистрация: 19.10.2007
Сообщений: 225
Провел на форуме: 1260519
Репутация:
298
|
|
Сообщение от MegaDeth
ну внутренний генератор и у 12ХХ пиков есть, ты бы лучше линк на даташит бы выложил =))))
Не вопрос!
http://ww1.microchip.com/downloads/en/DeviceDoc/40039E.pdf
Вообще, если какая документация нужна, то сразу на microchip.com Там прям на лицевой странице окошко для поиска даташитов.
|
|
|

10.11.2007, 16:54
|
|
Участник форума
Регистрация: 08.11.2006
Сообщений: 208
Провел на форуме: 1038169
Репутация:
184
|
|
Hello, World! мигающие светодиоды. я написал столь простую программку на СИ в среде MPLAB, думаю она понятна будет для всех.
Код:
#include <pic.h>
__CONFIG(0x03F72);
void pause(unsigned int time)
{
}
void main(void)
{
T0IE=0;
GIE=0;
TRISIO=0;
GPIO=0;
CMCON=0x07; //инициализация процессора
while(1)
{
GPIO++;
//asm("BCF 0x05,0");
pause(70000);
}
}
здесь идет увеличение значения регистра GPIO, биты которого отвечают за состояние линий ввода-вывода.
при переполнении разрядов, идет его обнуление.
во время выполнения программы можно наблюдать состояние портов ввода-вывода на диаграмме.
http://imhost.ru/out.php/i4841_.jpg
скриншот =)))
прошиваем контроллер, вставляем в макет, подводим питание, светодиод на линию GP0 - будет мигать светодиод. на линию GP1 - мигает реже 
позже сам прошью контроллер...
Народ, задавайте вопросы по ходу дела :\
|
|
|

12.11.2007, 06:26
|
|
Постоянный
Регистрация: 04.11.2007
Сообщений: 331
Провел на форуме: 1724067
Репутация:
806
|
|
Avr
Советовал бы интересующимся присмотреться также к микроконтроллерам Avr от Atmel.
На практике использовал и те и другие, но от Avr больше хороших воспоминаний.
Вот преимущества:
Дешевле.
Проще в освоении.
Побыстрее работают.
Хотя каждому свое. 
|
|
|

12.11.2007, 09:31
|
|
Fail
Регистрация: 17.09.2005
Сообщений: 2,242
Провел на форуме: 9089375
Репутация:
4268
|
|
Сообщение от presidentua
Советовал бы интересующимся присмотреться также к микроконтроллерам Avr от Atmel.
На практике использовал и те и другие, но от Avr больше хороших воспоминаний.
Вот преимущества:
Дешевле.
Проще в освоении.
Побыстрее работают.
Хотя каждому свое. 
Не могли бы вы попобронее описать что собирали, дать примеры?
__________________
...
Последний раз редактировалось Alexsize; 12.11.2007 в 09:34..
|
|
|

12.11.2007, 15:50
|
|
Moderator - Level 7
Регистрация: 19.10.2007
Сообщений: 225
Провел на форуме: 1260519
Репутация:
298
|
|

Вот такой вот "Здравствуй, мир!" в железе для 676 пика. 
Здесь применено внутрисхемное программирование. Т.е., не надо постоянно выдергивать контроллер из отладочной платы и втыкать в программатор и обратно. Подключаем программатор прямо к контроллеру на плате.
ОСТОРОЖНО!!! Не с каждым программатором (касается простых самодельных, в основном) этот фокус пройдет! Часто видел на простых схемах применение простых логических микросхем (инверторов и чегото еще). Так что может сложиться такая ситуация: у вас две микросхемы непосредственно соединенные выводами друг с другом, на одной микросхеме будет один лог уровень, а на другой - другой. Какие могут быть варианты развития событий? Правильно! Может одна, а может и обе сгорят. К сожалению, поленился я посмотреть ссылки MegaDeth на программаторы, постараюсь попозже на них поглядеть внимательно, но скорее всего, хотелось бы увидеть транзисторные ключи не только на MCLR, но и на дате с клоком,или хотя-бы ограничивающие резисторы.
Сам пользуюсь клоном ICD-2 от Olimex (заказывал в чипе-дипе, стоит около двух с половиной штук), пахает сутками, проблем сильных не наблюдается, но немного, по сравнению с микрочиповским оригинальным ICD-2, есть.
Если у вас другой контроллер, то сначала смотрите в даташит, где у него Vdd,Vss, MCLR, ICSP_DAT,ICSP_CLK. Емкость С3 желательно напаять как можно ближе к ногам контроллера. Очень желательно ставить панельку под контроллер. Перед установкой контроллера подайте питание и посмотрите туда ли приходит пять вольт питания.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|