Fórum témák
» Több friss téma |
Fórum
Nem nagy drágítás az ilyesmi, és tisztán hardveresen is meg lehet oldani az egészet.
Tévedés ne essék, én meg tudom csinálni,
csak nem feltételezem, hogy az alapvetően számlálóként működő RTC IC-be emiatt programozható logikát tegyenek, s ezzel drágítsák.
Szia!
Bevallom őszintén, én csak az óra, perc és másodperc regisztereket olvasom ki belőle, a többire eddig nem volt szükségem. Szóval ebben nem tudok segíteni. :no: Amúgy tegnap adtam tápot a LED kockának, több mint 1 hét után. Tapasztalat: 10 másodpercet késett csak a vekker része.
Nemis olyan bonyolult a hét napjának kiszámítása: An_algorithm_to_calculate_the_day_of_the_week
Az évszázados tábla eredménye fixen beépíthető, a néggyel való osztás valójában két hellyel jobbra shiftelés, azt pedig, hogy szökő év-e, azt egy AND művelettel meg lehet állapítani. Szóval leprogramozni se nagy valami, főleg magasabb szintű programnyelvben. Igaz, hogy link volt, de ha ugyanolyan hosszú a szövege, mint maga a link, akkor ugyanúgy széttolja az oldalt. Kicsit rövidítettem. -- kobold Idézet: „Ez így van, vagy én rontottam el valamit?” A józan ész azt diktálja, hogy így van. Azaz nincs benne örök naptár program, csak számlál - az általad beállított értékekből kiindulva. Majd azt is nézd meg, hogy a szökőévet tudja-e? Az sem triviális feladat.
Szia!
Készül a program. Meglepődve tapasztaltam, hogy a 8583 dátum, idő beállításakor a day of week nem állítódik be automatikusan. Ez így van, vagy én rontottam el valamit? Na mindegy még leprogramozom azt is. Azért fontos ez nekem, mert a kapcsolóórárban a day of week szerint lehet majd időprogramot írni. Más. Van itt valaki aki vállalkozik egy darabos nyák készítéssel? Megrajzolnám, ő elkészítené, elpostázná utánvéttel. Panelt nem igazán szeretek, tudok készíteni. Üdv: T.
Hello
Adó-vevő modulokkal (433,92 MHz) szeretnék kommunikációt és adatátvitelt megvalósítani két PIC között, és megpróbálkoztam Manchester kódoló-dekódoló programot írni. Sajnos nem nagyon akar működni, ezért gondoltam, hogy átírom. A vevő oldalon a vevő modulból jövő jelet én a PIC RB0 lábára vezettem, hogy ha jelet kap, akkor megszakításjöjjön létre (felfutó élre). Természetesen a megfelelő regisztereket beállítottam. Így ha érkezik adat, akkor a megszakításon belül dekódolja azt a PIC. Kezdetnek ez az elgondolás jó? Továbbá mennyi ideig tartson egy bit küldése? Én 1ms-ot használtam. Tehát egy bájtot 16 bittel próbáltam átküldeni, és még használtam 3 bitet a 16bites adat előtt, és 2 bitet pedig utána. Szóval ezek voltak a "címkék". Maga az adatátvitel úgy írtam meg, hogy 1ms-ként küldi az adó PIC az egyeseket és nullákat, a vevő oldalon pedig a PIC a megszakításon belül pedig ugyanígy 1ms-ként elmenti a vett jelszintet, majd dekódol. Van ebben valami hiba? Üdv.
Szia!
Egyenlőre még asztalon van próbapanelen a cucc. Az óra rész alakul, 15 pF-dal egy éjszaka alatt 0,5 sec-et késik. Úgyhogy 10-15 között lesz az érték valahol. Máskülönben még fejlesztést igényel, mert valójában egy fűtési kapcsolóóra lesz, heti, napi programokkal. Ha kész természetesen felrakom a képét.
Üdv!
Kösz az infót! Megpróbálok szerezni valami olcsó, kis kapacitású használt karit, aztán majd azzal kiprószálom. Remélem nyomdahiba volt
Olvastam valahol hogy hibás a mikropascal MMC library... bár lehet hogy csak az avr-es verzióra érvényes a dolog, mert én arra kerestem!
Nem tuti infó de jobb félni mint megijedni üdv
Van aki kipróbálta már az MMC libraryt? Igazából csak arra vagyok kíváncsi, érdemes-e vele foglalkozni. Egy CNC gépet építek, először csak nyák marásra szeretném használni. Arra gondoltam, az lenne a legegyszerűbb, ha a Gerber fájlt rámásolnám a kártyára, akár többet is, és menüből lehetne kiválasztani, melyiket akarom legyártani. Azonban, mivel tapasztalatok alapján a MikroPascal eléggé bug-os, nem szeretnék egy kártyát sem elrontani. Van valakinek tapasztalata ezzel kapcsolatban? remélem nem én leszek az első, aki megpróbálkozik vele
Nagyon szívesen!
Esetleg képet tennél fel a kész óráról? Majd teszek fel én is a LED kockámról csak most épp tesztelés alatt van. Kb. 1 hete megy táp nélkül, az RTC egy 3V-os gombelemrol (CR2032) elvileg még mindig ketyeg, még 1 hétig hagyom, és ha pontos lesz akkor is, na az lesz a szuper
Én a két osc káb közé beraktam a kvarcot és kész. Most nézem a doksiban, hogy a Te megoldásod is ott van, a osc1-et kell valóban Vcc-re kötni egy kondival. A doksiban trimmer kondi van 5-25 pF-ig.
A "csúnya" megoldáson már én is gondolkodtam, de azért az nem az igazi. Végül is a szoftveres megoldás jött be. Lehúztam egy 16F877-esre megírt hardveres demót, amit átalakítottam szoftveresre, azzal indult be. Este feltöltöm, hátha valaki éppen ebbe a problémába fut bele. Köszi a segítséget!
Üdv!
Van 2 féle megoldás is, egy bevált pepecselős, megy egy csúnya egyszerű. A PCF8583 1-es lába és a Vcc közé tettél kondit? (először megszokásból Gnd-re kötöttem, akkor be sem indult ) Nálam ha jól emlékszem 47 pF-os van. Ha szabvány értékű kondikkal nem tudod beállítani a pontosságát, akkor rakj ide egy szabályozható kondit. Ez volt a pepecselős megoldás, a csúnyát inkább csak ötletként írom. A programba beírod, hogy: If hour mod 6 = 0 then minute:=minute-1. Amúgy a szoftveres I2C-vel indult be, vagy sikerült meghajtani a hardvereset?
Szia! Végre sikerül kezelni a PCF 8583-at. Tudom írni, olvasni. Egy kis szépséghiba, hogy kb. 6-7 óra alatt sietett egy percet. Lehet ez ellen valamit tenni?
Kipróbáltam. Óra, perc :165.
A másodperc egy másodperc alatt hármat számol és 113-nél fordul át nullára. És miden ötödik lépésnél visszafelé is számol egyet. Így olvasok: procedure Read_time(var sec, min, hr, day, mn, year : byte); begin soft_I2C_start; soft_I2C_Write($A0); soft_I2C_Write(2); soft_I2C_Start; soft_I2C_Write($A1); soft_I2C_Start; Gsec :=soft_I2C_Read(1); soft_I2C_Start; Gmin :=soft_I2C_Read(1); soft_I2C_Start; Ghr :=soft_I2C_Read(1); soft_I2C_Start; Gday :=soft_I2C_Read(1); soft_I2C_Start; Gmn :=soft_I2C_Read(0); soft_I2C_Stop; end; Tipp?
Igen, ez lefordul azzal a változtatással, hogy
I2C_WR=soft_I2C_Write I2C_Rd=soft_I2C_Read Letölteni azonban majd csak este tudom, remélem jó lesz.
Akkor szerintem próbálkozz szoftveres I2C-vel. Én 16F716-tal jártam úgy, hogy az adatlap szerint van benn ADC, pascal szerint meg nem volt, és kiírta azt a hibaüzit, mint nálad.
Szoft_I2C-vel valahogy így nézne ki: procedure Read_time; begin soft_I2C_start; soft_I2C_Write($A0); soft_I2C_Write(2); soft_I2C_Start; I2C_Wr($A1); soft_I2C_Start; Gsec :=I2C_Rd(1); soft_I2C_Start; Gmin :=I2C_Rd(1); soft_I2C_Start; Ghr :=I2C_Rd(1); soft_I2C_Start; Gday :=I2C_Rd(1); soft_I2C_Start; Gmn :=I2C_Rd(0); soft_I2C_Stop; end; A főprogramban az I2C_Init helyett pedig Soft_I2C_Config(PortB,4,6); Ha esetleg nem jönne be a szoftveres megoldás, akkor szerintem válts PICet, vagy próbálkozz meg ASM-ben megírni a holmit.
Szia!
Köszi a kódot. Közben rájöttem valamire. Ha a projectben 16F877-es pic-et álítok be, akkor lefordul. Nekem 16F690-esem van, azzal nem fordul le. Ugyan az a I2C_start was not declarated. A PIC adatlapján a következő: RB4: I2C data I/O; RB6: I2C clock; Tehát tudja az I2C-t. Vagy Át kellene kapcsolni I2C com módba?
Közben kipróbáltam, hogy az I2C_start után tettem ()-et, úgy is lefordította... Nézd meg nem-e cseréltél fel 2 betűt, nálam gyakori hiba amikor gyorsan írok
A progimban ott van, hogy readRTC:=0, azt nem kell beírnod, nálam csak interruptnál kellett használnom egy boolean típusú változót....
Hali!
Én az I2C_start után nem szoktam ()-et tenni, lehet hogy az a böki. Nem kell hozzá semmilyen unit. Itt van az én kódom, hátha segít: procedure Read_time; begin I2C_start; I2C_Wr($A0); //vagy $A2, az adress láb állapotától függően (Gnd-$A0 - Vcc-$A2) I2C_Wr(2); I2C_Repeated_Start; I2C_Wr($A1); Gsec :=I2C_Rd(1); while I2C_Is_Idle = 0 do nop; Gmin :=I2C_Rd(1); while I2C_Is_Idle = 0 do nop; Ghr :=I2C_Rd(1); while I2C_Is_Idle = 0 do nop; Gday :=I2C_Rd(1); while I2C_Is_Idle = 0 do nop; Gmn :=I2C_Rd(0); while I2C_Is_Idle = 0 do nop; I2C_Stop; readRTC:=0; end; procedure Transform_time; begin Gsec := ((Gsec and $F0) shr 4)*10 + (Gsec and $0F); Gmin := ((Gmin and $F0) shr 4)*10 + (Gmin and $0F); Ghr := ((Ghr and $F0) shr 4)*10 + (Ghr and $0F); Gyear := ((Gday and $C0)) shr 6; Gday := ((Gday and $30) shr 4)*10 + (Gday and $0F); Gmn := ((Gmn and $10) shr 4)*10 + (Gmn and $0F); end; Sok sikert!
Összeraktam az RTC-t (PCF8583) a pic-kel (16F690).
Letöltöttem egy mintapéldát, rögtön egy hibaüzenet: Identifier I2C_Start() was not definied. Gondolom valamelyik unit-ban van. Melyiket kell behúzni? Vagy ez egyáltalán a baja?
Hali!
Pár hete csináltam egy LED-Cube-ot, amibe tettem idő kijelzést is. Én is PCF8583-at használtam, elég jó kis RTC. Pár hét alatt nem késik/siet 1 másodpercet sem. Cak ajánlani tudom!
Ok, olvasgatom. Egy órát szeretnék készíteni. Milyen RTC-t válasszak, hogy ne legyen nagy a küzdelem? A unitok között a PCF8583 kezelését láttam. Szerinted?
A PIC adatlapját, mert az a PIC számára a Biblia, Teremtés könyve, Korán, minden ilyesmi egyesítve :yes:
Működik! Köszönöm a segítséget. Milyen doksit használsz? Kezdő vagyok és nem akarok folyton a fórumban kérdezősködni.
Habár, most nézem, hogy az ADCON:=0x07; nem is lesz jó. Inkább az ANSEL:=0; és a ANSELH:=0; utasításokat add, ezzel kapcsolod digitálisra az analóg lábakat.
Üdv. |
Bejelentkezés
Hirdetés |


csak nem feltételezem, hogy az alapvetően számlálóként működő RTC IC-be emiatt programozható logikát tegyenek, s ezzel drágítsák.
Kb. 1 hete megy táp nélkül, az RTC egy 3V-os gombelemrol (
