7.4 В открывшемся окне суммарной информации по проекту убедитесь, что МК и средство программирования выбраны правильно и нажмите кнопку
«Готово» (рисунок 19.7).
Рисунок 19.7 – Суммарная информация по проекту
Файл появится в папке «Linker Script» инспектора проекта (рисунок
19.8).
Рисунок 19.8 – Инспектор проекта
71
7.5 После создания проекта в него необходимо добавить файл с исходным кодом программы МК. Для этого необходимо воспользоваться пунктом меню «File New». В появившемся окне редактора исходных текстов наберите исходный код программы (рисунок 19.9).
Рисунок 19.9 – Редактор исходных текстов программ
7.6 После написания исходного кода программы к заданию № 19.2 с помощью пункта меню «File Save As…» откройте окно «Сохранить как» (рисунок 19.10). В этом окне выберите папку «LR19_2», в которой сохраняли файл исходного кода проекта и в строке «Имя файла» задайте название исходного кода программы, как «LR19_2.с» (рисунок 19.11). Затем нажмите кнопку «Сохранить».
72
Рисунок 19.10 – Окно сохранения файла исходного текста программы
Рисунок 19.11 – Сохранение исходного кода программы к заданию № 19.2
73
7.7 Кликните правой кнопкой мыши в окне редактора исходного кода и выберите пункт «Add To Project» (рисунок 19.12).
Рисунок 19.12 – Добавление исходного файла в проект
После описанных действий инспектор проекта должен иметь вид, показанный на рисунке 19.13.
Рисунок 19.13 - Инспектор проекта
74
7.8 Выполните компиляцию проекта, используя пункт меню «Project Build All». Компилятор выводит отчет о компиляции в окне «Output». В случае успешной компиляции получите сообщение BUILD SUCCEEDED (рисунок 19.14). В случае обнаружения ошибок в исходном коде соответствующие сообщения будут выведены в область уведомлений. В таком случае необходимо исправить ошибки и запустить заново компилирование проекта.
Рисунок 19.14 – Отчет о компиляции
7.9После успешной компиляции с помощью пункта меню «Programmer Select Programmer» выбрать программатор PICkit2.
7.10Запрограммировать стенд (прошить микроконтроллер) используя
пункт меню «Programmer Program».
7.11 Результат программирования отобразится в окне сообщений, и в случае успешного программирования (сообщение – … PICkit2 Ready) необходимо перевести МК в рабочий режим с помощью пункта меню «Programmer Release from Reset» (рисунок 19.15).
7.12После получения сообщения, указанного на рисунке 19.15, микроконтроллер запрограммирован.
7.13Проверить влияние положения датчиков дискретных сигналов на дискретные светодиодные индикаторы
8 После проверки преподавателем результатов работы закрыть MPLAB IDE, выключить ПК и учебный стенд.
9 Оформить отчет и сдать зачет.
75
Рисунок 19.15 – Сообщение о результатах прошивки стенда
Содержание отчета
Отчет должен содержать:
1 Наименование и цель лабораторной работы.
2 Условия, схемы алгоритмов и листинги программ к заданиям № 19.1 и 19.2
3 Ответы на контрольные вопросы.
Контрольные вопросы
1 Какую дополнительную функцию имеет линия порта RA2. Поясните, как она отключается при настройке этой линии на ввод?
2 Поясните, как настраивается линия порта RA2 МК dsPIC33F на ввод, а линия порта RB15 – на вывод?
3 Укажите команду на языке программирования С, которая настраивает линию порта RB13 на вывод.
Требования к знаниям и умениям учащихся
В результате выполнения лабораторной работы учащиеся должны знать:
структуру, особенности работы и программирование на языке С параллельных портов ввода/вывода в МК dsPIC33F;
схему подключения входных и выходных дискретных сигналов к МК dsPIC33FJ32MC204 стенда НТЦ-31.000.
Должны уметь:
76
составлять программы ввода/вывода дискретных сигналов на языке программирования С по заданному алгоритму;
создавать проекты для прошивки МК dsPIC33FJ32MC204 в интегрированной среде MPLAB IDE 8;
выполнять компиляцию исходного кода программ прошивки МК учебного стенда НТЦ-31.000;
выполнять программирование МК учебного стенда НТЦ-31.000, а также проверку и отладку прошивки.
Методические указания
1 Краткие теоретические сведения
Практически ни один проект с МК не обходится без операций ввода/вывода через параллельные порты. МК семейства dsPIC33F предоставляют разработчику широкие возможности по работе с дискретными сигналами благодаря наличию достаточного количества портов ввода/вывода и некоторым функциям, расширяющим функциональность самих портов.
Порты ввода/вывода общего назначения — это простейшие периферийные устройства, с помощью которых МК может получать цифровые данные и управлять другими устройствами (рисунок 19.16).
Рисунок 19.16 – Структура линии порта, объединенной с выводами периферийных функций
77
Дополнительную гибкость при работе с портами ввода/вывода обеспечивает и то, что их можно настроить для выполнения альтернативных функций.
Все выводы МК (кроме выводов питания Vdd, Vss, AVdd, AVss, VCap и вывода сброса MCLR) могут использоваться как периферийными модулями, так и параллельными портами ввода/вывода. Все вводные линии портов имеют триггер Шмидта по входу для исключения влияния электромагнитных помех и шумов.
Линии ввода/вывода МК разделены на три порта: RA, RB, RC. Подавляющее большинство линий ввода/вывода всех портов имеют дополнительные функции и могут использоваться различными периферийными модулями МК.
Мультиплексор Output Multiplexer (рисунок 19.16) выбирает, каким образом функционирует линия порта (в качестве части периферийного модуля, либо в качестве линии параллельного порта ввода/вывода). Таким образом, перед использованием таких линии в качестве линий порта
ввода/вывода необходимо предварительно отключить соответствующие периферийные устройства. Например, при использовании порта RA2 как линии ввода, необходимо отключить дополнительную функцию порта RA2 (выход тактирующего сигнала внутреннего генератора) следующей директивой:
_FOSC(OSCIOFNC_ON & POSCMD_NONE)
Для работы с портами каждый из них имеет 3 специальных регистра:
TRISx – регистр направления данных – задает каким образом используется линия порта (как вход либо как выход). При установке соответствующего бита в 1 линия порта будет сконфигурирована как вход;
LATx – регистр выводов порта – установка соответствующего бита данного регистра в 1 позволяет установить высокий уровень сигнала на выходе линии порта, при установке соответствующего бита в 0 – низкий уровень сигнала;
PORTx – регистр состояния порта – чтение соответствующего бита из данного регистра позволяет получить состояние сигнала (высокий либо низкий уровень) на входе линии порта.
Примечание – действительные названия регистров получаются подстановкой названия порта вместо символа х. Соответственно, регистры порта А называются TRISA, LATA, PORTA, порта В - TRISB, LATB, PORTB, порта C -TRISC, LATC, PORTC.
Для того, чтобы установка бита регистра LATx приводила к соответствующему изменению состояния линии вывода порта, необходимо чтобы эта линия была предварительно сконфигурирована как выход установкой требуемого бита в регистре TRISx. Аналогично, чтобы чтение
78
SA2 |
SA1 |
|
|
бита регистра PORTx отображало действительное состояние линии ввода |
|||
В+3,3 |
В+3,3 |
|
|
порта, необходимо чтобы эта линия была предварительно сконфигурирована |
|||
как вход установкой требуемого бита в регистре TRISx. |
|||
Таким1k образомR106 |
, настройка1k R105 |
линии 2 портаVD1 |
RA на вход, а линии 15 порта |
RB на вывод осуществляется следующим образом: |
|||
|
|
R111 |
|
TRISAbits.TRISA2 = 1;
33 |
32 |
3 |
30 |
29 |
28 |
TRISBbits.TRISB15 |
|||||
P4/RB4 |
RA8 |
A3 |
A2/OSC2 |
Vss |
Vdd |
|
|||||
34 RA4 |
|
|
|
|
|
27 = AN8/RP18/RC2
26 |
|
25 |
24 |
23 |
|
|
|
||
0;22 |
AN4/RP2/RB2 |
19 |
|
17 |
|||||
AN7/RP17/RC1 |
AN3/RA3 |
AN6/RP16/RC0 |
21 |
AN5/RP3/RB3 |
20 |
AN0/RA0 |
18 |
22 |
|
|
AN2/RA2 |
AN1/RA1 |
AN3/RA3MCLR |
||||||
|
|
|
|
|
|
|
|
|
AVdd |
16 AVss
15 |
14 |
13 |
12 |
RP15/RB15 |
RP14/RB14 |
RA7 |
RA10 |
R112 VD2
|
|
2 Схема электрическая принципиальная к лабораторной работе |
|||||||||||
|
35 |
RA9 |
23 |
AN4/RP2/RB2 |
AN2/RA2 |
21 |
|
|
RP13/RB13 |
11 |
|
||
|
|
|
|
|
|
|
|
|
|
|
|||
dsPIC33fj32mc204 |
36 |
RP19/RC3 |
24 |
AN5/RP3/RB3 |
AN1/RA1 20 |
|
|
RP12/RB12 |
10 |
|
|||
42 |
RP6/RB6 |
29 |
Vss |
|
RP14/RB14 |
14 |
|
|
RP25/RC9 |
5 |
|
|
|
|
37 |
RP20/RC4 |
25 |
|
|
AN0/RA0 |
19 |
|
|
|
9 |
|
|
|
+3,3В |
AN6/RP16/RC0 |
|
|
|
RP11/RB11 |
принципиальная к |
||||||
|
На рисунке |
19.1726 |
приведена |
схема |
электрическая |
8 |
|||||||
|
38 |
RP21/RC5 |
|
AN7/RP17/RC1 |
MCLR |
18 |
|
|
RP10/RB10 |
|
|
|
|
лабораторной работе.27 |
AN8/RP18/RC2 |
|
|
|
|
Vcap |
7 |
|
|
||||
|
39 |
Vss R105 |
|
|
|
AVdd |
17 |
|
|
|
|
|
|
SA1 |
40 |
Vdd |
28 |
|
|
AVss |
16 |
|
R111 VD1 |
6 |
|
|
|
|
41 |
RP5/RB51k |
Vdd |
|
RP15/RB15 |
15 |
|
|
Vss |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
43 |
RP7/RB7 |
30 |
RA2/OSC2 |
RA7 |
13 |
|
|
RP24/RC8 |
4 |
|
|
|
44 |
|
|
+3,3В |
RP8/RB8 |
RP9/RB9 |
SA2 |
|
|
|
R106 |
|
|
1k |
1 |
|
|
|
+3,3В |
|
|
RP22/RC6 |
RP22/RC7 |
RP24/RC8 |
2 |
3 |
4 |
31 |
RA3 |
|
22 |
21 |
|
20 |
|
|
19 |
|
|
Vcap |
RP10/RB10AN3/RA3 |
RP11/RB11 AN2/RA2 |
RP12/RB12 AN1/RA1 |
RP13/RB13 AN0/RA0 |
|||||||
23RP25/RC9 |
Vss |
||||||||||
32 |
RA8 |
|
|
|
|
|
|
|
|
|
|
33 |
RP4/RB4 |
|
|
|
|
|
|
|
|
||
25 |
AN4/RP2/RB2 |
9 RA9 |
10 |
RP19/RC3 |
11 |
RP20/RC4 |
|||||
AN6/RP16/RC0RA4 |
|||||||||||
5 |
6 |
7 |
8 |
|
|
|
|
|
|
|
|
24 |
AN5/RP3/RB3 |
|
|
|
|
|
|
|
|||
18 |
17 |
|
16 |
15 |
14 |
13 |
12 |
|
|
3 |
|
|
|
|
|
|
RA10 |
12 |
RP15/RB15 |
RP14/RB14 |
RA7 |
RA10 |
RP22/RC7 |
|
|
|
|
|
|
||||
MCLR |
AVdd |
|
AVss |
RP9/RB9 |
1 |
|
R112 |
VD2 |
|
|||||||
|
|
|
|
|
|
|
|
RP22/RC6 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RP13/RB13 |
11 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
RP21/RC5 |
Vss |
Vdd |
RP5/RB5 |
RP6/RB6 |
RP7/RB7 |
RP8/RB8 |
RP11/RB11 |
9 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RP12/RB12 |
10 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
26 |
34 |
|
|
|
|
|
|
R105 |
|
|
27 |
AN7/RP17/RC1 |
|
|
|
|
|
|
|
AN8/RP18/RC2 |
||||
SA1 |
|
|
|
|
|
28 |
Vdd |
|||
|
|
|
|
|
1k |
|
29 |
|
|
|
|
|
|
|
|
|
|
|
Vss |
||
|
|
|
|
|
|
|
|
30 |
||
|
|
|
|
|
|
|
|
RA2/OSC2 |
||
|
|
|
|
|
|
|
|
31 |
||
+3,3В |
|
RA3 |
||||||||
|
32 |
|||||||||
|
|
|
|
|
R106 |
|
|
RA8 |
||
|
|
|
|
|
|
|
33 |
RP4/RB4 |
||
SA2 |
|
|
|
|
|
|
|
|
||
|
|
|
|
|
1k |
|
|
|
||
|
|
|
|
|
|
|
|
|
RA4 |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
34 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
|
|
R112 |
|
|
|
|
|
|
|
|
|
|
dsPIC33fj32mc204 |
|
|
|
|
||||||||||||
|
|
|
|
|
VD2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RA9 |
RP19/RC3 |
RP20/RC4 |
RP21/RC5 |
Vss |
Vdd |
RP5/RB5 |
RP6/RB6 |
RP7/RB7 |
RP8/RB8 |
||||||||||
35 |
|
36 |
|
37 |
|
38 |
|
39 |
|
40 |
|
41 |
|
42 |
|
43 |
|
44 |
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RP10/RB10 8
Vcap 7
Vss 6
RP25/RC9 5
RP24/RC8 4
RP22/RC7 3
RP22/RC6 2
RP9/RB9 1
Рисунок 19.17 – Схема электрическая принципиальная к лабораторной работе № 19
Для ввода дискретной информации в МК широко применяются различные переключатели, кнопки и клавиатуры, либо иные дискретные датчики.
Дискретными выходами МК управляет различными исполнительными устройствами, работающими по принципу включено/выключено.
В схеме два дискретных датчика оформлены в виде двух переключателей SA1 и SA2, подключенных к выводам RA2 и RA3 МК.
Два дискретных выхода оформлены в виде двух светодиодов VD1 и VD2, подключенных к выводам RB15 и RB13 МК соответственно.
79
3 Алгоритм и листинг программы к заданию № 19. 1
Схема алгоритма для создания проекта LR19_1 представлена на рисунке 19.18.
НАЧАЛО
Настройка линий порта
VD1 = SA1
VD2 = SA2
+
1 = 1
КОНЕЦ
Рисунок 19.18 – Схема алгоритма программы к заданию № 19.1
Листинг (исходный код) программы на языке программирования С к заданию №1 для прошивки МК:
#include <P33FJ32MC204.h> _FOSC(OSCIOFNC_ON & POSCMD_NONE)
//отключение дополнительной функции порта RA2 – выход //тактирующего сигнала внутреннего генератора
int main()
{
TRISBbits.TRISB15 = 0; // настройка порта
//RB15 на выход
TRISBbits.TRISB13 = 0; // настройка порта
//RB13 на выход
TRISAbits.TRISA2 = 1; //настройка порта
//RA2 на вход
80
