www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Atmega16 in GLcd

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> AVR, LPC900, x51
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
RUros
Član
Član



Pridružen-a: Čet 09 Mar 2006 22:26
Prispevkov: 1031
Aktiv.: 4.39

PrispevekObjavljeno: Sre Dec 22, 2010 5:41 pm    Naslov sporočila:  Atmega16 in GLcd Odgovori s citatom

Pozdrav !

Pri pisanju programa sem naletel na težavo, ki je sledeča: pri izpisu na grafični lcd 128x64, se opazi hitro utripanje (osveževanje) zaslona. Kako se to lahko odpravi ? Del programa, kjer se to opazi:
Koda:
 void meritev()
              {
              SREG_I_bit=1 ; // vklop prekinitve
              Glcd_Fill(0x00);
              Glcd_Set_Font(Font5x7,5,7,32);
              Glcd_Write_Text("Povrsina:",1,5,2);
              Glcd_Set_Font(Character8x7, 8, 7, 32);
              Glcd_Write_Text("Hektar meter", 12, 0, 2);

              while(1)
                      {
                      Glcd_Fill(0x00);
                      A=((dolzina*sirina)/prehod);   // izračun površine
                      IntToStr(A,Astr);        // pretvorba iz int. v string za izpis
                      Glcd_Set_Font(Font5x7,5,7,32);
                      Glcd_Write_Text("Povrsina:",1,5,2);
                      Glcd_Set_Font(Character8x7, 8, 7, 32);
                      Glcd_Write_Text("Hektar meter", 12, 0, 2);
                      Glcd_Set_Font(Font5x7,5,7,32);
                      Glcd_Write_Text(Astr,50,5,2);

                      }
               }

Torej, ko pride do prekinitve, se nek števec poveča za ena oz. nastavljeno vrednost, potem pa se izračuna površina.
Ker nisem še vešč programiranja bi vas vprašal, ali se da kako odpraviti to "blinkanje" zaslona.
Poizkusil sem kvarc zamenjati s hitrejšim (prej 8Mhz, sedaj pa je 16 Mhz), pa se stvar še vedno opazi.
Aja če koga zanima, program je pisan v MikroC.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
infernal
Član
Član



Pridružen-a: Pet 29 Jun 2007 0:46
Prispevkov: 239
Aktiv.: 1.09
Kraj: Maribor

PrispevekObjavljeno: Sre Dec 22, 2010 6:36 pm    Naslov sporočila:   Odgovori s citatom

Blinka zaradi ukaza:
Koda:
Glcd_Fill(0x00);
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
RUros
Član
Član



Pridružen-a: Čet 09 Mar 2006 22:26
Prispevkov: 1031
Aktiv.: 4.39

PrispevekObjavljeno: Sre Dec 22, 2010 7:00 pm    Naslov sporočila:   Odgovori s citatom

Ja to vem, samo če ne pobrišem zaslona potem mi prepisuje vrednost, ki jo izpisujem na LCD in tako se nič ne vidi, ker je eno čez drugo Angel .
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
chaos
Član
Član



Pridružen-a: Sob 16 Sep 2006 22:12
Prispevkov: 1063
Aktiv.: 4.66
Kraj: Zagorje ob Savi

PrispevekObjavljeno: Sre Dec 22, 2010 7:12 pm    Naslov sporočila:   Odgovori s citatom

To se ponavadi naredi tako, da se piše samo na lokacije, ki so bile spremenjene - lahko si npr. v pomnilnik shraniš dve kopiji bufferja, in jih pred pisanjem v glcd primerjaš. Ali si pa narediš novo spremenljivko, v kateri vsak bit pomeni en blok (ponavadi 1x8 ali 8x1), ki ga je treba prepisati.

LP!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
RUros
Član
Član



Pridružen-a: Čet 09 Mar 2006 22:26
Prispevkov: 1031
Aktiv.: 4.39

PrispevekObjavljeno: Sre Dec 22, 2010 8:50 pm    Naslov sporočila:   Odgovori s citatom

Sedaj sem naredil takole pa še vedno miglja tam kjer prepišem. Uporabil sem eno for zanko v kateri pobrišem mesta v vrstici tam kjer prikazujem številko.
Pa mi ni jasno zakaj, manj kot je za pobrisat, bolj utripa Rolling Eyes . Če npr. brišem celo vrstico, potem se ne opazi toliko, kot pa če brišem samo 4 cifre.

Koda:
 while(1)
                      {
                      A=((dolzina*sirina)/prehod);   // izračun površine
                      IntToStr(A,Astr);        // pretvorba iz int. v string za izpis
                      Glcd_Set_Font(Font5x7,5,7,32);
                      Glcd_Write_Text(Astr,50,5,2);
                      for(i=55;i<95;i++)
                                        {
                                         Glcd_Set_Side(i);
                                         Glcd_Set_Page(5);
                                         Glcd_Set_X(i);
                                         Glcd_Write_Data(0);
                                         }

                      }


EDIT: No sem nekako po svoje rešil Laughing . Pred zanko sem dodal 100ms delay, ki zamrzne sliko, za ta čas, tako da je sedaj utripanje na 100 ms komaj opazno Angel . Ker v programu ne pričakujem velikih hitrih sprememb tega prikazovanja, mislim da ta zakasnitev ne bo tako moteča.
Če pa kdo pozna kakšno drugo rešitev pa se priporočam Angel .
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
nakamichi
Član
Član



Pridružen-a: Pon 21 Avg 2006 18:51
Prispevkov: 845
Aktiv.: 3.69
Kraj: Nova Gorica

PrispevekObjavljeno: Čet Dec 23, 2010 9:34 am    Naslov sporočila:   Odgovori s citatom

Funkcija GoTo(x, y); ne pomaga?

L.P.,
Miha
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
RUros
Član
Član



Pridružen-a: Čet 09 Mar 2006 22:26
Prispevkov: 1031
Aktiv.: 4.39

PrispevekObjavljeno: Čet Dec 23, 2010 9:54 am    Naslov sporočila:   Odgovori s citatom

Nisem še sprobal, sem uporabil kar to, ker se mi zdi, da je še najenostavneje. Pobrišem celo vrstico oz. približno tam, kjer se prikaz spreminja. Z GoTo pa bi moral verjetno vedeti katere pixle pobrisati, in preden bi ugotovil kateri so ti pixli Laughing . Ker sem vedel v katero vrstico pišem sem pobrisal kar vrstico.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
jvolk
Član
Član



Pridružen-a: Ned 05 Mar 2006 1:14
Prispevkov: 737
Aktiv.: 3.14
Kraj: okolica Divače

PrispevekObjavljeno: Čet Dec 23, 2010 3:30 pm    Naslov sporočila:   Odgovori s citatom

V while zanko dodaj 40ms delay.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> AVR, LPC900, x51 Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
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: 494 dni


Powered by phpBB © 2001, 2005 phpBB Group