Технический Портал Левши Пятница, 19.04.2024, 00:23
| RSS
Меню сайта

Категории раздела
ПИТАНИЕ [17]
МЕТАЛЛО ДЕТЕКТОРЫ [1]
СВЯЗЬ [5]
НАЧИНАЮЩИМ [6]
МикроКонтроллеры [15]
АВТОМАТИКА [4]
АУДИО. [2]
СИСТЕМЫ ОХРАНЫ И БЕЗОПАСНОСТИ [6]
СИСТЕМЫ ДЛЯ САМООБОРОНЫ [1]
ТЕЛЕФОНИЯ [7]

Мини-чат

Главная » Статьи » РАДИОЭЛЕКТРОНИКА » МикроКонтроллеры

ПРОГРАММА FLOWCODE - полет второй
Полет второй
Когда пишешь прикладную компьютерную программу, проще — оттранслировал и можно запустить, посмотреть, что из этого получается, даже если ничего не получается.
С микропроцессорами и микроконтроллерами хуже. Я помню, как много лет назад, при написании программы испытывал нестерпимый зуд в руках, в кончиках пальцев, хотелось как можно скорее схватить паяльник и что-нибудь к чему-нибудь обязательно припаять. Уж так устроен «нормальный железячник».
Поэтому прежде, чем вернуться к программе FlowCode, поговорим немного о железе.
Здесь у меня есть определенные трудности. Несколько лет назад, когда мне понадобилось в среде разработки PIC-контроллеров MPLAB что-то сделать, я не отважился ни на покупку программатора, который работал бы с этой программой, ни к пайке такого программатора. Из программ, работающих с простыми программаторами, я обнаружил только PonyProg для Windows, и, спаяв программатор, работал с этой парой. Позже, рассказывая о программах Piklab и KTechlab для Linux, я спаял еще один простой программатор, который прекрасно работал с ними. Оба программатора я выбрал в самом простом виде, поставив панельку только для микроконтроллера PIC16F628A. А в промежутке, чтобы не обидеть Windows купил недорогой, но более универсальный программатор EXTRA-PIC.
Я не готов к тому, чтобы «хаять» программу PonyProg и программатор, работающий с ней. Я не готов к тому, чтобы утверждать, что это и есть то, что нужно, и больше ничего не надо. И, увы, не готов к тому, чтобы найти и спаять схему программатора, который, возможно, будет работать с программой FlowCode. Но в любом случае работа программ для программаторов отличается не столь разительно, хотя может иметь много особенностей, чтобы считать это принципиальным моментом. С другой стороны, было бы непростительно не проверить «живьем» результаты, полученные в программе FlowCode. Я предлагаю компромисс. Я опишу процесс программирование в Piklab, сделав вид, что это некоторая специально для программатора существующая программа, а вы или сделаете вид, что верите мне, или подумаете, а не использовать ли, как это делаю я, Linux в качестве второй операционной системы. Под Linux есть достаточно удобная среда работы с PIC-контроллерами Piklab, есть бесплатные и полнофункциональные компиляторы Си, а об ассемблере я и не говорю. Или, если понадобится, я повторю это описание для программатора EXTRA-PIC. Программа для него тоже распространяется бесплатно.
Итак. Схема программатора с которым я буду работать в программе Piklab для Linux. Кстати, это классическая схема, с которой, мне кажется, будут работать Windows-программы. Нужно их только поискать.


Рис. 2.1. Схема программатора для программы Piklab
Он подключается шлейфовым кабелем в метр длиной, чтобы удобно было работать возле компьютера, к COM-порту. Выглядит он так:

Рис. 2.2. Внешний вид программатора
Внешний вид и описание программатора EXTRA-PIC можно найти в Интернете, там же есть схема. Можно, думаю, заказать его по почте в агентстве «Десси». Словом, это, мне кажется, не столь принципиально и больше зависит от ваших вкусов и привычек, чем от чего-либо еще.
Сделав вид, что программатор я только что спаял, я хочу программу, написанную в FlowCode, загрузить в микросхему; микросхему перенести на макетную плату, где у меня кроме панельки для микросхемы есть несколько светодиодов, оставшихся от предыдущих экспериментов, и еще что-то, что не имеет отношения к данному случаю. Если светодиод будет мигать, я помещу фотографию макетной платы, если не будет мигать, я напишу пару абзацев о том, как здорово он мигает. Вот такие планы на этот «ночной» полет.
Первое, что нам потребуется, это программу из предыдущей части превратить в файл с hex-кодом. Такой файл загружается в программу, которая отправит его в микроконтроллер.


Рис. 2.3. Трансляция программы в hex-код
Предпоследняя клавиша основного инструментального меню с подсказкой Compile to HEX, как видно из рисунка, должна выполнить это... или, положим, должна была бы... или могла бы... но в Linux эта процедура явно не проходит.
В Windows все заканчивается благополучно, а в папке с программой появляется искомый hex-файл. Если бы в моем распоряжении был программатор, подключенный по USB интерфейсу к компьютеру, программатор, умеющий разговаривать с FlowCode, то следующая кнопка основного инструментального меню с иконкой микросхемы загрузила бы программу.
Я использую Piklab. Не то, чтобы это говорило о моей пристрастности к Linux, я просто работаю в Linux и несколько лет кряду пытаюсь понять, что имеют в виду люди, когда говорят о трудностях освоения Linux. Работа в Linux ничем не отличается от работы в Windows, разве только удобнее. Этот текст я пишу в OpenOffice Writer'е, Piklab работает на другом столе, а на третьем я при необходимости поправляю иллюстрации в графическом редакторе Gimp. В Windows мне не хватает этих удобств.

Рис. 2.4. Среда программирования PIC-контроллеров Piklab
После загрузки появляется предыдущий проект, который мне не нужен. Достаточно его закрыть и открыть hex-файл, созданный в программе FlowCode. Открыть его не составляет труда — в основном меню File-Open или кнопка с папкой на основном инструментальном меню.


Рис. 2.5. Hex-файл, открытый в Piklab
Файл можно было бы загрузить в микросхему, но перед этим нужно записать слово конфигурации. В разных программах, работающих с программаторами, эта процедура может выглядеть различно, но в этой достаточно спуститься чуть ниже в окне кода, об этом же говорят полосы прокрутки. В окне с адресом 2007 перед отправкой кода в микроконтроллер я запишу 2118 (в действительности 3F18h), что означает отказ от блокировок, использование внутреннего генератора и еще ряд особенностей, которые меня пока не интересуют.

Рис. 2.6. Запись слова конфигурации в Piklab
Теперь все готово к записи, осталось нажать на инструментальной панели кнопку с иконкой микросхемы и стрелкой, направленной внутрь. Через несколько секунд в окне сообщений появляется сообщение о завершении процесса записи.
На этом можно закончить повествование, но я обещал проверить, все ли работает. Поэтому после программирования микроконтроллера я переношу микросхему на старенькую макетную плату, оставшуюся от предыдущих опытов, включаю блок питания и наблюдаю, как зажигается и гаснет светодиод. Делает он это не совсем, как я заказывал, не раз в секунду, а медленнее. Я даже могу сказать, что раз в 5 медленнее. Потому что, я думаю, программа FlowCode рассчитывает на работу с кварцем 20 МГц, а внутренний генератор, который я использую, работает на частоте 4 МГц. Если бы мне нужны были именно секундные импульсы, я за 10-15 секунд подправил бы времена задержки, и переписал бы микроконтроллер еще раз.
Если бы я хотел этот контроллер использовать для работы с елочной гирляндой, я добавил бы вместо светодиода транзистор (на всякий случай) с реле, имеющим контакты на 220 В, и подключил гирлянду через эти контакты.


Рис. 2.7. Работающий микроконтроллер на макетной плате
Программа FlowCode может генерировать файл на языке Си.
//************************************************************************************
//**
//** File name: C:\Documents and Settings\vladimir\Рабочий стол\fi_code\part1\schemes\exampl1.c
//** Generated by: Flowcode v3.2.2.40
//** Date: Saturday, March 22, 2008 20:37:58
//** Licence: Demo
//**
//** ***DEMO VERSION***
//**
//**
//** NOT FOR COMMERCIAL USE
//**
//** http://www.matrixmultimedia.com
//************************************************************************************

#define MX_PIC

//Defines for microcontroller
#define P16F628A
#define MX_EE
#define MX_EE_TYPE1
#define MX_EE_SIZE 128
#define MX_UART
#define MX_UART_B
#define MX_UART_TX 2
#define MX_UART_RX 1
#define MX_PWM
#define MX_PWM_CNT 1
#define MX_PWM_TRIS1 trisb
#define MX_PWM_1 3

//Functions
#include <system.h>
#pragma CLOCK_FREQ 19660800

//Configuration data
//Internal functions
#include "C:\Program Files\Matrix Multimedia\Flowcode V3\FCD\internals.h"

//Macro function declarations
//Variable declarations
//Supplementary defines
//Macro implementations
//Supplementary implementations

void main()
{
//Initialisation
cmcon = 0x07;

//Interrupt initialisation code
option_reg = 0xC0;

//Loop
//Loop: While 1
while( 1 )
{
//Output
//Output: 0 -> PORT A
trisa = 0x00;
porta = 0;

//Delay
//Delay: 1 s
delay_s(1);

//Output
//Output: 1 -> PORT A
trisa = 0x00;
porta = 1;

//Delay
//Delay: 1 s
delay_s(1);
}
mainendloop: goto mainendloop;
}

void interrupt(void)
{
}
Это удобно, если предполагать работу с языком Си. Хотя запись на языке Си может потребовать правки, зависит от используемого компилятора, она достаточно универсальна. Ту же программу можно использовать для других микроконтроллеров.
Но это тема другого полета.

продолжение следует....

обсудить на форуме:  http://elektron.ucoz.ru/forum/9
Категория: МикроКонтроллеры | Добавил: ЛЕВША (30.07.2008)
Просмотров: 11333 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск

Статистика

Наш опрос
КАКАЯ ОБЛАСТЬ ЭЛЕКТРОНИКИ ВАС ИНТЕРЕСУЕТ?
Всего ответов: 2531

Друзья сайта
  • Форумы Игростроя
  • CЛОВЕНСК
  • RemEXpert
  • ПАЯЛЬНИК
  • МЕДТЕХНИКА

  • Copyright MyCorp © 2024