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

 
 
> Помогите с кодом пожалуйста.
ps1x
сообщение Oct 31 2006, 20:58
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284



Вот такой вот код, по идее должен подсчитывать длину 1 пришедшего импульса нулевого уровня и записывать в еепром. Прерывание настроено на спад. Импульс точно есть и точно больше 100 us по длине. Что не так???
Код
int i;
char run=1;
eeprom int dat1=0;

// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{                      
if (run)
{
while (!PORTB.6)
{      
delay_us(10);
i++;
}
run=0;
}      
dat1=i;
}
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SasaVitebsk
сообщение Oct 31 2006, 21:56
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(ps1x @ Oct 31 2006, 23:58) *
Вот такой вот код, по идее должен подсчитывать длину 1 пришедшего импульса нулевого уровня и записывать в еепром. Прерывание настроено на спад. Импульс точно есть и точно больше 100 us по длине. Что не так???
Код
int i;
char run=1;
eeprom int dat1=0;

// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{                      
if (run)
{
while (!PORTB.6)
{      
delay_us(10);
i++;
}
run=0;
}      
dat1=i;
}


Обычно делается не так, а если ещё точнее, то так вообще не делается. smile.gif
Прерываеия существуют для того, чтобы освобождать процессор от задержек. А Вы прямо в прерывании её вставляете.
Обычно прерывание настраивается по срезу импульса (или наоборот) и там инициализируется таймер, а по фронту снимается значение таймера. Учитывая, что значение реакции на прерывание почти одинаковое, то получается более-менее точно.
Go to the top of the page
 
+Quote Post



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

 


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


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