Zdravim Vas, mal by som taku otazku ohladom problemu ktory riesim. Ide o to ze mam zariadenie ktore sluzi ako poruchova jednotka ktora je prepojena s LCD. Uvediem cast programu, pisem to z hlavy takze za nejake preklepy sa ospravedlnujem ale na pochopenie problemu to staci
Sledovanie_poruch:
Do
If Porucha_1 = 1 Then
Porucha1 = 1
Goto Vyhodnotenie_poruch
Endif
If Porucha_2 = 1 Then
Porucha2 = 1
Goto Vyhodnotenie_poruch
Endif
Loop
Vyhodnotenie_poruch:
Do
If Porucha1 = 1 Then
Locate 1, 1
Lcd "PORUCHA 1"
wait 1
Cls
wait 1
End if
If Porucha2 = 1 Then
Locate 1,1
Lcd "PORUCHA 2"
wait 1
Cls
wait 1
Endif
If Odblokovanie_poruchy = 1 Then
Porucha1 = 0
Porucha2 = 0
Goto Sledovanie_poruch
Endif
Goto Sledovanie_poruch
Loop
Problem je to ze na to aby som dokazal nejaky cas zobrazit poruchu na lcd musim pouzit prikaz wait ktorym stopnem cely MCU a ked mam napriklad dve poruchy za sebou tak musim drzat tlacitko pre odblokovanie poruchy 4 sekundy(samozrejme zalezi ako sa trafim). Nenapada ma nic ako by som dosiahol to zeby sa na LCD zobrazovala porucha na cas ktory si nastavim a zaroven aby som nestopol MCU a aby som mohol v akomkolvek case odblokovat poruchu bez cakania. Vedeli by ste mi poradit ako by som to dosiahol? Snad som sa vyjadril dostatocne v tom co potrebujem. Dakujem Vam pekne
administrator: přejmenováno z "Zobrazovanie na LCD"
Chyba je v použití příkazu wait. Ten v programu nemá co dělat, pokud se nejedná o čekání například kvůli délce impulzu (maximálně několik milisekund). Nezapomeň, že pro zařízení není důležitá informace na displeji, ale chod mcu. Asi nejrozumnější je pro informace na displeji si vytvořit pro něj stavový automat. Pokud potřebuješ na displeji zobrazit určitou informaci, pak musíš nastavit příznak, podle kterého poznáš, co na displej vypsat, případně nějakou proměnnou, kterou budeš načítat tak, abys věděl, jak dlouho informace na displeji je. Po dosažení určitého času, případně po stisku tlačítka jenom změníš příznak zobrazovaných informací na displeji a změníš informace na displeji. Zapomeň na příkaz wait a snaž se ho nepoužívat - a když už, tak na velmi krátké časy, pro které se nevyplatí vytvářet stavový automat.
Ano ten prikaz wait je mi jasne ze tam nema co robit a teraz ho tam mam len preto lebo nic ine ma nenapadlo ako to spravit. Kazdy poruchovy stav ma svoj vlastny bit podla ktoreho viem co vypisat na displej len neviem ako docielit to ze napriklad nastanu dve poruchy(v realnom programe ich mam asi 20) a ja potrebujem docielit to aby bola prva porucha zobrazena nejaky cas kvoli tomu aby si ju obsluha mohla precitat, potom sa displej vymazal a znova sa na nejaky cas zobrazila druha porucha a takto by sa to opakovalo s podmienkou ze MCU nebude stat alebo bude dalej bezat v nekonecnej slucke a kontrolovat poruchy. Ked som to ale tak cital tak ma napadlo riesenie zeby som spravil to ze keby nastala prva porucha tak by som zobrazoval len tu jednu a MCU by stale bezal a keby nastala druha tak len zmenim jej stav pricom na LCD ju nevypisem ale az ked odblokujem jednu tak sa zobrazi druha atd. Teda ze ak by som mal napriklad 10 poruch tak by som musel stlacit 10x odblokovanie poruchy, a malo by to tu vyhodu ze by obsluha vedela o kazdej jednej poruche lebo by ju musela potvrdit, samozrejme tomu ci ju precita alebo len rychlo odbije nezabranim ale je to v celku dobry napad spravit to takto