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

 
 
> вопросы по 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 28 2012, 18:04
Сообщение #2





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



Индикацию так реализовала:

// Таблица изображения чисел и символов (0,1,2,3,4,5,6,7,8,9) для индикатора
const unsigned char digit[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

#define f 5 // Частота обновления результата измерения в предварительном программном буфере, гц.
#define nsum (200/f) // Количество слогаемых при усреднении результата измерения nsum=Fпрер/f.
int data, rez, n, temp, SYM[5];

void __attribute__ ((__interrupt__, no_auto_psv)) _T1Interrupt(void)
{
_T1IF = 0;
if (rez==T1)
{

// перевод 5-ти значного числа в десятично-символьное число

data=data+rez; //data - преобразуемое число,
n++;
if (n==nsum)
{
data=data/n;
if (data > 99999) data=99999;
data=data*10; // умножим число на 10, чтобы вывести один знак после запятой
temp=data/10000;

SYM[4]=digit[temp];
data=data-temp*10000;
temp=data/1000;

SYM[0]=digit[temp];
data=data-temp*1000;
temp=data/100;

SYM[1]=digit[temp];
data=data-temp*100;
temp=data/10;

SYM[2]=digit[temp];
data=data-temp*10;
temp=data;

SYM[3]=digit[temp];
data=0;
n=0;
}
}
}

Потом передаю через SPI

void SPI1MasterInit(void)
{

SPI1STATbits.SPIEN = 0;
SPI1CON1 = 0;
SPI1STATbits.SPIEN = 0; // отключить интерфейс SPI путем сброса бита SPIEN регистра состояния SPI1STAT
SPI1CON1 = 0; // очистить регистр управления интерфейса SPI1

// Используем две сигнальные линии (синхронизации передачи SCK1 и выходных данных SDO1), управляются микроконтроллером
SPI1CON1bits.DISSCK = 0; // бит DISSCK регистра управления SPI1CON сброшены
SPI1CON1bits.DISSDO = 0; // бит DISSDO регистра управления SPI1CON сброшены
SPI1CON1bits.MODE16 = 0; // для 8-битной посылки данных бит MODE16 регистра управления сброшен
SPI1CON1bits.MSTEN = 1; // микроконтроллер в режиме «ведущего», устанавливаем бит MSTEN
SPI1STATbits.SPIEN = 1; // включаем SPI - интерфейс

}

///// Передача данных на управляемый регистр

void peredacha (void)
{

// передается строка (массив) символов

char *pSYM = SYM[5];
_SPI1IF = 0;
SPI1MasterInit();
while (*pSYM!= 0)
{
// Для передачи одного байта записываем его в регистр SPI1BUF, микроконтроллер выполняет все циклы синхронизации передачи каждого бита

SPI1BUF = *pSYM++;
while (_SPI1IF == 0);
_SPI1IF = 0;
}
SPI1STATbits.SPIEN = 0; // выключаем SPI - интерфейс
while(1);
}




Как измерить интервал в секундах от начала первого сигнала до начала второго?

Сделаю два обработчика прерываний (сигнал 1 появляется на INT0, сигнал 2 появляется на INT1 ), появляются один за другим.Запуталась...как это реализовать.



Сообщение отредактировал yliya - Nov 28 2012, 18:05
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- yliya   вопросы по pic24   Nov 24 2012, 11:09
- - Ruslan1   0. К сожалению, ничего не прикрепилось. 1. С чем и...   Nov 24 2012, 21:05
|- - 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
- - 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 Текстовая версия Сейчас: 20th July 2025 - 11:25
Рейтинг@Mail.ru


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