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

 
 
 
Reply to this topicStart new topic
> Динамическая индикация
Neytrino
сообщение Jan 4 2011, 16:04
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 26-02-09
Пользователь №: 45 406



Люди, помогите мне понять, как организовать динамическую индикацию. Написал программу, все работает, но возникает вопрос, как только я начинаю опрашивать, скажем датчик температуры, в момент опроса, индикация останавливается на одной цифре, пока, не закончиться задержка для получения результата с датчика. И так каждый раз, вот хидер задержек
Код
#define Fosc 12000000
#define Fosc_Hz  Fosc
#define Fosc_kHz (Fosc/1000)
#define Fosc_MHz (Fosc_kHz/1000)
#define Fosc_GHz (Fosc_MHz/1000)
#define delay_ns(x) __delay_cycles(x*Fosc_GHz)
#define delay_us(x) __delay_cycles(x*Fosc_MHz)
#define delay_ms(x) __delay_cycles(x*Fosc_kHz)
#define delay_s(x) __delay_cycles(x*Fosc_Hz)

Я понимаю, из за чего так происходит, но вот как сделать индикацию не зависящую от задержек в программе, не представляю. Может посоветуете что-нить? Может сами задержки как-нить по другому организовать? Не пинайте сильно только sm.gif
Go to the top of the page
 
+Quote Post
rezident
сообщение Jan 4 2011, 16:30
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Типовое решение - метод конечных автоматов (КА). В бесконечном цикле вызываются по очереди все КА. Никаких задержек внутри них не используется. Просто там, где по алгоритму нужна задержка, переход в другое состояние КА происходит через такой же (как требуемая задержка) промежуток времени. Т.е. при входе в функцию КА проверяется: истек ли требуемый промежуток времени? Если не истек, то выход из функции. Если истек, то переход в следующее состояние КА.
Go to the top of the page
 
+Quote Post
Neytrino
сообщение Jan 4 2011, 16:50
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 26-02-09
Пользователь №: 45 406



Ого, что-то я запутался, ладно, почитаю повнимательнее про эти КА
Go to the top of the page
 
+Quote Post
ukpyr
сообщение Jan 4 2011, 16:58
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1 264
Регистрация: 17-06-08
Из: бандустан
Пользователь №: 38 347



обновление индикации вынести в прерывание таймера, заполнение буфера можно делать в основном цикле

Сообщение отредактировал ukpyr - Jan 4 2011, 16:59
Go to the top of the page
 
+Quote Post
Neytrino
сообщение Jan 4 2011, 17:20
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 26-02-09
Пользователь №: 45 406



Цитата(ukpyr @ Jan 4 2011, 22:58) *
обновление индикации вынести в прерывание таймера, заполнение буфера можно делать в основном цикле

А можно подробнее описать процесс?
Go to the top of the page
 
+Quote Post
Neytrino
сообщение Jan 9 2011, 12:02
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 26-02-09
Пользователь №: 45 406



Всем спасибо, разобрался
sm.gif
Go to the top of the page
 
+Quote Post

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

 


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


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