|
вопросы по pic24, помогите новичку) |
|
|
|
Nov 24 2012, 11:09
|
Группа: Новичок
Сообщений: 7
Регистрация: 22-11-12
Из: Украина
Пользователь №: 74 519

|
Здраствуйте!!! помогите, пожалуйста...
Измерить временной интервал. Входные сигналы являются сигналами логического уровня ТТЛ. 2 входных сигнала (от двух фотодатчиков). Использую микроконтроллер PIC24F16KA102 (28 ножек), семисегментную индикацию (5 индикаторов), интерфейс SPI.
по-быстрячку накидала алгоритм (прикрепила), начала писатьт прогу, застряла...
|
|
|
|
|
 |
Ответов
|
Dec 5 2012, 17:06
|
Группа: Новичок
Сообщений: 7
Регистрация: 22-11-12
Из: Украина
Пользователь №: 74 519

|
)))) Сделала так, чуть по другому. Мне надо знать в ту ли он сторону пошел вообще)
/*********************************** Обработчик прерывания 1 (INT0)(идет налево) ****************************/
void __attribute__ ((__interrupt__, no_auto_psv)) _INT0Interrupt(void) { _RB2=0; // засветили зеленый светодиод _RB3=1; // погасили красный светодиод IFS0bits.INT0IF =0; // обнуляем флаг INT0IF в регистре IFS0 IEC0bits.INT0IE=0; // запрещаем прерывания INT0, чтобы если произойдет второе событие на входе INT0, // до завершении цикла INT1, оно не сбило счет времени if (i==0) { T1CONbits.TON=1; // старт таймера 1 i=1; } else T1CONbits.TON=0; // cтоп таймера 1 tmr1Res = TMR1; TMR1=0; // обнуляем таймер 2 i=0; }
/***************************************** Обработчик прерывания 2 (INT1) (идет вправо) **************************/
void __attribute__ ((__interrupt__, no_auto_psv)) _INT1Interrupt(void) {
_RB2=1; // погасили зеленый светодиод _RB3=0; // засветили красный светодиод IFS1bits.INT1IF =0; // обнуляем флаг INT1IF в регистре IFS1 IEC1bits.INT1IE=0; // запрещаем прерывания INT1 if (j==0) { T2CONbits.TON=1; // старт таймера 2 j=1; } else T2CONbits.TON=0; // cтоп таймера 2 tmr2Res = TMR2; TMR2=0; // обнуляем таймер 2 j=0; }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
/************************************** Основная программа ***************************************************/ void main (void) { InitTimerAndInterrupts (); _RB2=1; // погасили светодиод 1 _RB3=1; // погасили светодиод 2 // Счет времени if (IFS0bits.INT0IF =1) { time = tmr1Res/256 /*предделитель таймера*/ / 1000/*для результата в милисекундах*/; // Результат, "молодец" } else time = tmr2Res/256 /*предделитель таймера*/ / 1000/*для результата в милисекундах*/; // Результат, "сходил налево"
// *************************************** Инициализация ******************************************************// // инициализация void InitTimerAndInterrupts (void) { // Настройка прерываний IEC0bits.INT0IE=1; // в регистре IEC0 прерывание INT0 - выставить бит 0, а также в регистре IEC1 прерывание INT1 - выставить бит 4 IEC1bits.INT1IE=1; // разрешаем прерывания на INT0 и INT1 // Настройка таймеров IFS0bits.T1IF = 0; // Clear Output Compare interrupt flag IEC0bits.T1IE = 1; // разрешаем прерывания таймеров IFS0bits.T2IF = 0; IEC0bits.T2IE = 1; // работа от внешнего источника тактового сигнала _TCS=1; _TSYNC = 1; // выполняется синхронизация внешнего сигнала _TCKPS=0011; // Настройки выводов TRISBbits.TRISB7 = 1; // выводы прерываний сконфигурированы на вход (RB7 и RB14) TRISBbits.TRISB14 = 1; TRISBbits.TRISB2 = 0; // выводы светодиодов сконфигурированы на выход (RB7 и RB14) TRISBbits.TRISB3 = 0; }
// Счет времени там... если... тыры пыры не обращайте внимания) там неправильно...посчитаю правильно в самих обработчиках и там же пошлю на индикацию
|
|
|
|
Сообщений в этой теме
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 yliya Спасибо большое!!!) Буду дальше продви... Nov 29 2012, 18:05 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 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
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|