Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

цимпу / Практика / content / Пособия / Лаб. практикум, часть IV, лаб. работы № 12...20 (ЦиМПУ)_ДФО

.pdf
Скачиваний:
144
Добавлен:
13.02.2016
Размер:
3.83 Mб
Скачать

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