 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
mucek Član


 
Pridružen-a: Tor 01 Avg 2006 10:47 Prispevkov: 5538 Aktiv.: 24.02 Kraj: Domzale
|
Objavljeno: Sre Apr 15, 2009 8:28 pm Naslov sporočila: |
|
|
Tudi z Bascomom to ni problem ... Z 1MHz ...
Tisti, ki je imel te probleme, verjetno ne pozna timer interrupt rutine ...
Lp, Grega |
|
Nazaj na vrh |
|
 |
mucek4 Član


Pridružen-a: Sob 18 Jun 2005 20:52 Prispevkov: 2952 Aktiv.: 12.42 Kraj: Tržič - Mesto med gorami
|
Objavljeno: Čet Apr 16, 2009 7:25 am Naslov sporočila: Re: Sita vrana lačni ne verjame |
|
|
Silvo je napisal/a: |
Na zadnje mi je celo nekdo trdil, da ne uspe spisati aplikacije z miltipleksiranjem displjeja ter branjem 1Wire senzorja, ker mu slednji pobere preveč procesorskega časa, ter ob branju le le ta utripa...  |
Silvo ne boš verjel. Tudi sam sem imel precej podoben problem. Rešil sem ga do te mere, da utripanje ni problematično. Še vedno pa display občasno rahlo utripne. |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14679 Aktiv.: 61.78
|
Objavljeno: Čet Apr 16, 2009 10:41 am Naslov sporočila: Re: Sita vrana lačni ne verjame |
|
|
mucek4 je napisal/a: |
Silvo je napisal/a: |
Na zadnje mi je celo nekdo trdil, da ne uspe spisati aplikacije z miltipleksiranjem displjeja ter branjem 1Wire senzorja, ker mu slednji pobere preveč procesorskega časa, ter ob branju le le ta utripa...  |
Silvo ne boš verjel. Tudi sam sem imel precej podoben problem. Rešil sem ga do te mere, da utripanje ni problematično. Še vedno pa display občasno rahlo utripne. |
Pa si ugotovil vzrok? To je tipičen primer aplikacije, kjer je zelo pomemben procesorski čas. (hitrost clock-a pri tem ne igra vloge. Procesor lahko gre tudi na 32Khz.) Za normalno multiplksiranje se mora displej osveževati 4-8mS. Proceduro za osveževanje je najenostaveje narediti v kaki prekinitveni rutini timerja. Problem pa nastane pri upravljanju vodila 1Wire. Celoten postopek branja 1Wire senzorja pa traje precej dlje. Če celotno proceduro "stlačiš" zraven v prekinitveno rutino, se bo čas bistveno podaljšal. To bo opazno kot utripanje displeja. Možnost rešitve težave je več. "Razkosanje" 1Wire procedure ter jo izvajati po delih, oz meritev izvajati zunaj prekinitve. Ampak tudi tukaj obstaja past-minimalni timing (Write low time, ki je 15uS max) Če se bo prekinitev izvedla ravno v tem trenutku, ter bo prekinitvena rutina trajala dlje bo prišlo do napačne meritve) Rešitev je izklop prekinitve pred kritičnimi timningi ter po poteku le teh ponoven vklop. Koliko pa tega dopuščajo višjenivojski jeziki pa ne vem.
PS
Tisto testno aplikacijo lahko pripnem, če koga zanima. Uporabljen je AVR (tiny2313 narejena je tudi tiskanina) _________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
mucek4 Član


Pridružen-a: Sob 18 Jun 2005 20:52 Prispevkov: 2952 Aktiv.: 12.42 Kraj: Tržič - Mesto med gorami
|
Objavljeno: Čet Apr 16, 2009 11:21 am Naslov sporočila: |
|
|
Pozdravljen Silvo,
sem ugotovil težavo. Torej 1Wire rutina se uporablja 2x. Najprej izvedem konverzijo, potem čakam in potem spet branje. Med vsakim branjem, pisanjem in katerokoliko kominukacijo z 1Wire onemogočim prekinitve. Tako display ne utripa preveč vidno (tako da izgine za nekaj časa), vendar če se človek poglobi se še vedno vidi rahlo utripanje vsako sekundo. Torej stvar rešena - termometer dela.
Nazadnje urejal/a mucek4 Čet Apr 16, 2009 12:14 pm; skupaj popravljeno 1 krat |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14679 Aktiv.: 61.78
|
Objavljeno: Čet Apr 16, 2009 12:00 pm Naslov sporočila: |
|
|
mucek4 je napisal/a: |
Pozdravljen Silvo,
sem ugotovil težavo. Torej 1Wire rutina se uporablja 2x. Najprej izvedem konverzijo, potem čakam in potem spet branje. Med vsakim branjem, pisanjem in katerokoliko kominukacijo omogočim prekinitve. Tako display ne utripa preveč vidno (tako da izgine za nekaj časa), vendar če se človek poglobi se še vedno vidi rahlo utripanje vsako sekundo. Torej stvar rešena - termometer dela. |
Displej mulipleksiraš v prekinitveni rutini?
Si verjetno mislil "onemogočim?" Če bodo prekinitve omogočene v času časovno kritičnih rutin potem obstaja možnost napak pri delovanju 1Wire vodila. Posledično tudi napak meritve. _________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
mucek4 Član


Pridružen-a: Sob 18 Jun 2005 20:52 Prispevkov: 2952 Aktiv.: 12.42 Kraj: Tržič - Mesto med gorami
|
Objavljeno: Čet Apr 16, 2009 12:17 pm Naslov sporočila: |
|
|
Silvo. Popravljeno. Moja napaka, katero sem že odpravil. Display osvežujem v prekinitvi timerja. Vse tri cifre (desetice, enice, desetine) za prikaz preračunavam v kodi, tako da prekinitev samo izključi eno katodo na anode porine novo vrednost, ki je že preračunana in vključi novo katodo. S tem sem zagotovil hitro prekinitveno rutino. |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 11 dni
Powered by phpBB © 2001, 2005 phpBB Group
|