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

 
 
> вопросы по 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
сообщение Dec 5 2012, 17:06
Сообщение #2





Группа: Новичок
Сообщений: 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;

}




// Счет времени там... если... тыры пыры не обращайте внимания) там неправильно...посчитаю правильно в самих обработчиках и там же пошлю на индикацию
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
- - 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


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

 


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


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