Отговори на тема  [ 56 мнения ]  Отиди на страница Предишна  1, 2, 3, 4  Следваща
Работна температура 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Ное 27, 2012 9:27 pm
Мнения: 2011
Мнение Re: Работна температура
чака си но позволява да се използва interrupt или друг таймер.


Чет Юни 16, 2016 10:26 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 03, 2005 2:21 am
Мнения: 12765
Местоположение: София
Мнение Re: Работна температура
Тоест, загубено процесорно време?


Чет Юни 16, 2016 10:33 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Фев 07, 2012 11:22 pm
Мнения: 3084
Мнение Re: Работна температура
И ток на батерията.

Е, тая oригинална функция трябва да бъде забранена, поне в Release. :D
Една функция дилей10милисек трябва да е може би достъпна в Debug - за по-бързо светване на първия светодиод.
:D


Чет Юни 16, 2016 10:34 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Ное 27, 2012 9:27 pm
Мнения: 2011
Мнение Re: Работна температура
Защо да е загубено


Чет Юни 16, 2016 10:42 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Яну 20, 2009 11:54 pm
Мнения: 11338
Местоположение: "Занзибар"
Мнение Re: Работна температура
Пък ако беше под Windows антивирусът щеше да си сканиииира...

Майтап, ама нье! Който не е деасемблирал как се свири мелодията в игричка за Правец8 (Ябълка2) - хабер си найн от риъл тайм програмиранье!


Чет Юни 16, 2016 10:45 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Ное 21, 2004 11:31 pm
Мнения: 10088
Мнение Re: Работна температура
бонго,
ако искаш да те признаем за хакер, качи DD-WRT само с черна конзола :-"


Пет Юни 17, 2016 12:15 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 03, 2005 2:21 am
Мнения: 12765
Местоположение: София
Мнение Re: Работна температура
timt написа:
Защо да е загубено

Може и да не съм разбрал правилно.
По-нагоре спомена, че може да се използва прекъсване. Ако настъпи такова, мога ли да го обработя или първо чакам дилея да се издилеи и тогава? Ако не мога, значи е загубено време.


Пет Юни 17, 2016 12:26 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Ное 27, 2012 9:27 pm
Мнения: 2011
Мнение Re: Работна температура
Не те разбирам ама както и да е, не съм споменавал прекъсване по време на изчакването. А и нямам представа дали питаш или се заяждаш понеже съм убеден че си на ясно. Загубено процесорно време ;)


Пет Юни 17, 2016 12:46 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение Re: Работна температура
Ами чиста загуба си е, сложил съм го колкото да се види къде се мига, особенно пък миганията обикновенно ядът много безмислено време ако се правят така. Всякакви мигания, рефреши и др най-добре да стават или в прекъсване или някъде в основния цикъл но пак на база резултат от прекъсване, евентуално проверка на таймер.
Най-чисто да си пуснеш единия таймер да ти генерира някакъв кръгъл период, 1 ms не е зле, само трябва да вниамваш колко стоиш вътре да не с еокаже че само там стоиш. Принципно за няколко цикъла моце да си инкрементнеш и някакъв глобален таймер, както и да провериш променливи които ти генерират различни от основният периоди.
Не знам дали го обяснявам много разбираемо ... малко ме мързи да пиша :)


Пет Юни 17, 2016 1:00 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 03, 2005 2:21 am
Мнения: 12765
Местоположение: София
Мнение Re: Работна температура
timt написа:
Не те разбирам ама както и да е, не съм споменавал прекъсване по време на изчакването. А и нямам представа дали питаш или се заяждаш понеже съм убеден че си на ясно. Загубено процесорно време ;)

Нееднократно съм го споменавал тук, но да подесетя - на тема програмиране съм блондинка. :D
Не се заяждам и не се бъзикам. Може би трябваше първо да прегледам какво прави функцията и тогава да питам, но вече съм стрелял...

ToHu написа:
Ами чиста загуба си е, сложил съм го колкото да се види къде се мига, особенно пък миганията обикновенно ядът много безмислено време ако се правят така. Всякакви мигания, рефреши и др най-добре да стават или в прекъсване или някъде в основния цикъл но пак на база резултат от прекъсване, евентуално проверка на таймер.
Най-чисто да си пуснеш единия таймер да ти генерира някакъв кръгъл период, 1 ms не е зле, само трябва да вниамваш колко стоиш вътре да не с еокаже че само там стоиш. Принципно за няколко цикъла моце да си инкрементнеш и някакъв глобален таймер, както и да провериш променливи които ти генерират различни от основният периоди.
Не знам дали го обяснявам много разбираемо ... малко ме мързи да пиша :)

Добре го обясняваш. По някакъв подобен начин си организирам нещата до момента, но гледам че тоя дилей се използва доста масово, и проверявам да не съм се прекарал с излишно усложняване...


Последна промяна itso.t на Пет Юни 17, 2016 1:05 am, променена общо 1 път



Пет Юни 17, 2016 1:01 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение Re: Работна температура
timt написа:
Не те разбирам ама както и да е, не съм споменавал прекъсване по време на изчакването. А и нямам представа дали питаш или се заяждаш понеже съм убеден че си на ясно. Загубено процесорно време ;)

Може да не е изгубено време ако имаш поне някакъв елементарен таск мениджър, за малки процесори да се прави многозадачен и то добър таск мениджър не знам колко е оправдано, някога се е правило, но в момента тия малките са по скоро за прости неща. Иначе нищо не пречи да ти цъка единия таймер прекъсване на 1 мс и да превключваш задачите всяка 1 мс .. но то и тук има дърво, трябва да се прецение колко често да превключваш, и колко процеса може да си позволиш да връткаш да не се окаже, че времето в превключване на задачи е повече от времето за изпълнение на самите задачи.


Пет Юни 17, 2016 1:04 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение Re: Работна температура
itso.t написа:
timt написа:
Не те разбирам ама както и да е, не съм споменавал прекъсване по време на изчакването. А и нямам представа дали питаш или се заяждаш понеже съм убеден че си на ясно. Загубено процесорно време ;)

Нееднократно съм го споменавал тук, но да подесетя - на тема програмиране съм блондинка. :D
Не се заяждам и не се бъзикам. Може би трябваше първо да прегледам какво прави функцията и тогава да питам, но вече съм стрелял...

Функцията прави горе долу прави while, няма да се учудя ако и така е написана.
Аз редя всякакви такива неща в след стейт машината така че да се минава през тях на всяко завъртане на майна, но се влиза само ако има изпълнено някакво условие :
restart_wdt();
//---------------------------------------------------------------------------
// --------------------- start button debounce time -------------------------
if(start_deb)
{
if(time-start_timer> 200)
{
start_deb=false;
start = true;
push_deb=false;
push=false;
}
}
//---------------------------------------------------------------------------
// --------------------- push button debounce time -------------------------
if(push_deb)
{
if(time-push_timer > 100)
{
push_deb=false;
push = true;
start_deb=false;
start = false;
}
}

if(!blink_on || blink) // blink
{
switch(digit)
{
case 0: port_b|=0x01;
break;
case 1: port_b|=0x02;
break;
case 2: port_b|=0x04;
break;
case 3: port_b|=0x08;
}
}

нещо такова ...това е смао извадка


Пет Юни 17, 2016 1:15 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Ное 27, 2012 9:27 pm
Мнения: 2011
Мнение Re: Работна температура
Като радист с електронна машинка ;)

Програмата е от рода докато си с жена си някой друг да подгрява любовницата докато и обърнеш внимание и на нея. :D

п.п ТоНи, аз се сетих че мога да спретна за бутона нещо подобно но исках да проверя дали няма нещо съкратено за тази цел. С флаг е идея но не е за препоръчване за повече от един бутон. При мен е друг проблема но за по нататък ще го измисля. Имам матрична клавиатура и искам само при едно натискане да не се повтаря няколко пъти ако се задържи бутона.


Пет Юни 17, 2016 1:37 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Фев 07, 2012 11:22 pm
Мнения: 3084
Мнение Re: Работна температура
Щом е матрична клавиатура - вероятно има и дисплей?
Ако има , той може да се окаже забавящо нещо. Зумер за "озвучаване" на натисканията? Ако имаш и още нещо,дето иска непрекъснато внимание - и вградената функция "дилей" отива към кошчето.
Функцията за откриване на бутон трябва да е къса и бърза(зависи и от хардуера). Трябва да открие натиснат бутон и да вдигне флаг, както и да запише някъде кода на открития бутон. Можеш да замислиш различни стратегии - например откриване на продължително натискане и съответен флаг, натискане на два бутона "едновременно" -което пък дава трети бутон. Та това е свързано с юзер интерфейса - който ти планираш.
Във всеки случай трябва да заделиш няколко байта рам и няколко флага.

Както Тони писа, стейт машина е добро нещо за клавиатура. След откриване на натиснат бутон, функцията вече остава в състояние "изчакване на отпускане" за този бутон, тоест реда и колоната на бутона се помнят докато се отпусне бутона. "Остава в състояние" означава запомняне на състоянието някъде и излизане от функцията , не да цикли в очакване на бутон.
След като се детектне отпускането - състоянието се променя на "откриване на първо натискане".


Пет Юни 17, 2016 7:39 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение Re: Работна температура
Ами и за матрична не е много по-различно, там няма как да натискаш два едновременно, не че няма но би следвало да е невалидно, е ако предвиждаш такива комбинации е друго. Идеята най-общо е, че можеш да го правиш с един флаг освен ако не следиш и за комбинации. Но принципа е този, дали флага е един или са 10 все тая. Можеш да проверяваш по раличен начин флаговете, но иначе е същото. Разбита се делея изобщо го забравяш.
Аз като писах стейт машина визирах тази за цялото нещо, но естествено може да имаш много стейт машини вкл.и за бутоните, но не знам дали си струва.
Бутоните искат дебоунсинг, ако го нямаш ще имаш грижи, а той пък се прави по различен начин, може да вдигнеш флаг и след Х време да провериш дали още е натиснат, или при всяко сваляне да триеш флага и ако времето в което е бил натиснат е късо да не го приемаш за натиснат, има и други варианти.


Пет Юни 17, 2016 8:25 am
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 56 мнения ]  Отиди на страница Предишна  1, 2, 3, 4  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 1 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни