реклама на сайте
подробности

 
 
> Макрос для работы с портами в С30, Позволяет описание порта произвести в одном месте
DL36
сообщение Mar 26 2010, 06:41
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 460
Регистрация: 5-10-06
Из: Херсон
Пользователь №: 21 006



Раньше вроде выкладывал здесь но найти не смог.
Опираясь на статью об атомарном доступе я приспособил общеизвестные макросы под С30.

Один раз определив вывод
#define DATA A, 10, H с ним можно делать
Код
OPEND_DRAIN_ON(OUT0);   // Установить открытый сток
  SET_DIR(OUT0,Out);      // Настроить на вывод
  AD1PCFG = ENABLE_ALL_DIG_0_15;
  ANALOG_INPUT_ON(1);     // Подключить аналоговый вход
  ANALOG_INPUT_OFF(1);    // Отключить аналоговый вход

  if (SIGNAL(IMPUT0))     // На входе уровень активный?
  ON(OUT0);               // Установить активный уровень
  OFF(OUT0);              // Сбросить активный уровень
  HIGH(OUT0);             // Установить высокий уровень
  LOW(OUT0);              // Установить низкий уровень
  TOGGLE(OUT0);           // Инвертировать выход
  if (LATCH(OUT0))        // Уровень активный?
  if (DIR_IS_OUT(OUT0))   // Направление на вывод?
  if (DIR_IS_IN(OUT0))    // Направление на вход?
  Tmp = BITNUM(OUT0);     // Возвращает номер бита

Сейчас добавил работу с внешними прерываниями и контролем за изменением состояния
Код
EDGE_INT(BIT_DATA) = 1; - Позволяет установить фронт срабатывания
  F_INT(BIT_DATA) = 0;    - Позволяет проверить или сбросить флаг
  P_INT(BIT_DATA,pri);    - установить приоритет обозначенного вывода
  INTInterrupt(BIT_DATA)  - сделать подстановку в функции обработчика

Обработчик прерывания, к примеру, для вывода (BIT_DATA A, 14, H) будет выглядеть так
Код
void __attribute__((interrupt, no_auto_psv)) INTInterrupt(BIT_DATA) (void)  
Преобразуется к виду
void __attribute__((interrupt, no_auto_psv)) _INT3Interrupt (void)

Для контроля изменения состояния.
Код
CH_EN(BIT_DATA) = 1;    - Разрешить контроль изменения состояния
  CH_PU(BIT_DATA) = 1;    - Включить подтягивающие резисторы
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 17:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01344 секунд с 7
ELECTRONIX ©2004-2016