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

 
 
> вопросы по pic24, помогите новичку)
yliya
сообщение Nov 24 2012, 11:09
Сообщение #1





Группа: Новичок
Сообщений: 7
Регистрация: 22-11-12
Из: Украина
Пользователь №: 74 519



Здраствуйте!!!
помогите, пожалуйста...

Измерить временной интервал. Входные сигналы являются сигналами логического уровня ТТЛ. 2 входных сигнала (от двух фотодатчиков).
Использую микроконтроллер PIC24F16KA102 (28 ножек), семисегментную индикацию (5 индикаторов), интерфейс SPI.

по-быстрячку накидала алгоритм (прикрепила), начала писатьт прогу, застряла...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
yliya
сообщение Nov 29 2012, 18:05
Сообщение #2





Группа: Новичок
Сообщений: 7
Регистрация: 22-11-12
Из: Украина
Пользователь №: 74 519



Спасибо большое!!!) Буду дальше продвигаться!

/***************************************** Обработчик прерывания 1 ******************************************/

Написала для себя алгоритмик, а как реализовать не знаю...Хоть в правильном направлении иду?
// сохранение контекста ( регистр STATUS и аккумулятор W)
// проверка источника запроса прерывания (опрашиваем флаг)
// сброс флага источника прерывания
// восстановление контекста

void __attribute__ ((__interrupt__, no_auto_psv)) _INT0Interrupt(void)
{
INTCON2=0;
_INT0EP=0;
// что-то....

}

/***************************************** Обработчик прерывания 2 ******************************************/

void __attribute__ ((__interrupt__, no_auto_psv)) _INT1Interrupt(void)
{
INTCON2=0;
_INT1EP=0;
// что-то

}




Как найти источник прерываний (опросить флаги)?
В программе необходимо определить источник прерывания (с какой стороны пришел сигнал), зажеч светодиод (INT0 - первый светодиод, на RB2, INT1 - второй светодиод, на RB3). Посчитать интервал в секундах.

+ есть кнопка которая разрешает выполнение программы и запрещает (кнопка нажата - пошла прога, еще раз нажали- остановилась (наверное запретили прерывания))

Обработку кнопки я поместила в main:

/* Для запрещения/разрешения прерываний используются две ассемблерные вставки. Группа команд
push SR
mov #0xE0, w0
ior SR
выполняет сохранение в стеке содержимого регистра состояния (push SR), устанавливает уровень приоритета 7 для процессора,
запрещая тем самым пользовательские прерывания (mov #0xE0, w0 и ior SR).
// Для разрешения прерываний нужно просто извлечь из стека старое содержимое регистра.Это произойдет при нажатии на кнопку */

asm ("push SR"
"\n mov #0xE0, w0"
"\n ior SR");
while (_RA6 != 1);
asm("pop SR");
while(1);

}





Как найти источник прерываний (опросить флаги)?
В программе необходимо определить источник прерывания (с какой стороны пришел сигнал), зажеч светодиод (INT0 - первый светодиод, на RB2, INT1 - второй светодиод, на RB3). Посчитать интервал в секундах.

+ есть кнопка которая разрешает выполнение программы и запрещает (кнопка нажата - пошла прога, еще раз нажали- остановилась (наверное запретили прерывания))

Обработку кнопки я поместила в main:

/* Для запрещения/разрешения прерываний используются две ассемблерные вставки. Группа команд
push SR
mov #0xE0, w0
ior SR
выполняет сохранение в стеке содержимого регистра состояния (push SR), устанавливает уровень приоритета 7 для процессора,
запрещая тем самым пользовательские прерывания (mov #0xE0, w0 и ior SR).
// Для разрешения прерываний нужно просто извлечь из стека старое содержимое регистра.Это произойдет при нажатии на кнопку */

asm ("push SR"
"\n mov #0xE0, w0"
"\n ior SR");
while (_RA6 != 1);
asm("pop SR");
while(1);

}
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- yliya   вопросы по pic24   Nov 24 2012, 11:09
- - Ruslan1   0. К сожалению, ничего не прикрепилось. 1. С чем и...   Nov 24 2012, 21:05
- - yliya   Индикацию так реализовала: // Таблица изображения...   Nov 28 2012, 18:04
|- - volodya   Цитата(yliya @ Nov 28 2012, 20:04) Как из...   Nov 29 2012, 06:26
|- - evc   Юля, дополню volodya: Цитата(yliya @ Nov 28 ...   Nov 29 2012, 11:49
|- - volodya   Цитата(evc @ Nov 29 2012, 13:49) int data...   Nov 29 2012, 12:59
|- - evc   Цитата(yliya @ Nov 29 2012, 22:05) Написа...   Nov 30 2012, 09:06
- - yliya   Я хочу научиться, а не просто "передрать и сд...   Dec 2 2012, 18:09
|- - evc   Цитата(yliya @ Dec 2 2012, 22:09) Я хочу ...   Dec 2 2012, 19:02
- - yliya   )))) Сделала так, чуть по другому. Мне надо знать ...   Dec 5 2012, 17:06
|- - volodya   Цитата(yliya @ Dec 5 2012, 19:06) Сделала...   Dec 6 2012, 06:34
|- - evc   В правильном направлении двигаетесь, Юля. Если я х...   Dec 6 2012, 08:11
- - yliya   Спасибо огромное за ценные замечания) Обязательно ...   Dec 11 2012, 17:44
|- - volodya   Цитата(yliya @ Dec 11 2012, 19:44) но ......   Dec 12 2012, 07:33
|- - evc   Цитата(volodya @ Dec 12 2012, 11:33) Если...   Dec 12 2012, 08:50
|- - volodya   Цитата(evc @ Dec 12 2012, 10:50) Опечат...   Dec 12 2012, 12:06
|- - evc   Цитата(volodya @ Dec 12 2012, 16:06) Опеч...   Dec 12 2012, 13:01
- - yliya   .   Dec 11 2012, 17:44


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

 


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


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