|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 9:06 pm
| Автор |
Съобщение |
|
timt
Ранг: Форумен бог
Регистриран на: Вто Ное 27, 2012 9:27 pm Мнения: 2011
|
 Re: Работна температура
чака си но позволява да се използва interrupt или друг таймер.
|
| Чет Юни 16, 2016 10:26 pm |
|
 |
|
itso.t
Ранг: Форумен бог
Регистриран на: Чет Фев 03, 2005 2:21 am Мнения: 12765 Местоположение: София
|
 Re: Работна температура
Тоест, загубено процесорно време?
|
| Чет Юни 16, 2016 10:33 pm |
|
 |
|
stefan63
Ранг: Форумен бог
Регистриран на: Вто Фев 07, 2012 11:22 pm Мнения: 3084
|
 Re: Работна температура
И ток на батерията. Е, тая oригинална функция трябва да бъде забранена, поне в Release. Една функция дилей10милисек трябва да е може би достъпна в Debug - за по-бързо светване на първия светодиод. 
|
| Чет Юни 16, 2016 10:34 pm |
|
 |
|
timt
Ранг: Форумен бог
Регистриран на: Вто Ное 27, 2012 9:27 pm Мнения: 2011
|
 Re: Работна температура
Защо да е загубено
|
| Чет Юни 16, 2016 10:42 pm |
|
 |
|
bongo_x2
Ранг: Форумен бог
Регистриран на: Вто Яну 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 |
|
 |
|
itso.t
Ранг: Форумен бог
Регистриран на: Чет Фев 03, 2005 2:21 am Мнения: 12765 Местоположение: София
|
 Re: Работна температура
Може и да не съм разбрал правилно. По-нагоре спомена, че може да се използва прекъсване. Ако настъпи такова, мога ли да го обработя или първо чакам дилея да се издилеи и тогава? Ако не мога, значи е загубено време.
|
| Пет Юни 17, 2016 12:26 am |
|
 |
|
timt
Ранг: Форумен бог
Регистриран на: Вто Ное 27, 2012 9:27 pm Мнения: 2011
|
 Re: Работна температура
Не те разбирам ама както и да е, не съм споменавал прекъсване по време на изчакването. А и нямам представа дали питаш или се заяждаш понеже съм убеден че си на ясно. Загубено процесорно време 
|
| Пет Юни 17, 2016 12:46 am |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
 Re: Работна температура
Ами чиста загуба си е, сложил съм го колкото да се види къде се мига, особенно пък миганията обикновенно ядът много безмислено време ако се правят така. Всякакви мигания, рефреши и др най-добре да стават или в прекъсване или някъде в основния цикъл но пак на база резултат от прекъсване, евентуално проверка на таймер. Най-чисто да си пуснеш единия таймер да ти генерира някакъв кръгъл период, 1 ms не е зле, само трябва да вниамваш колко стоиш вътре да не с еокаже че само там стоиш. Принципно за няколко цикъла моце да си инкрементнеш и някакъв глобален таймер, както и да провериш променливи които ти генерират различни от основният периоди. Не знам дали го обяснявам много разбираемо ... малко ме мързи да пиша 
|
| Пет Юни 17, 2016 1:00 am |
|
 |
|
itso.t
Ранг: Форумен бог
Регистриран на: Чет Фев 03, 2005 2:21 am Мнения: 12765 Местоположение: София
|
 Re: Работна температура
Нееднократно съм го споменавал тук, но да подесетя - на тема програмиране съм блондинка. Не се заяждам и не се бъзикам. Може би трябваше първо да прегледам какво прави функцията и тогава да питам, но вече съм стрелял... Добре го обясняваш. По някакъв подобен начин си организирам нещата до момента, но гледам че тоя дилей се използва доста масово, и проверявам да не съм се прекарал с излишно усложняване...
Последна промяна itso.t на Пет Юни 17, 2016 1:05 am, променена общо 1 път
|
| Пет Юни 17, 2016 1:01 am |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
 Re: Работна температура
Може да не е изгубено време ако имаш поне някакъв елементарен таск мениджър, за малки процесори да се прави многозадачен и то добър таск мениджър не знам колко е оправдано, някога се е правило, но в момента тия малките са по скоро за прости неща. Иначе нищо не пречи да ти цъка единия таймер прекъсване на 1 мс и да превключваш задачите всяка 1 мс .. но то и тук има дърво, трябва да се прецение колко често да превключваш, и колко процеса може да си позволиш да връткаш да не се окаже, че времето в превключване на задачи е повече от времето за изпълнение на самите задачи.
|
| Пет Юни 17, 2016 1:04 am |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
 Re: Работна температура
Функцията прави горе долу прави 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 |
|
 |
|
timt
Ранг: Форумен бог
Регистриран на: Вто Ное 27, 2012 9:27 pm Мнения: 2011
|
 Re: Работна температура
Като радист с електронна машинка  Програмата е от рода докато си с жена си някой друг да подгрява любовницата докато и обърнеш внимание и на нея.  п.п ТоНи, аз се сетих че мога да спретна за бутона нещо подобно но исках да проверя дали няма нещо съкратено за тази цел. С флаг е идея но не е за препоръчване за повече от един бутон. При мен е друг проблема но за по нататък ще го измисля. Имам матрична клавиатура и искам само при едно натискане да не се повтаря няколко пъти ако се задържи бутона.
|
| Пет Юни 17, 2016 1:37 am |
|
 |
|
stefan63
Ранг: Форумен бог
Регистриран на: Вто Фев 07, 2012 11:22 pm Мнения: 3084
|
 Re: Работна температура
Щом е матрична клавиатура - вероятно има и дисплей? Ако има , той може да се окаже забавящо нещо. Зумер за "озвучаване" на натисканията? Ако имаш и още нещо,дето иска непрекъснато внимание - и вградената функция "дилей" отива към кошчето. Функцията за откриване на бутон трябва да е къса и бърза(зависи и от хардуера). Трябва да открие натиснат бутон и да вдигне флаг, както и да запише някъде кода на открития бутон. Можеш да замислиш различни стратегии - например откриване на продължително натискане и съответен флаг, натискане на два бутона "едновременно" -което пък дава трети бутон. Та това е свързано с юзер интерфейса - който ти планираш. Във всеки случай трябва да заделиш няколко байта рам и няколко флага.
Както Тони писа, стейт машина е добро нещо за клавиатура. След откриване на натиснат бутон, функцията вече остава в състояние "изчакване на отпускане" за този бутон, тоест реда и колоната на бутона се помнят докато се отпусне бутона. "Остава в състояние" означава запомняне на състоянието някъде и излизане от функцията , не да цикли в очакване на бутон. След като се детектне отпускането - състоянието се променя на "откриване на първо натискане".
|
| Пет Юни 17, 2016 7:39 am |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
 Re: Работна температура
Ами и за матрична не е много по-различно, там няма как да натискаш два едновременно, не че няма но би следвало да е невалидно, е ако предвиждаш такива комбинации е друго. Идеята най-общо е, че можеш да го правиш с един флаг освен ако не следиш и за комбинации. Но принципа е този, дали флага е един или са 10 все тая. Можеш да проверяваш по раличен начин флаговете, но иначе е същото. Разбита се делея изобщо го забравяш. Аз като писах стейт машина визирах тази за цялото нещо, но естествено може да имаш много стейт машини вкл.и за бутоните, но не знам дали си струва. Бутоните искат дебоунсинг, ако го нямаш ще имаш грижи, а той пък се прави по различен начин, може да вдигнеш флаг и след Х време да провериш дали още е натиснат, или при всяко сваляне да триеш флага и ако времето в което е бил натиснат е късо да не го приемаш за натиснат, има и други варианти.
|
| Пет Юни 17, 2016 8:25 am |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 2 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|