Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Микропроцессорная техника Сторожок / MPLAB_C30_Руководство пользователя.pdf
Скачиваний:
161
Добавлен:
20.02.2016
Размер:
1.26 Mб
Скачать

Руководство пользователя по MPLAB® компилятору Си для PIC24 и dsPIC®

 

 

Глава 7. Файлы поддержки устройства

 

 

 

 

7.1.

Введение

 

 

 

В этой главе обсуждаются файлы поддержки устройства, применяемые при

 

 

компиляции с использованием компилятора MPLAB Си для PIC24 и dsPIC® (бывший

 

 

C30)

.

7.2.

Основные вопросы

A

 

 

Вопросы, обсуждаемые в этой главе:

 

 

 

 

 

Файлы заголовков процессора

 

 

 

Файлы определения регистров

 

 

 

Использование SFR

 

 

 

Использование макросов

 

 

 

Адресация EEDATA из Си - только для dsPIC30F

7.3.

Файлы заголовков процессораWilson

 

 

 

Файлы заголовков процессора — распространенные языковые инструментальные

 

 

средства. Эти файлы определяют доступные регистры специального назначения

 

 

(SFR) для каждого устройства dsPIC DSC. Для того, чтобы использовать файл

 

 

заголовка в Cи достаточно:by

 

 

 

#include <p30fxxxx.h>

 

 

 

Translated

 

где xxxx соответствует обозначению микросхемы устройства. Файлы заголовков Cи находятся в каталоге support\h.

Включение файла заголовка необходимо для того, чтобы использовать имена SFR (например, CORCONbits).

Например, следующий модуль, скомпилированный для микросхемы dsPIC30F2010, включает две функции: одну для включения окна PSV и другую для выключения окна PSV.

#include <p30f2010.h> void

EnablePSV(void)

{

CORCONbits.PSV = 1;

}

void DisablePSV(void)

{

CORCONbits.PSV = 0;

}

Соглашение о файлах заголовка процессора таково, что каждый SFR имеет то же имя, которое используется в документации на микросхему, например, CORCON для регистра управления ядром. Если регистр имеет отдельные биты, представляющие интерес, тогда там также будет структура, определенная для этого SFR, и ее имя будет аналогично имени SFR, с добавлением «bits». Например, CORCONbits для регистра управления ядром. Отдельные биты (или битовые поля), названы в

 

 

© 2008 Microchip Technology Inc.

DS51284H(ru) стр. 7-1

16-битовый компилятор Си. Руководство

структуре теми же именами, что и биты в документации, например PSV для бита PSV регистра CORCON. Вот полное определение CORCON (возможны изменения):

/* CORCON: CPU Mode control Register */

 

 

extern volatile unsigned int CORCON __attribute__((__near__));

 

 

typedef struct tagCORCONBITS {

 

 

 

 

unsigned IF

:1; /* целый/дробный режим */

 

 

unsigned RND

:1; /* режим округления */

 

 

unsigned PSV

:1; /* разрешение PSV */

 

 

unsigned IPL3

:1;

 

A

.

 

 

 

 

 

 

unsigned ACCSAT

 

 

 

 

 

:1; /* режим насыщения аккумулятора */

 

 

unsigned SATDW

:1; /* разреш.насыщ.записи в простр-ве данных */

 

 

unsigned SATB

:1; /* разрешить насыщен. аккум. B */

 

 

unsigned SATA

 

Wilson

 

 

 

 

:1; /* разрешить насыщен. аккум. A */

 

 

unsigned DL

:3; /* статус уровня вложенности цикла DO */

 

 

unsigned

:4;

 

 

 

 

 

} CORCONBITS;

 

 

 

 

 

 

extern volatile CORCONBITS CORCONbits __attribute__((__near__));

 

 

 

 

 

Примечание Символы CORCON и CORCONbits ссылаются на один и тот же

 

 

регистр и преобразуются в тот же адрес во время компоновки.

 

 

 

 

 

 

 

7.4.

 

 

by

 

 

 

Файлы определения регистров

 

 

Файлы заголовков процессора описанные в п. 7.3. «Файлы заголовков процессора» именуют все SFR для каждой микросхемы, но не определяют адреса SFR.

адреса SFR. Для того, чтобы использовать один из этих файлов, служит опция командной строки компоновщика:

ОтдельныйTranslatedнабор файлов сценария компоновки, по одному на микросхему, расположен в каталоге support\gld. Эти файлы сценария компоновки определяют

-T p30fxxxx.gld

где xxxx соответствует обозначению микросхемы устройства.

Например, предположим, что существует файл называемый app2010.c, который содержит приложение для dsPIC30F2010, тогда оно может быть компилировано и скомпоновано следующей командной строкой:

pic30-gcc -o app2010.o -T p30f2010.gld app2010.c

Опция командной строки -o присваивает имя выходному исполняемому COFF файлу, а опция -T конкретизирует имя микросхемы dsPIC30F2010. Если p30f2010.gld не будет обнаружен в текущем каталоге, компоновщик ищет его в известных ему библиотечных путях. Для установки по умолчанию сценарии компоновки включены в путь PIC30_LIBRARAY_PATH. Подробнее см. п. 3.6. «Переменные окружения».

7.5.Использование SFR

При использовании SFR в приложении следует выполнить три шага.

1.Включите файл заголовка процессора для используемого устройства. Это обеспечит исходный код данными о регистрах специального назначения, которые доступны в этом устройстве. Например, следующий оператор включает файл заголовка для микросхемы dsPIC30F6014:

#include <p30f6014.h>

DS51284H(ru) стр. 7-2

© 2008 Microchip Technology Inc.

Глава 7. Файлы поддержки устройства

2.Работайте с SFR как с любыми другими переменными в Cи. SFR можно читать и писать в исходном код.

Например, следующий оператор сбрасывает в 0 все биты SFR первого таймера.

TMR1 = 0;

Следующий оператор представляет 15-й бит регистра T1CON, который является битом включения таймера. Он устанавливает бит с именем TON в 1, этим запуская таймер.

T1CONbits.TON = 1;

 

 

.

3. Компонуйте с файлом определений регистров или сценарием компоновщика

 

для используемого устройства. Компоновщик обеспечит адреса для SFR.

 

 

A

 

(Помните, что битовая структура будет иметь тот же адрес, что и SFR во время

 

компоновки.) Допустим, пример 7-1. мог бы использовать:

 

p30f6014.gld

Wilson

/*

 

См. «MPLAB® Assembler, Linker and Utilities for PIC24 MCUs and dsPIC® DSCs User’s Guide» (DS51317) для подробностей об использовании сценариев компоновщика.

Следующий пример является часами реального времени. Он использует несколько SFR. Описания для них находятся в файле p30f6014.h. Этот файл должен быть скомпонован с использованием специфического сценария компоновки, находящегося в файле p30f6014.g d.

ПРИМЕР 7-1. ЧАСЫ РЕАЛЬНОГО ВРЕМЕНИ

**

by

Пример часов реального времени для dsPIC

**

 

** используется 1-й таймер тактируемый от TCY ** и прерывание по истечению периода

*/Translated

#include <p30f6014.h>

/* Период Tim r1 для 1 ms при FOSC = 20 MHz */ #define TMR1 PERIOD 0x1388

struct clockType

 

 

{

 

 

unsigned int timer;

/* обратный счетчик, миллисекунды */

unsigned int ticks;

/* абсолютное время, миллисекунды */

unsigned int seconds; /* абсолютное время, секунды */

} volatile RTclock;

 

void reset clock(void)

 

{

 

 

RTclock.timer =

0;

/* очистка программных регистров */

RTclock.ticks =

0;

 

RTclock.seconds

= 0;

 

TMR1 = 0;

 

/* очистка 1-го таймера */

PR1 = TMR1_PERIOD;

/* установка 1-го регистра периода */

T1CONbits.TCS =

0;

/* установка внутреннего тактирования */

IPC0bits.T1IP =

4;

/* установка приоритета */

IFS0bits.T1IF =

0;

/* очистка флага прерывания */

IEC0bits.T1IE =

1;

/* разрешение прерывания */

SRbits.IPL = 3;

 

/* разрешение прерываний с уровнем 4-7*/

T1CONbits.TON =

1;

/* пуск таймера */

}

 

 

void __attribute__((__interrupt__)) _T1Interrupt(void) { static int sticks=0;

© 2008 Microchip Technology Inc.

DS51284H(ru) стр. 7-3

Соседние файлы в папке Микропроцессорная техника Сторожок