Stránka 1 z 1

arduino I2C displej nestabilní znak

Napsal: 17 kvě 2019, 07:25
od bu2520
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é.

Napsal: 17 kvě 2019, 09:06
od fero_b
je na tej I2C zbernici okrem toho displeja aj ine zariadenie?

Napsal: 17 kvě 2019, 09:19
od bu2520
stává se mi to v různých aplikacích. Ale abychom mluvili o konkrétní tak u ní je na I2C pouze displej jeded A vstup měří napětí které zobrazuje a u něho první znak mihotá a na jednom pinu je DH22 jinak jsou obsazeny jen boolean IO porty. Teď mě napadlo vzorkovat měření napětí.

Napsal: 17 kvě 2019, 09:31
od fero_b
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..

Napsal: 17 kvě 2019, 09:36
od bu2520
moc děkuju za tipy, máš zřejmě pravdu, zkusím to podle tvých nápadů upravit ještě jednou dík.

Napsal: 17 kvě 2019, 09:52
od fero_b
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 :D