Fórum témák

» Több friss téma
Fórum » Nagy LED kijelzős DCF77 óra PIC-kel
Lapozás: OK   13 / 20
(#) Hp41C válasza digit99 hozzászólására (») Nov 30, 2011 /
 
As fare as I can understand the code...
In display.c there is a strange statement:
  1. if((shift_pos==3 || shift_pos==6) && ch!=11) {
  2.       WriteOutput(0x00);
  3.       act_col--;
  4.    } else {
  5.       WriteOutput(data);
  6.    }

The StrobeReset() sets shift_pos to 0, and each StrobeClock() increments it. As we are interested to display "-22.5°C" the character when shift_pos==3 is the second digit of degree (2!=11) this statement corrupts the data displayed. This statement is used to eliminate the segment A of character :.

Are there only 6 digits on the display?
So let us eliminate the semicolons from date, use only the WriteOutput(data); from the instruction...
(#) digit99 válasza Hp41C hozzászólására (») Nov 30, 2011 /
 
Yes display have 6 digits.So what I must to write?
(#) Hp41C válasza digit99 hozzászólására (») Nov 30, 2011 /
 
Try the two files in this packet...

digit99.zip
    
(#) digit99 válasza Hp41C hozzászólására (») Nov 30, 2011 /
 
It's not good,now I don't have the last two digit on display,clock do not show correctly --other is also bad.
(#) Hp41C válasza digit99 hozzászólására (») Dec 1, 2011 /
 
Sorry...
(#) Hp41C válasza Hp41C hozzászólására (») Dec 1, 2011 / 1
 
Sorry, i misunderstood the program...

I think i found it....

There are two non digit position is the display, on which only the semicolon can be used... Points use the digits internal decimal points.
In the message to display is "-22.5°C" the shift_pos == 3 is the position of second 2 with a point in the next position. The display.c looks for points in next position, and combines the data of two characters. At the positions of semicolons moves the actual position backward one position if the current character isn't a semicolon. The problem occur when a character is at shift_pos==3 or shift_pos==6 and a point is in the next position like in "-22.5°C". In this case the act_pos has to be moved bacward by two positions...

I had to add some lines to m_DS1621M.C to make it compatible with MpLab Simulator (No hardware I2C simulation support).
(#) digit99 válasza Hp41C hozzászólására (») Dec 1, 2011 /
 
Great jobs!!!Congratulations!!!
Many thanks my friend.Now everything work fine.(You mist to write `C in temperature when measure in + range) I write my self no problem.I am also change.......
if (dcf_time.HasNewTime) {
dcf_time.HasNewTime = false;
Ticker = TIMER1_FREQUENCY;
time = dcf_time;
time.sec = 1; ------------- changed to 0!!!
Now the clock show precisely second's.
Also added gong on every hour's from 7-22h(1s output hi on pin B7)
Thanks to all on forum

main.c
    
(#) Hp41C válasza Hp41C hozzászólására (») Dec 2, 2011 /
 
Ha a hőmérséklet negatív és két egész számjegye van pl. "-22.5°C", akkor a program hibásan működik:
- A kijelzendő információban 7 karakter is szerepel (a pont nélkül), mert a °C előtt egy betüköz is van a programban. Negatív hőmérséklet esetén a betüköz nem kell.
- A kijelzőn két hely van a kettőspontok számára, ezeken a helyeken más karakter nem jeleníthető meg. A pontokat a digitek tizedespontjával jelzi ki az óra. A display.c megvizsgálja, hogy az aktuális karakter után pont következik, ha igen, akkor a karakter képét módosítja. Amennyiben a shift_pos == 3 vagy shift_pos == 3 pozíciónál vagyunk és a kijelzendő karakter nem a kettőspont, a kimenetre 0 -t ír és visszalépteti az act_pos változót 1 -el. A probléma akkor jelentkezik, ha a shift_pos == 3 vagy shift_pos == 3 pozíciónál nem kettőspont van és a következő karakter pont. Ekkor az act_pos változót 2 -vel kell visszaléptetni.
A kijelző adatainak előállítása egy kínszenvedés a programnak a kép buffer és a fent leírt problémák kezelése miatt.
- Jobb lett volna egy karakter mutatót összeállítani a bufferbeli adatok címzésére - nem minden műveletnél vizsgálni, melyik az aktív buffer...
- A beírásnál fixen 8 kódot lehetett volna beírni, a bont jelzésére a karakter kódban a 7. bitet lehetett volna használni...
(#) whalaky válasza digit99 hozzászólására (») Dec 6, 2011 /
 
I solved it:
  1. if ( temp <= -10 || temp >= 100 ) // 4 digites kijelzés
  2.       printf( display_putc, "\f%4.1f°C", temp );
  3.    else
  4.       printf( display_putc, "\f%3.1f °C", temp );
(#) Hp41C válasza whalaky hozzászólására (») Dec 7, 2011 /
 
Olvastad ezt meg ezt meg ezt???

A hiba a kijelzésnél van a string -be konvertálás után! Csúnya táblázatkezelési hibával fűszerezve. A táblázat 14 elemű, a hiba miatt a 46. elemét is elő kellene venni. Csoda, hogy nem száll el.

Ráadásul csak 6 karakter írható ki (a "." és a ":" -ot nem számítva)...
(#) hacsi66 hozzászólása Dec 7, 2011 /
 
Sziasztok

Vannak nagy kijelzőim extra nagyok ha valakit érdekel méretei 178X120X34 jelenleg közös Anódos de át lehet forrasztani akár katodosra is előtét ellenállások be vannak épitve így eg szegmens 12V 23mA megy nagyon jó fénye van és mesziről látszik .
Ha valaki igazán nagy kijelzős órát akar épiteni akkor ezeket ajánlom ilyen nagyokat nem vesz sehol eredeti japán termék.
A képeken minden jól látszik. 3500Ft os darab áron eladók van több darab is érdeklödj !!!!!
(#) Moderátor hozzászólása hacsi66 hozzászólására (») Dec 7, 2011
 
APRÓHIRDETÉS!
Tessék használni, ez fórum!
(#) hacsi66 válasza (») Dec 7, 2011 /
 
Bocsi hogyan tudnám ezt betenni az apróhirdetés rovatban?
(#) Topi válasza hacsi66 hozzászólására (») Dec 7, 2011 /
 
Apróhirdetés -> Új apróhirdetés feladása
(#) hacsi66 válasza Topi hozzászólására (») Dec 7, 2011 /
 
szia

De nekem nincsen ilyen opcióm hogy új hirdetés feladása, vagy én vagyok béna
(#) whalaky válasza Hp41C hozzászólására (») Dec 7, 2011 /
 
Igen, olvastam.... de hol itt a 46. elem???
(#) pcroland válasza hacsi66 hozzászólására (») Dec 7, 2011 /
 
Az aktivitásod nem éri el a 0.15-öt. Hamar el tudod érni, ha napi 1hsz.-t írsz.
(#) Hp41C válasza whalaky hozzászólására (») Dec 7, 2011 /
 
Hár ez az.... A 46. elem már program kód!
Idézet:
„A probléma akkor jelentkezik, ha a shift_pos == 3 vagy shift_pos == 6 pozíciónál nem kettőspont van és a következő karakter pont. Ekkor az act_pos változót 2 -vel kell visszaléptetni.”

De az eredeti kód csak 1 karakterrel lép vissza, a következő kijelző frissítésnél a pontot találja meg. Ezzel a kóddal ("." kódja 0x2E = 46) címzi meg a 14 elemű táblázatot. A CCS fordító tudja csak hova is ugrik a kontroller.
(#) whalaky válasza Hp41C hozzászólására (») Dec 7, 2011 /
 
Kösz, értem. Bár eddig még nem sikerült megoldani hogy beleszaladjon. Ez olyan "elvileg előfordulhat" hiba, de azt azért mindenkinek tudni kell hogy alapszabály hogy ha szemét megy be, szemét is fog kijönni.... ha kijön valami egyáltalán.
Ha a bufferbe írást megoldod hogy ne mehessen bele csak ketőspont (nem nagy mutatvány) ez a hiba - ami valós hiba - soha nem fog bekövetkezni. Mindamellett igazad van.
(#) Hp41C válasza whalaky hozzászólására (») Dec 8, 2011 /
 
Nem ilyen egyszerű a helyzet...
Pont digit99 szaladt bele a "-22.5°C" kiiratásával. Ebben a szövegben a (shift_pos == 3) pozíció a hőmérséklet egyes helyiértékén álló "2", ami után közvetlenül a pont jön. Ezért volt a megzavarodott kijelzése. Ráadásul a hőmérséklet kiíratása változó hosszúságú (negatív hőmérsékletnél a megjelenik a "-", -0.5 .. -9.5 fok között az egész rész csak 1 számjegy, -10 fok alatt pedig 2), így ez a hiba csak -9.5 fok alatt jelentkezett.

Célszerű letölteni az MpLab CCS plugin -t. Csinálni egy projectet a fordításhoz és nyomonkövetni mi is történik...
(#) whalaky válasza Hp41C hozzászólására (») Dec 8, 2011 /
 
Azért némi odafigyeléssel megoldható a dolog. Olvastad?
Persze igazad van abban hogy nem ez a megoldás, de nekem kiválóan működik. Újra lehetne gondolni (talán még érdemes is volna) az egész kijelző rutint.
Topi mester mentségére legyen mondva, hogy ezt a kütyüt bevallottan szobai használatra tervezte, ahol ha már -9,5 fok alatt vagy 99.5 fok felett van a hőmérséklet, akkor már a kijelzés hibája a legkevésbé fontos paraméter
Persze az is igaz, hogy az kéne hogy legyen a cél hogy törekedjünk a tökéletes megoldásra. Ezesetben nem jött be.
Mindamellett én csak egy ilyen készüléket "gyártottam" le, az már 3 éve stabilan ott figyel a falon és semmi bajom nincs vele, kivéve a multiplex kijelzést. Az újabb kütyükben már eleve nem ezt a megoldást használom - soros shiftregiszterek PWM szabályzással, kevesebb láb, nagyobb fényerő, megbízhatóbb működés, nincsenek felesleges bufferek stb.... - talán ezért is értetlenkedtem egy kicsit.
(#) Hp41C válasza whalaky hozzászólására (») Dec 8, 2011 /
 
Az a "c" jön a táblázat túlcímzéséből...
(#) whalaky hozzászólása Dec 16, 2011 /
 
Üdv mindenkinek!
Elkészültem a topi féle óra egy újabb példányával, de ....
amíg a kijelző rá nem került, szépen szinkronizál ahogy kell, de amint a kijelző rákerül megszűnik a dcf vétel, vagy semmi nem jön, vagy valami látványos űrszemét (egy led jelzi a dcf jeleket, így ha nics kijelző látom mit csinál, egy másik led pedig jelzi ha szinkronizált).
Ha a kijelzőt lehúzom, az első egész dcf percben szinkronizál, de amint rádugom a kijelzőt megzavarodik.
Már mindenhol próbáltam 100nanokkal szűrni, tettem a tápra puffer kondit is és 100n-t is, de semmi.
Olyan mintha az RF rész zavarná meg.
Valakinek van ezzel tapasztalata?
(#) whalaky válasza whalaky hozzászólására (») Dec 17, 2011 /
 
Újabb fejlemények, hátha ez valakinek információ értékű.
Véletlen rajtahagytam a nyákon a pickit2-t, és lőn csoda, az óra szinkronizál, a dcf vétel jó....
Az RB6, RB7 lábakon nincs semmi, azt csak a programozásra használom, maradt a táp... de mit tud a pickit???
(#) vicsys válasza whalaky hozzászólására (») Dec 17, 2011 /
 
Mondjuk stabil tápfeszt? Lehet, hogy megfogja a tápon megjelenő ugrásokat, amik kibillentik a szinkront...
(#) whalaky válasza vicsys hozzászólására (») Dec 17, 2011 /
 
7805-ről megy az 5V-os rész. Mindkét oldalon 100n-val, a 12V-on 1000u az 5v-on 10u puffer.
Ötletem nincs hogy hogy kéne szkóp nélkül megnézni...
Tovább kutakodtam a hiba oka után, most ott tartok, hogy elég csak az égető GND-jét a nyákra kötni és a hiba már meg is szűnik. Csak az oka és a megoldás ami még miniíg rejtély.
gerjedés? de hol?
Ami a táp stabilitást illeti a DCF vevőt hajtottam már külön elemröl is (az azért elég stabil), a jelenség ugyan az volt.
(#) Hp41C válasza whalaky hozzászólására (») Dec 17, 2011 /
 
A DCF77 vétellel a következőket tapasztaltam:
- Milyen messze van a vevő minden elektromos berendezéstől - legalább fél méter kell.
- Jó irányban áll - München felé mutató irányra merőlegesen, vízszintesen álljon.
- Van - e az irányban TV, fénycsőlámpa stb bekapcsolva.

A modul csatlakozóira szereltem a + táp elé egy 100 ohm -os ellenállást és a + és - pontok közé 100nF és 47µF tantál kondenzátort. A kimenetet 10k -val húztam a szűretlen tápra. A vezeték árnyékolt vagy sodrott érpár legyen. A modul kimenete nyitott kollektoros, a legjobb lenne közvetlenül a modul kimenetén egy buffert alkalmazni.

A program minden másodperc elején 2 mintát vesz 150 ms -enként és ezt dekódolja. Így nekem sohasem működött a vétel...
Egy szűrést kellett tennem a vevő benetere. 200us -onként mintát veszek, 20ms -ig átlagolom a mintákat, majd a 20ms átlagokból jövő sorozatot dekódolom. Általában 80% fölötti a helyes dekódolás, sokszor 100% -ot is eléri.
(#) whalaky válasza Hp41C hozzászólására (») Dec 17, 2011 /
 
A hiba nem a programban van, mert mint említettem ha a kijelző nincs rákötve, vagy a PICKIT rá van csatlakoztatva a nyákra - ekkor már a kijelzővel együtt is - teljesen jó a szinkronizálása, egy órán át néztem, minden percben szinkronizált, így mindenképp valami gerjedésre gyanakszom, de erre alkalmas műszerek hiányában nem tudom kimérni.
Ha a PICKIT nincs rácsatlakoztatva (a legutóbbi tapasztalatok szerint elég csak a GND-t csatlakoztatni) a bejövő dcf jel tele van űrszeméttel, vagy van vagy nincs.
(#) vicsys válasza whalaky hozzászólására (») Dec 17, 2011 /
 
Szerintem a PC GND-jét viszi a DCF GND-jére és emiatt ad kvázi árnyékolást. Próbáld meg összeföldelni egy kábellal, pk2 nélkül.
(#) whalaky válasza vicsys hozzászólására (») Dec 17, 2011 /
 
Igen, ez a gyanúm nekem is, de azért jó lenne ha PC nélkül is működne....
Következő: »»   13 / 20
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem