arduino I2C displej nestabilní znak
Moderátor: Moderátoři
arduino I2C displej nestabilní znak
Mám takový problémek. Má připojené arduino nano na displeji (hd44780) přes I2C a některé znaky jsou neklidné. Pokud se třeba jedním řádkem přepnu do menu údaj na řádku který se nemění se sklidní. Vždy se jedná o jeden znak . Dá se to nějak ošetřit, nebo je to vlastnost. Dělá mi to s různými programy s různými displeji i moduly UNO jsou pokaždé jiné.
ok, par tych displejov som uz programoval, neviem ako mas v softweri vyrieseny "updejt" dipleja, ci to robis v hlavnej slucke alebo v nejakych preruseniach.
Kazdopadne, ten displej je taky dost "self care" - nasypes donho data s potom uz zobrazuje sam, akurat pokial si pametam, komunikacia je troska pomalsia (ja som to nerobil cez I2C ale cez taku 4bitovu zbernicu) problem by som videl niekde v obsluznom softweri, ktory, neustale obnovuje data v displeji a predosla operacia s displejom este nedobehla..Skus znizit rychlost obnovenia udajov na displeji..
dalsi problem viacerych zariadeni na I2C ako som hore naznacil, je ze ak by si s nimi komunikoval aj v hlavnej slucke aj v preruseniach, ze sa ti to proste pobije... v takomto pripade je treba I2C komunikaciu dat len do hlavnej slucky, a prerusenia len zdvihnu zastavku (poziadavku na nejaku I2C komunikaciu) a tu vybavi hlavna slucka, a zastavku zmaze..
Kazdopadne, ten displej je taky dost "self care" - nasypes donho data s potom uz zobrazuje sam, akurat pokial si pametam, komunikacia je troska pomalsia (ja som to nerobil cez I2C ale cez taku 4bitovu zbernicu) problem by som videl niekde v obsluznom softweri, ktory, neustale obnovuje data v displeji a predosla operacia s displejom este nedobehla..Skus znizit rychlost obnovenia udajov na displeji..
dalsi problem viacerych zariadeni na I2C ako som hore naznacil, je ze ak by si s nimi komunikoval aj v hlavnej slucke aj v preruseniach, ze sa ti to proste pobije... v takomto pripade je treba I2C komunikaciu dat len do hlavnej slucky, a prerusenia len zdvihnu zastavku (poziadavku na nejaku I2C komunikaciu) a tu vybavi hlavna slucka, a zastavku zmaze..
ja by som to spravil takto (aj ked ja nerobim s arduinom, ale programujem ciste atmely): pustil by som si prerusenie od casovaca ma povedzme 50-100ms. Data ktore chces zobrazit, neviem kde ziskavas, ale je to asi jedno, ak niekde v preruseni- tak program by to mal len ulozit do nejakej pameti a dalej sa o to nestarat (ci sa zobrazili na displeji), maximalne mat 2 bufre (kde by si to zapisoval na striedacku) na data, ale na uvod to nie je podstatne - to nesuvisi s nestabilnym znakom...
prerusenie od casovaca nastavi povedzme kazdu pol sekundu (budes inkrementovat pocitadlo v preruseni az naratas pol sekundy) a zdvihnes vlajocku (flag).
Hlavny program bude kukat na tu vlakocku a ked ju niekto zdvihne vybere tie data z pameti a nasype ich do displeja.
A aby si to mal super safe, mozes si urobit este jeden flag, ktory bude robit "ochranne pasmo" ked zapisujes do displeja, v okamihu ked zacnes zapisovat do displeja, nastavis tento flag, a v preruseni bude podmienka ze ked je tento flag zdvihnuty tak nevystavujeme poziadavky na zapis na displej (lebo to prave prebieha), a ked dozapisujes, tak flag zhodis, a zhodis aj flag, ktorym prerusenie vystavilo poziadavku na zapis na displej, a znulujes pocitadlo preruseni. Tym povolis preruseniu vystavit novu poziadavku, ktora pride najskor o dalsiu pol sekundu...
dufam ze som ta velmi nedoplietol![Very Happy :D](./images/smilies/icon_biggrin.gif)
prerusenie od casovaca nastavi povedzme kazdu pol sekundu (budes inkrementovat pocitadlo v preruseni az naratas pol sekundy) a zdvihnes vlajocku (flag).
Hlavny program bude kukat na tu vlakocku a ked ju niekto zdvihne vybere tie data z pameti a nasype ich do displeja.
A aby si to mal super safe, mozes si urobit este jeden flag, ktory bude robit "ochranne pasmo" ked zapisujes do displeja, v okamihu ked zacnes zapisovat do displeja, nastavis tento flag, a v preruseni bude podmienka ze ked je tento flag zdvihnuty tak nevystavujeme poziadavky na zapis na displej (lebo to prave prebieha), a ked dozapisujes, tak flag zhodis, a zhodis aj flag, ktorym prerusenie vystavilo poziadavku na zapis na displej, a znulujes pocitadlo preruseni. Tym povolis preruseniu vystavit novu poziadavku, ktora pride najskor o dalsiu pol sekundu...
dufam ze som ta velmi nedoplietol
![Very Happy :D](./images/smilies/icon_biggrin.gif)