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

 
 
 
Reply to this topicStart new topic
> Макрос для работы с портами в С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
zltigo
сообщение Mar 26 2010, 08:35
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(DL36 @ Mar 26 2010, 09:41) *
Раньше вроде выкладывал здесь но найти не смог.

Moderator:
Даже невеликий по возможностям поиск форума справляется - расширенный поиск по автору поста `DL36` и слову, например, `макрос`.
http://electronix.ru/forum/index.php?showt...30&start=30
Не полодите, пожалуйса, дублей.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
DL36
сообщение Mar 26 2010, 09:58
Сообщение #3


Местный
***

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



Цитата(zltigo @ Mar 26 2010, 11:35) *
Moderator:
Даже невеликий по возможностям поиск форума справляется - расширенный поиск по автору поста `DL36` и слову, например, `макрос`.
http://electronix.ru/forum/index.php?showt...30&start=30
Не полодите, пожалуйса, дублей.

Спасибо, честно искал.
Удалите топик, а я там просто обновление допишу, так правильнее будет.
Go to the top of the page
 
+Quote Post

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

 


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


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