- •Глава 1. Сведения о компиляторе
- •1.1.Введение
- •1.2. Основные вопросы
- •1.3. Описание компилятора и документация
- •1.4. Компилятор и другие средства разработки
- •1.5. Набор возможностей компилятора
- •1.5.1. Стандарт ANSI Си
- •1.5.2. Оптимизация
- •1.5.3. Поддержка стандартной ANSI библиотеки
- •1.5.4. Гибкие модели памяти
- •1.5.5. Драйвер компилятора
- •Глава 2. Отличия 16-битового компилятора от ANSI
- •2.1. Введение
- •2.2. Основные вопросы
- •2.3. Отличия ключевых слов
- •2.3.1. Определение атрибутов переменных
- •2.3.2. Определение атрибутов функций
- •2.3.3. Inline функции
- •2.3.4. Переменные в определенных регистрах
- •2.3.4.1. Определение глобальных регистровых переменных
- •2.3.4.2. Определение локальных регистровых переменных
- •2.3.5. Комплексные числа
- •2.3.6. Целые размером в двойное слово
- •2.3.7. Ссылки на тип с помощью typeof
- •2.4. Отличия операторов
- •2.4.1. Метки как значения
- •2.4.2. Условные операторы с опущенными операндами
- •2.4.3. Диапазоны case
- •2.5. Отличия выражений
- •2.5.1. Двоичные константы
- •Глава 3. Использование компилятора в командной строке
- •3.1. Введение
- •3.2. Основные вопросы
- •3.3. Обзор
- •3.4. Соглашение для имен файлов
- •3.5. Опции
- •3.5.1. Опции, специфические для устройств dsPIC
- •3.5.2. Опции для управления типом результатов
- •3.5.3. Опции для управления диалектом Cи
- •3.5.5. Опции для отладки
- •3.5.6. Опции для управления оптимизацией
- •3.5.7. Опции для управления препроцессором
- •3.5.8. Опции для ассемблера
- •3.5.9. Опции для компоновщика
- •3.5.10. Опции для поиска в каталогах
- •3.5.11. Опции для соглашений по генерации кода
- •3.6. Переменные окружения
- •3.7. Предопределенные имена макро
- •3.9. Компиляция нескольких файлов в командной строке
- •3.10. Особенные символы
- •Глава 4. Среда периода исполнения
- •4.1. Введение
- •4.2. Основные вопросы
- •4.3. Адресное пространство
- •4.4. Запуск и инициализация
- •4.5. Пространства памяти
- •4.6. Модели памяти
- •4.6.1. Ближние и дальние данные
- •4.6.2. Ближний и дальний код
- •4.7. Расположение кода и данных
- •4.8. Программный стек
- •4.9. Использование стека в Си
- •4.11. Соглашения по вызову функций
- •4.11.1. Параметры функции
- •4.11.2. Возвращаемое значение
- •4.12. Соглашения о регистрах
- •4.13. Двоичная инверсия и модульная адресация
- •4.14.1. Загрузочные и защищенные константы
- •4.14.2. Строковые константы как аргументы
- •4.14.3. Переменные с квалификатором const в безопасной Flash
- •4.14.4. Модель совместимости объектов
- •Глава 5. Типы данных
- •5.1. Введение
- •5.2. Основные вопросы
- •5.3. Представление данных
- •5.4. Целые
- •5.5. С плавающей точкой
- •5.6. Указатели
- •Глава 6. Дополнительные типы указателей Си
- •6.1. Введение
- •6.2. Управляющие PSV указатели
- •6.2.1. Определение данных для управления доступом PSV
- •6.2.2. Управляемый доступ PSV
- •6.2.3. Рассмотрение ISR
- •6.3. PMP указатели
- •6.3.1. Инициализация PMP
- •6.3.2. Объявление нового пространства памяти
- •6.3.3. Определение переменных в пространстве PMP
- •6.4. Внешние указатели
- •6.4.1. Объявление нового пространства памяти
- •6.4.2. Определение переменных во внешнем пространстве
- •6.4.3. Определение способа доступа к пространству памяти
- •6.4.3.2. Функции записи
- •6.4.4. Пример внешней памяти
- •Глава 7. Файлы поддержки устройства
- •7.1. Введение
- •7.2. Основные вопросы
- •7.3. Файлы заголовков процессора
- •7.4. Файлы определения регистров
- •7.5. Использование SFR
- •7.6. Использование макросов
- •7.6.1. Макросы настройки битов конфигурации
- •7.6.2. Макросы использования ассемблера inline
- •7.6.3. Макросы выделения памяти данных
- •7.6.4. Макросы объявления ISR
- •7.7. Адресация EEDATA из Си - только для dsPIC30F
- •7.7.1. Доступ к EEDATA через PSV
- •7.7.2. Доступ к EEDATA посредством команд TBLRDx
- •7.7.3. Дополнительные источники информации
- •Глава 8. Прерывания
- •8.1. Введение
- •8.2. Основные вопросы
- •8.3. Написание программы обработки прерывания
- •8.3.1. Рекомендации по написанию ISR
- •8.3.3. Кодирование ISR
- •8.3.4. Использование макросов для объявления простых ISR
- •8.4. Запись вектора прерывания
- •8.4.1. Вектора прерываний dsPIC30F (без SMPS)
- •8.4.3. Вектора прерываний PIC24F
- •8.4.4. Вектора прерываний dsPIC33F/PIC24H
- •8.5. Сохранение контекста в ISR
- •8.7. Вложенные прерывания
- •8.8. Разрешение/запрещение прерываний
- •8.9. Разделение памяти между основной программой и ISR
- •8.9.1. Разработка проблем
- •8.9.2. Разработка решений
- •8.9.3. Пример приложения
- •8.10. Использование PSV в ISR
- •Глава 9. Совместное использование ассемблера и Си
- •9.1. Введение
- •9.2. Основные вопросы
- •9.3. Смесь переменных и функций на ассемблере и Си
- •9.4. Использование ассемблера inline
- •Приложение A. Определяемое реализацией поведение
- •A.12. Квалификаторы
- •A.13. Деклараторы
- •A.14. Операторы
- •A.17. Сигналы
- •A.18. Потоки и файлы
- •A.20. Errno
- •A.22. Abort
- •A.23. Exit
- •A.24. Getenv
- •A.25. Система
- •A.26. Strerror
- •Приложение B. Встроенные функции
- •B.2. Список встроенных функций
- •Приложение C. Диагностика
- •Приложение D. Компиляторы Си PIC18 и PIC24/dsPIC
- •D.6. Использование стека
- •D.11. Банк доступа
- •D.12. Inline ассемблер
- •D.13. Прагмы
- •D.14. Модели памяти
- •D.15. Соглашения о вызове
- •D.16. Код запуска
- •D.17. Управляемые компилятором ресурсы
- •D.18. Оптимизация
- •D.20. Определяемое реализацией поведение
- •D.21. Битовые поля
Глава 8. Прерывания
При использовании атрибута interrupt, пожалуйста определите либо no_auto_psv, либо auto_psv. Если ничего не будет определено, будет выдано предупреждение и принято auto_psv.
8.3.3. Кодирование ISR
|
|
Следующий прототип декларирует функцию isr0 как обработчик прерывания: |
|||||||
|
|
void __attribute__((__interrupt__)) isr0(void); |
|||||||
|
|
Как видно из этого прототипа, функция обслуживания прерывания не должна иметь |
|||||||
|
|
параметров и не может возвращать значение. Если необходимо, компилятор |
|||||||
|
|
организует |
сохранение всех рабочих |
регистров, а также регистра состояния и |
|||||
|
|
регистра счетчика циклов. Другие переменные |
|
. |
|||||
|
|
могут быть сохранены указанием их |
|||||||
|
|
|
|
|
|
|
|
A |
|
|
|
имен как параметров атрибута interrupt. Например, чтобы заставить компилятор |
|||||||
|
|
автоматически сохранять и восстанавливать переменные var1 и var2, используется |
|||||||
|
|
следующий прототип: |
Wilson |
|
|
||||
|
|
|
|
|
|
|
|
||
|
|
void __attribute__((__interrupt |
(__save__(var1,var2)))) |
||||||
|
|
isr0(void); |
|
|
|
|
|
||
|
|
Чтобы заставить компилятор использовать быстрое сохранение контекста |
|||||||
|
|
(использование команд push. и pop.s), надо пометить функцию атрибутом |
|||||||
|
|
shadow (см. п. 2.3.2. «Определение атрибутов функций»). Например: |
|||||||
|
|
void __attribute__((__interrupt |
, __shadow__)) isr0(void); |
||||||
|
|
8.3.4. Использование макросов для объявления простых ISR |
|||||||
|
|
Если обработчик |
прерывания не требует никаких дополнительных параметров |
||||||
|
|
|
|
|
by |
|
|
|
|
|
|
атрибута прерывания, тогда может быть использован упрощенный синтаксис. |
|||||||
|
|
Следующие макросы определены в зависящих от устройства файлах заголовка: |
|||||||
|
|
#define _ISR __attri ute__((interrupt)) |
|
||||||
|
|
#define _ISRFAST __attribute__((interrupt, shadow)) |
|||||||
|
|
исключенияTranslatedв основной и альтернативной таблицах, который занимает одно |
|||||||
|
|
Например, чтобы объявить обработчик прерывания для прерываний от timer1: |
|||||||
|
|
#include <p30fxxxx.h> |
|
|
|
|
|||
|
|
void |
ISR |
T1Int rrupt(void); |
|
|
|
||
|
|
Чтобы объявлять обработчик прерывания для прерывания от SPI1 с быстрым |
|||||||
|
|
сохранением контекста: |
|
|
|
|
|||
|
|
#include <p30fxxxx.h> |
|
|
|
|
|||
|
|
void |
ISRFAST |
SPI1Interrupt(void); |
|
|
|||
8.4. |
Запись вектора прерывания |
|
|
|
|||||
|
|
Устройства dsPIC30F/33F и PIC24F/H имеют два таблицы векторов прерываний — |
|||||||
|
|
основную и альтернативную, и каждая содержит несколько векторов для |
|||||||
|
|
исключительных ситуаций. |
|
|
|
|
|||
|
|
Каждый источник исключительной ситуации имеет связанный с ним вектор |
|||||||
|
|
программное слово, как показано в таблицах ниже. Альтернативный вектор |
|||||||
|
|
используется, когда установлен бит ALTIVT в регистре INTCON2. |
|||||||
|
|
|
|||||||
|
|
Примечание Сброс устройства не управляется таблицей векторов прерывания. |
|||||||
|
|
|
|
Вместо этого при сбросе устройства программный счетчик |
|||||
|
|
|
|
очищается. Это заставляет процессор начинать выполнение с |
|||||
|
|
|
|
нулевого адреса. По соглашению сценарий компоновки |
|||||
|
|
|
|
устанавливает в этой позиции команду GOTO, которая передает |
|||||
|
|
|
|
управление модулю запуска среды исполнения Си. |
|||||
|
|
|
|
|
|
|
|
|
|
Для активации прерывания, адрес функции должен быть установлен по соответствующему адресу одной из таблиц векторов, а функция должна сохранять
© 2008 Microchip Technology Inc. |
DS51284H(ru) стр. 8-3 |
16-битовый компилятор Си. Руководство
любые системные ресурсы, которые она использует. Она должна возвращать управление в задачу переднего плана, используя команду процессора RETFIE. Функции обслуживания прерывания могут быть написаны на Cи. Когда Си функция определяется как обработчик прерывания, компилятор организует сохранение всех системных ресурсов, которые он использует, и возвращение из функции с использованием подходящей команды. Компилятор может дополнительно установить в таблице векторов прерываний адрес функции обслуживания прерывания.
Чтобы заставить компилятор заполнить вектор прерывания указателем на функцию
обслуживания этого прерывания, назовите функцию, как обозначено в следующей |
|
|
. |
таблице. Например, вектор ошибки стека автоматически будет заполнен, если |
|
определена следующая функция: |
A |
|
void __attribute__((__interrupt__)) _StackError(void);
Обратите внимание на необходимость использования подчеркивания в начале
обеспечить свой обработчик Wilsonпрерываний по умолчанию объявив функцию обслуживания прерывания с именем DefaultInterrupt.
имени. Аналогично, альтернативный вектор ошибки стека будет автоматически заполнен, если определена следующая функция:
void __attribute__((__interrupt )) _AltStackError(void);
Опять обратите внимание на ведущее подчеркивание.
Для всех векторов прерываний без заданных обработчиков, будет установлен
обработчик по умолчанию. Обработчик по умолчанию обеспечивается
компоновщиком и представляет собой просто сброс устройства. Приложение может
Последние девять векторов прерывания в каждой таблице не имеют предопределенных аппаратных функций. Вектора для этих прерываний могут быть
заполнены с использованием имен, указанных в следующей таблице, или можно |
|
использовать более подходящиеby |
приложению имена, одновременно указывая точку |
входаTranslatedнужного вектора с помощью параметров irq или altirq атрибута
interrupt. Например, чтобы определить, что функция использует основной вектор прерывания номер 52, используйте следующее:
void attribu __((__interrupt__(__irq__(52)))) MyIRQ(void);
Аналогично, для того, чтобы определить, что функция использует альтернативный вектор прерывания пятьдесят два, используйте следующее:
void attribute__((__interrupt__(__altirq__(52)))) MyAltIRQ(void);
Число после irq/altirq может быть одним из номеров вектора прерывания от 45 до 53. Если использован параметр irq атрибута прерывания, компилятор создает внешний символ Interruptn, где n — номер вектора. Следовательно, идентификаторы Cи от _Interrupt45 до _Interrupt53 зарезервированы компилятором. Аналогично, если использован параметр altirq атрибута прерывания, компилятор создает внешний символ _AltInterruptn, где n — номер вектора. Следовательно, идентификаторы Cи от _AltInterrupt45 до _AltInterrupt53 зарезервированы компилятором.
8.4.1. Вектора прерываний dsPIC30F (без SMPS)
На настоящее время SMPS имеют только dsPIC30F1010, dsPIC30F2020 и dsPIC30F2023. Остальные устройства dsPIC30F без SMPS.
ТАБЛИЦА 8-1. ВЕКТОРА ПРЕРЫВАНИЙ dsPIC30F (БЕЗ SMPS)
Номер |
Основной |
Альтернативный |
Описание |
|
|
|
|
нет |
_ReservedTrap0 |
_AltReservedTrap0 |
Зарезервирован |
нет |
_OscillatorFail |
_AltOscillatorFail |
Неисправность генератора |
|
|
|
|
нет |
_AddressError |
_AltAddressError |
Ошибка адресации |
|
|
|
|
нет |
_StackError |
_AltStackError |
Ошибка стека |
|
|
|
|
DS51284H(ru) стр. 8-4 |
© 2008 Microchip Technology Inc. |
Глава 8. Прерывания
ТАБЛИЦА 8-1. (ПРОД-Е) ВЕКТОРА ПРЕРЫВАНИЙ dsPIC30F (БЕЗ SMPS)
Номер |
Основной |
|
Альтернативный |
|
Описание |
|
|
|
|
|
|
|
|
нет |
_MathError |
|
_AltMathError |
|
|
Математическая ошибка |
нет |
_ReservedTrap5 |
|
_AltReservedTrap5 |
|
|
Зарезервирован |
|
|
|
|
|
|
|
нет |
_ReservedTrap6 |
|
_AltReservedTrap6 |
|
|
Зарезервирован |
|
|
|
|
|
|
|
нет |
_ReservedTrap7 |
|
_AltReservedTrap7 |
|
|
Зарезервирован |
|
|
|
|
|
|
|
0 |
_INT0Interrupt |
|
_AltINT0Interrupt |
|
|
INT0, внешнее прерывание 0 |
|
|
|
|
|
|
|
1 |
_IC1Interrupt |
|
_AltIC1Interrupt |
|
|
IC1, вход захвата 1 |
|
|
|
|
|
|
|
2 |
_OC1Interrupt |
|
_AltOC1Interrupt |
|
|
OC1, выход сравнения 1 |
|
|
|
|
|
|
|
3 |
_T1Interrupt |
|
_AltT1Interrupt |
|
|
TMR1, переполнение таймера 1 |
|
|
|
|
|
|
|
4 |
_IC2Interrupt |
|
_AltIC2Interrupt |
|
. |
IC2, вход захвата 2 |
|
|
|
|
|
|
|
5 |
_OC2Interrupt |
|
_AltOC2Interrupt |
A |
|
OC2, выход сравнения 2 |
|
|
|
|
|
|
|
6 |
_T2Interrupt |
|
_AltT2Interrupt |
|
|
TMR2, переполнение таймера 2 |
|
|
|
|
|
|
|
7 |
_T3Interrupt |
|
_AltT3Interrupt |
|
|
TMR3, переполнение таймера 3 |
|
|
|
|
|
|
|
8 |
_SPI1Interrupt |
|
_AltSPI1Interrupt |
|
|
SPI1, 1-й последовательный |
|
|
|
интерфейс |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
_U1RXInterrupt |
|
_AltU1RXInterrupt |
|
|
UART1RX, приемник 1-го послед. |
|
|
|
асинхронного интерфейса |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
_U1TXInterrupt |
|
_AltU1TXInterrupt |
|
|
UART1TX, передатчик 1-го |
|
|
|
послед. асинхронн. интерфейса |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
_ADCInterrupt |
|
_AltADCInterrupt |
|
|
ADC преобразование окончено |
|
|
|
|
|
|
|
12 |
_NVMInterrupt |
|
_AltNVMInterrupt |
|
|
NVM запись завершена |
|
|
|
Wilson |
|
|
|
13 |
_SI2CInterrupt |
|
_AltSI2CInterrupt |
|
|
I2C ведомый |
14 |
_MI2CInterrupt |
|
_AltMI2CInterrupt |
|
|
I2C ведущий |
15 |
_CNInterrupt |
|
_AltCNInterrupt |
|
|
CN изменение входа |
|
|
|
|
|
|
|
16 |
_INT1Interrupt |
by |
_AltINT1Interrupt |
|
|
INT1, внешнее прерывание 1 |
|
|
|
|
|
|
|
17 |
_IC7Interrupt |
|
_AltIC7Interrupt |
|
|
IC7, вход захвата 7 |
|
|
|
|
|
|
|
18 |
IC8Interrupt |
|
_AltIC8Interrupt |
|
|
IC8, вход захвата 8 |
|
|
|
|
|
|
|
19 |
OC3Interrupt |
|
_AltOC3Interrupt |
|
|
OC3, выход сравнения 3 |
|
|
|
|
|
|
|
20 |
OC4Int rrupt |
|
_AltOC4Interrupt |
|
|
OC4, выход сравнения 4 |
|
|
|
|
|
|
|
21 |
T4In errupt |
|
_AltT4Interrupt |
|
|
TMR4, переполнение таймера 4 |
|
|
|
|
|
|
|
22 |
T5Interrupt |
|
_AltT5Interrupt |
|
|
TMR5, переполнение таймера 5 |
|
|
|
|
|
|
|
23 |
INT2Interrupt |
|
_AltINT2Interrupt |
|
|
INT2, внешнее прерывание 2 |
|
|
|
|
|
|
|
24 |
U2RXInterrupt |
|
_AltU2RXInterrupt |
|
|
UART2RX, приемник 2-го послед. |
|
|
|
асинхронного интерфейса |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
U2TXInterrupt |
|
_AltU2TXInterrupt |
|
|
UART2TX, передатчик 2-го |
|
|
|
послед. асинхронн. интерфейса |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
26 |
SPI2Interrupt |
|
_AltSPI2Interrupt |
|
|
SPI2, 2-й последовательный |
|
|
|
интерфейс |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
C1Interrupt |
|
_AltC1Interrupt |
|
|
CAN1, комбинированный IRQ |
|
|
|
|
|
|
|
28 |
IC3Interrupt |
|
_AltIC3Interrupt |
|
|
IC3, вход захвата 3 |
Translated |
|
|
|
|
|
|
29 IC4Interrupt |
|
_AltIC4Interrupt |
|
|
IC4, вход захвата 4 |
|
|
|
|
|
|
|
|
30 |
_IC5Interrupt |
|
_AltIC5Interrupt |
|
|
IC5, вход захвата 5 |
|
|
|
|
|
|
|
31 |
_IC6Interrupt |
|
_AltIC6Interrupt |
|
|
IC6, вход захвата 6 |
|
|
|
|
|
|
|
32 |
_OC5Interrupt |
|
_AltOC5Interrupt |
|
|
OC5, выход сравнения 5 |
|
|
|
|
|
|
|
33 |
_OC6Interrupt |
|
_AltOC6Interrupt |
|
|
OC6, выход сравнения 6 |
|
|
|
|
|
|
|
34 |
_OC7Interrupt |
|
_AltOC7Interrupt |
|
|
OC7, выход сравнения 7 |
|
|
|
|
|
|
|
35 |
_OC8Interrupt |
|
_AltOC8Interrupt |
|
|
OC8, выход сравнения 8 |
|
|
|
|
|
|
|
36 |
_INT3Interrupt |
|
_AltINT3Interrupt |
|
|
INT3, внешнее прерывание 3 |
|
|
|
|
|
|
|
37 |
_INT4Interrupt |
|
_AltINT4Interrupt |
|
|
INT4, внешнее прерывание 4 |
|
|
|
|
|
|
|
38 |
_C2Interrupt |
|
_AltC2Interrupt |
|
|
CAN2, комбинированный IRQ |
|
|
|
|
|
|
|
39 |
_PWMInterrupt |
|
_AltPWMInterrupt |
|
|
PWM, конец периода |
|
|
|
|
|
|
|
40 |
_QEIInterrupt |
|
_AltQEIInterrupt |
|
|
QEI, сравнение позиции счетчика |
|
|
|
|
|
|
|
© 2008 Microchip Technology Inc. |
DS51284H(ru) стр. 8-5 |
16-битовый компилятор Си. Руководство
ТАБЛИЦА 8-1. (ПРОД-Е) ВЕКТОРА ПРЕРЫВАНИЙ dsPIC30F (БЕЗ SMPS)
Номер |
Основной |
Альтернативный |
|
Описание |
|
|
|
|
|
|
|
41 |
_DCIInterrupt |
_AltDCIInterrupt |
|
|
DCI CODEC, конец передачи |
42 |
_LVDInterrupt |
_AltLVDInterrupt |
|
|
PLVD, обнаружено низкое |
|
|
напряжения |
|||
|
|
|
|
|
|
|
|
|
|
|
|
43 |
_FLTAInterrupt |
_AltFLTAInterrupt |
|
|
FLTA MCPWM ошибка A |
|
|
|
|
|
|
44 |
_FLTBInterrupt |
_AltFLTBInterrupt |
|
|
FLTB MCPWM ошибка B |
|
|
|
|
|
|
45 |
_Interrupt45 |
_AltInterrupt45 |
|
|
Зарезервирован |
|
|
|
|
|
|
46 |
_Interrupt46 |
_AltInterrupt46 |
|
|
Зарезервирован |
|
|
|
|
|
|
47 |
_Interrupt47 |
_AltInterrupt47 |
|
. |
Зарезервирован |
|
|
||||
|
|
|
|
|
|
48 |
_Interrupt47 |
_AltInterrupt48 |
A |
|
Зарезервирован |
|
|
||||
|
|
|
|
|
|
49 |
_Interrupt49 |
_AltInterrupt49 |
|
|
Зарезервирован |
|
|
|
|
|
|
50 |
_Interrupt50 |
_AltInterrupt50 |
|
|
Зарезервирован |
|
|
|
|
|
|
51 |
_Interrupt51 |
Wilson |
|
|
Зарезервирован |
_AltInterrupt51 |
|
|
|||
52 |
_Interrupt52 |
_AltInterrupt52 |
|
|
Зарезервирован |
53 |
_Interrupt53 |
_AltInterrupt53 |
|
|
Зарезервирован |
8.4.2. Вектора прерываний d PIC30F (с SMPS)
На настоящее время SMPS имеют только dsPIC30F1010, dsPIC30F2020 и dsPIC30F2023. Остальные устройства dsPIC30F без SMPS.
ТАБЛИЦА 8-2. ВЕКТОРА ПРЕРЫВАНИЙ dsPIC30F (С SMPS)
Номер |
Основной |
by |
Альтернативный |
Описание |
|
||||
|
|
|
|
|
нет |
_ReservedTrap0 |
|
_AltReservedTrap0 |
Зарезервирован |
нет |
_OscillatorFail |
|
_AltOscillatorFail |
Неисправность генератора |
|
|
|
|
|
нет |
_AddressError |
|
_AltAddressError |
Ошибка адресации |
|
|
|
|
|
Translated |
|
_AltStackError |
Ошибка стека |
|
нет |
StackError |
|
||
нет |
MathError |
|
_AltMathError |
Математическая ошибка |
нет |
Reserv dTrap5 |
|
_AltReservedTrap5 |
Зарезервирован |
нет |
ReservedTrap6 |
|
_AltReservedTrap6 |
Зарезервирован |
нет |
ReservedTrap7 |
|
_AltReservedTrap7 |
Зарезервирован |
0 |
INT0Interrupt |
|
_AltINT0Interrupt |
INT0, внешнее прерывание 0 |
1 |
IC1Interrupt |
|
_AltIC1Interrupt |
IC1, вход захвата 1 |
2 |
OC1Interrupt |
|
_AltOC1Interrupt |
OC1, выход сравнения 1 |
3 |
T1Interrupt |
|
_AltT1Interrupt |
TMR1, переполнение таймера 1 |
|
|
|
|
|
4 |
Interrupt4 |
|
_AltInterrupt4 |
Зарезервирован |
|
|
|
|
|
5 |
OC2Interrupt |
|
_AltOC2Interrupt |
OC2, выход сравнения 2 |
|
|
|
|
|
6 |
T2Interrupt |
|
_AltT2Interrupt |
TMR2, переполнение таймера 2 |
|
|
|
|
|
7 |
T3Interrupt |
|
_AltT3Interrupt |
TMR3, переполнение таймера 3 |
|
|
|
|
|
8 |
SPI1Interrupt |
|
_AltSPI1Interrupt |
SPI1, 1-й последовательный |
|
интерфейс |
|||
|
|
|
|
|
|
|
|
|
|
9 |
_U1RXInterrupt |
|
_AltU1RXInterrupt |
UART1RX, приемник 1-го послед. |
|
асинхронного интерфейса |
|||
|
|
|
|
|
|
|
|
|
|
10 |
_U1TXInterrupt |
|
_AltU1TXInterrupt |
UART1TX, передатчик 1-го |
|
послед. асинхронн. интерфейса |
|||
|
|
|
|
|
|
|
|
|
|
11 |
_ADCInterrupt |
|
_AltADCInterrupt |
ADC преобразование окончено |
|
|
|
|
|
12 |
_NVMInterrupt |
|
_AltNVMInterrupt |
NVM запись завершена |
|
|
|
|
|
13 |
_SI2CInterrupt |
|
_AltSI2CInterrupt |
I2C ведомый |
14 |
_MI2CInterrupt |
|
_AltMI2CInterrupt |
I2C ведущий |
15 |
_Interrupt15 |
|
_AltInterrupt15 |
Зарезервирован |
|
|
|
|
|
16 |
_INT1Interrupt |
|
_AltINT1Interrupt |
INT1, внешнее прерывание 1 |
|
|
|
|
|
17 |
_INT2Interrupt |
|
_AltINT2Interrupt |
INT2, внешнее прерывание 2 |
|
|
|
|
|
DS51284H(ru) стр. 8-6 |
© 2008 Microchip Technology Inc. |