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 

Izziv za izkušene programerje

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
jozzze2000
Član
Član



Pridružen-a: Pet 25 Nov 2011 8:36
Prispevkov: 167
Aktiv.: 1.11
Kraj: Novo mesto

PrispevekObjavljeno: Pon Sep 28, 2015 2:29 pm    Naslov sporočila:  Izziv za izkušene programerje Odgovori s citatom

Delam uro, ki čas prikazuje z besedami. uC je Atmega8, za RTC skrbi DS3231, prikaz je realiziran z matriko LED-diod.

Matrika ima 8 vrstic in 32 stolpcev. Prvih 16 stolpcev predstavlja zgornji del matrike, drugih 16 pa spodnji del matrike.

Vrstice krmilim z Atmego8 preko MIC2981, stolpce pa s shift registri HEF4794.

Atmega8 deluje na 12MHz z zunanjim oscilatorjem.

No, da preidem k problemu...ura deluje, občasno pa se pojavi čuden prikaz. Čuden prikaz se pojavlja naključno in je vedno enak, pojavi se približno 1x na uro.

Ima kdo kakšno idejo kako se lotit tega problema?



WC.jpg
 Opis:
Normalen prikaz
 Velikost datoteke:  2.53 MB
 Pogledana:  2 krat

WC.jpg



XXX.jpg
 Opis:
Čuden prikaz
 Velikost datoteke:  2.47 MB
 Pogledana:  4 krat

XXX.jpg


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



Pridružen-a: Pet 25 Nov 2011 8:36
Prispevkov: 167
Aktiv.: 1.11
Kraj: Novo mesto

PrispevekObjavljeno: Pon Sep 28, 2015 3:14 pm    Naslov sporočila:   Odgovori s citatom

Dodajam še kodo, če bo kaj v pomoč.


KODA_Forum.txt
 Opis:
Koda

Download
 Ime datoteke:  KODA_Forum.txt
 Velikost datoteke:  10.44 KB
 Downloadano:  40 krat

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



Pridružen-a: Sre 11 Okt 2006 19:11
Prispevkov: 3638
Aktiv.: 17.11

PrispevekObjavljeno: Pon Sep 28, 2015 6:51 pm    Naslov sporočila:   Odgovori s citatom

Napravil si čisto klasično napako.

Najprej moraš naenkrat prebrati vse registre od DS1307 in prebrane podatke shraniti v spremenljivke, nato jih pretvoriti v uporabno obliko, jih preračunati in obdelati z "if" stavki, na koncu pa dobljeno prikazati na zaslonu.

Šele, ko je izpis končan, smeš spet prebrati nove vrednosti.

Ti pa malo prebereš, malo preračunaš, malo izpišeš, spet prebereš, ..., ko se pa vsako uro nenadoma spremeni zelo veliko spremenljivk, prebereš neko mešanico in jo ustrezno izpišeš.

_________________
Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
jozzze2000
Član
Član



Pridružen-a: Pet 25 Nov 2011 8:36
Prispevkov: 167
Aktiv.: 1.11
Kraj: Novo mesto

PrispevekObjavljeno: Pon Sep 28, 2015 8:36 pm    Naslov sporočila:   Odgovori s citatom

Ne vem, če popolnoma razumem, kaj si mislil s tem.
DS preberem v kosu oz. bolj točno, prebiram stanje sekund, ko se le te spremenijo, preberem še ostale vrednosti DS in jih sproti shranjujem v spremenljivke.

Edino kar se vmes dogaja je interupt rutina, ki skrbi za izpisovanje "displeja". Te rutine ne morem ustavljati med branjem, ker potem prihaja do utripanja "displeja"...
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
igo
Član
Član



Pridružen-a: Sre 11 Okt 2006 19:11
Prispevkov: 3638
Aktiv.: 17.11

PrispevekObjavljeno: Pon Sep 28, 2015 10:34 pm    Naslov sporočila:   Odgovori s citatom

DS1307Read(a, &data); // prebere samo byte a in ga shrani v data
Ali obstaja ukaz, ki v enem koraku prebere n bytov, brati začne pri bytu a in sproti shranjuje v spremenljivke, začenši s spremenljivko b?
Nekaj podobnega
DS1307Read(a, n, &b); // izmišljena sintaksa
n podatkov je potem na naslovih b, b+1, b+2, ..., b+n-1

Stvar je namreč v tem, da se vsakič, ko kličeš branje ds, vrednosti v njegovih registrih zaklenejo. Če prebereš samo en byte, se lahko vrednost naslednjega byta do naslednjega branja že spremeni. Zato se take stvari vedno bere vse naenkrat, ali pa zaznavaš vrednosti 59 sekund, 59 minut, 23 ur, ... in aktiviraš neko zastavico (nek bit neke spremenljivke postaviš na 1), da je potrebno naslednjič prebrati več bytov naenkrat (ko je prebrano, gre tisti bit na 0 do naslednjič).

_________________
Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
jozzze2000
Član
Član



Pridružen-a: Pet 25 Nov 2011 8:36
Prispevkov: 167
Aktiv.: 1.11
Kraj: Novo mesto

PrispevekObjavljeno: Pet Okt 16, 2015 9:10 pm    Naslov sporočila:   Odgovori s citatom

Zdaj berem vse podatke naenkrat, čudni znaki se ne pojavijo več.

Imam pa drug problem...DS3231 prehiteva za cca. 2s na minuto.
Če vezje odklopim iz napajanja, tako da DS3231 napaja baterija in po 10minutah vklopim napajanje, ura kaže točno.

Kaj bi ga lahko motilo?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
bray
Član
Član



Pridružen-a: Sre 19 Jan 2005 23:53
Prispevkov: 325
Aktiv.: 1.46
Kraj: Vransko

PrispevekObjavljeno: Pet Okt 16, 2015 9:38 pm    Naslov sporočila:   Odgovori s citatom

Preveč pogosto bereš RTC registre. Rešitev je programski RTC in sinhronizacija recimo enkrat dnevno ali vsakih par ur.
_________________
I didn't know it was impossible when I did it!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
twom
Član
Član



Pridružen-a: Ned 26 Okt 2003 0:37
Prispevkov: 865
Aktiv.: 3.90
Kraj: Ljubljana

PrispevekObjavljeno: Sob Okt 17, 2015 10:47 am    Naslov sporočila:   Odgovori s citatom

Verjetno motnje na napajanju, zna biti baterija veliko bolj čista napetost, sploh pri kakšnih zelo izrazitih špicah. V takih primerih je npr lažje iz 12V na 3.3 z uporovnim delilnikom... Branje registrov nebi smelo vplivati na natančnost ure.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
igo
Član
Član



Pridružen-a: Sre 11 Okt 2006 19:11
Prispevkov: 3638
Aktiv.: 17.11

PrispevekObjavljeno: Ned Okt 18, 2015 12:08 pm    Naslov sporočila:   Odgovori s citatom

Uporovni delilnik pa naredi takole:
+)-------[upor1]------(x1)----[ledzelena]------[ledzelena]------(GND

Iz točke x1 pa odcep:
(x1)------[upor2]-----(x2)----[upor3]----(GND

Iz točke x2 pa odcep za napajanje RTC čipa. In še kak 100nF keramični kondi in 10uF elektrolit daj vzporedno k njegovima napajalnima nožicama.

Upore sam izračunaj glede na razpoložljivo +) napetost, potrebno napetost za RTC in napetosti zelenih ledic pri 5 mA toka (glej datasheet) in 1 mA toka skozi upor2 in upor3. Ledice so stabilnejše od zenerc.

_________________
Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
jozzze2000
Član
Član



Pridružen-a: Pet 25 Nov 2011 8:36
Prispevkov: 167
Aktiv.: 1.11
Kraj: Novo mesto

PrispevekObjavljeno: Ned Okt 18, 2015 12:12 pm    Naslov sporočila:   Odgovori s citatom

Hmm, zanimivo...vsak dan zveš kaj novega, vsekakor sprobam in poročam.

Hvala.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev Č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: 48 dni


Powered by phpBB © 2001, 2005 phpBB Group