Fórum témák

» Több friss téma
Fórum » Óra IC (RTC) használata PIC-kel
 
Témaindító: Csaplar, idő: Márc 2, 2007
Témakörök:
Lapozás: OK   4 / 8
(#) szitko hozzászólása Okt 15, 2013 /
 
Sziasztok.

RS5C372A-nál kellenek kondik a kvarcra? (~10pF)
Az adatlap szerint vannak belső kondik, 6-8pF-ak.
(#) Krisszes hozzászólása Dec 18, 2013 /
 
Sziasztok!

Segítséget szeretnék kérni. Egy PIC24fj128ga010 élesztgetek. Többek között időt is kiíratom.
Az RTCC ketyeg mindig (az 1Hz jelen van), de a problémám, hogy az alarm csak rendszertelenül kezd működni, sokadik reset után. Ha nem láttok hibát, Az is nagy segítség lenne, ha küldenétek egy működő C algoritmust.
Előre is köszönöm.


  1. /---------Kalibráció-----------
  2. typedef union _unionRTCC {
  3.    struct {  //four 16 bit registers
  4.      char yr;
  5.      char null;
  6.      char date;
  7.      char month;
  8.      char hour;
  9.      char wday;
  10.      char sec;
  11.      char min;
  12.    } u8;
  13.    int regs[4];
  14.  } unionRTCC;
  15.  unionRTCC u_RTCC;
  16.  
  17. //--------------Idö és dátum kezdőértéke---------
  18. void setTimeDate_START(void){
  19.      u_RTCC.u8.yr=0x12;
  20.      u_RTCC.u8.month=0x11;
  21.      u_RTCC.u8.date=0x11;
  22.      u_RTCC.u8.wday=0x06;
  23.      u_RTCC.u8.hour=0x07;
  24.      u_RTCC.u8.min=0x35;
  25. }
  26. void setTimeDate(void){
  27.      u_RTCC.u8.yr=(e1<<4)+(e2&0x0f);
  28.      u_RTCC.u8.month=(h1<<4)+(h2&0x0f);
  29.      u_RTCC.u8.date=(n1<<4)+(n2&0x0f);
  30.      u_RTCC.u8.wday=(hn1<<4)+(hn2&0x0f);
  31.      u_RTCC.u8.hour=(o1<<4)+(o2&0x0f);
  32.      u_RTCC.u8.min=(p1<<4)+(p2&0x0f);
  33. }
  34.  
  35. //------------RTCC beállítás---------------------
  36.  
  37. void setRTCC(void){
  38.         char u8_i;
  39.         PADCFG1bits.RTSECSEL = 1;
  40.         RCFGCALbits.HALFSEC = 0;
  41.         RCFGCALbits.CAL = 0x7f;
  42.    RCFGCALbits.RTCOE = 1;                //RTCC port tiltása
  43.    __builtin_write_RTCWEN();     //RTCC írásának engedélyezése,RTCWEN beállítása
  44.    RCFGCALbits.RTCEN = 0;        //RTCC Tíltása
  45.    
  46.    RCFGCALbits.RTCPTR = 3;       //RTCPTR pointer beállítása
  47.    for (u8_i=0; u8_i<4; u8_i++) {
  48.           RTCVAL = u_RTCC.regs[u8_i];
  49.       }
  50.  
  51.    RCFGCALbits.RTCEN = 1;        //RTCC engedélyezése
  52.    RCFGCALbits.RTCWREN = 0;      //RTCC írásának tiltása
  53.  
  54.         ALCFGRPT = 0x4fff;           //ALCFGRPT reg beállítsa
  55.         ALCFGRPTbits.ALRMEN = 1;     //Riasztás engedélyezése
  56.  
  57. //-------IT beállítás----------------
  58.  
  59.         IFS3bits.RTCIF = 0;
  60.         IEC3bits.RTCIE = 1;
  61.         IPC15bits.RTCIP = 6;
  62.  }
  63. //------------IT rutin--------------
  64. void __attribute__((__interrupt__,auto_psv)) _RTCCInterrupt(void)
  65. {
  66.     IFS3bits.RTCIF = 0;   // IT törlése
  67.         ido_set ();
  68.     if(rot==1 & ok==0) {
  69.         fokep();
  70.         }
  71.     kapcsolas_ellenorzes ();
  72. }
(#) kaqkk válasza Krisszes hozzászólására (») Dec 18, 2013 /
 
Nem értek a c hez de a 8.-9. sor nincs felcserélve? A 20.és 21. sor értéke is :0x11
A hozzászólás módosítva: Dec 18, 2013
(#) Krisszes válasza kaqkk hozzászólására (») Dec 18, 2013 /
 
Szerintem nincsen. megnéztem az adatlapot, de amikor működik a megszakítás akkor mindent jól csinál.
Úgy tűnik, mintha a megszakítás rutin nem futna le vagy nem kerül meghívásra...
(#) kaqkk válasza Krisszes hozzászólására (») Dec 18, 2013 /
 
Az őrkutya hogy áll (watchdog ), be van kapcsolva?
(#) eSDi hozzászólása Jan 15, 2014 /
 
Üdv mindenkinek!

Tervezgetek egy órát, s ehhez rendeletem egy MCP7940M típusú RTC-t és egy marokra való óra kvarcot. Viszont most van egy kis dilemmám ezekkel kapcsolatban. Az RTC adatlapja azt írja, hogy 6-9pF terhelő kapacítású kristályt kellene alkalmazni hozzá. Viszont amit kaptam az 12.5pF-os. Sajnos nem is volt másik fajta. Lehetséges, hogy nem fog, illetve csak lassabban fog beindulni az oszcilláció? Vagy milyen problémát fog ez okozni?
(#) eSDi hozzászólása Ápr 21, 2014 /
 
Üdv mindenkinek!

Még mindig fennál a fenti kérdésem. Viszont azzal kiegészíteném, hogy összeraktam dugdosós próbapanelon, de nem indul be az oscillátor. Illetve az IC-t megkérdezve, szerinte megy. De sem a kvarc lábain, sem a MFP kimeneten nincs jelen a 32kHz a megfelelő beállítások mellett. Használta már valaki ezt az MCP7940M típusú RTC-t? Ha igen, akkor milyen kvarcot és Cx kondikat raktatok mellé?

Köszönöm előre is!
(#) Hp41C válasza eSDi hozzászólására (») Ápr 21, 2014 /
 
MCP79410 -et használtam 32.768 kHz óra quartz -cal és 12pF kondenzátorokkal.
Az oszcillátor balaphelyzetben tiltott (Second register 7. bitje 0 a reset után), engedélyezni kell. Az általam használt példánynak volt egy kellemetlen hibája:
Idézet:
„Devices with silicon revision prior to A4 (date code prior to 11/10) have an errata where the AM/PM bit (Bit 5 in register 02h) may be flipped if the oscillator is stopped. This is coincident with the OSCON bit getting cleared. This can occur due to the following conditions:
• The oscillator is stopped on the application.
• The oscillator is stopped by clearing the ST bit (Bit 7 in register 00h).
• The external CMOS source is stopped in EXTOSC mode.
The work-around is to determine when the OSCON bit is cleared and check in software for AM/PM bit corruption.
Devices with silicon revision A4 or later (date code after 11/09) do not have this issue.”
(#) eSDi válasza Hp41C hozzászólására (») Ápr 21, 2014 /
 
Igen azt már észrevettem, hogy be kell kapcsolni az oscillátort. Az IC-ből kiolvasva az OSCON-t, az azt jelzi, hogy megy. Valójában mégsem megy. Lehetséges, hogy nem tudja meghajtani a kvarcot? 70kOhm ESR-ig képes rá az IC, a vásárolt kvarc ESR értékéről nincs információm. Próbáltam már mindenféle kondenzátorral is 9-33pF között.
A hozzászólás módosítva: Ápr 21, 2014
(#) sooty hozzászólása Ápr 27, 2014 /
 
Sziasztok! Az IV-18-as órámat (egyelőre még csak a prototípust) átalakítottam DS3231 RTC-re. Az adatlapban leírtakhoz képest furcsaságot tapasztalok, mindamellett, hogy minden funkciót tudok használni, látszólag hibamentesen. A DS3231 4. RST lábát közvetlenül a GND-re kellett kötnöm, hogy az óra kijelezze az idő értékét, ezt nem értem. Ez olyan mintha folyamatosan nyomnám az RTC reset gombját. Az RTC akkor is jár a háttérben, ha ez az átkötés nincs benne, de a kijelzőn ilyenkor csak 08-08-08 jelenik meg. Mi ennek az oka? DS3231
(#) Hp41C válasza sooty hozzászólására (») Ápr 27, 2014 /
 
A RST vonal nyitott nyomógombbal valami zajt szed össze. A lefutó élre a DS3231 egy reset pulzust állít elő, majd figyeli a szintet a RST vonalon, ha felfutó élet talál, akkor újabb pulzust állít elő, majd felengedi a RST vonalat. Ha a nyomógomb nyitott állandóan átmenetet érzékel és reset állapotban tartja magát.
(#) sooty válasza Hp41C hozzászólására (») Ápr 27, 2014 /
 
Ez a próbapanel valóban nem ideális, akkor felszedhet valami zajt az RTC. Próbáltam a Vcc-re is felhúzni egy ellenállással és a GND-re is, plusz a táp közé bekerült egy hidegítőkondi, de csak a közvetlen gnd-re kötés volt eredményes. Ez így terheli az RTC-t? Okoz elvileg valami gondot, ha így hagyom? Ha reset állapotban van mit csinál? Mert jár tovább benne az óra, csak megjeleníteni nem tudom.
A hozzászólás módosítva: Ápr 27, 2014
(#) sooty válasza Hp41C hozzászólására (») Ápr 27, 2014 /
 
Ez az RST bemenet nem is az RTC-t reseteli, hanem a PIC-et (már ha be lenne kötve) , ha a tápfesz a Vpf alá esik, azaz 2,5V alatt van a tápfesz. Az adatlap azt írja nincs hatással a DS3231 belső működésére. (Csak rajta keresztül a zaj elrontja nekem az I2C kommunikációt?)
A hozzászólás módosítva: Ápr 27, 2014
(#) sooty hozzászólása Ápr 30, 2014 /
 
Még mindig szenvedek vele. A 3v-os gombelemről szépen működik a ds3231, de ha folyamatosan megy a kijelző és az óra, akkor egy nap alatt kb. 45 másodpercet siet. (ha csak ellenőrzésként kapcsolom be egy-egy pillanatra akkor pontos az óra) Ez is a felszedett zaj miatt történik? Próbáltam 100n kondikat betenni a tápokhoz, csökkenteni a sda scl felhúzó ellenállását (4,7k -> 2,2k).
(#) vicsys válasza sooty hozzászólására (») Máj 1, 2014 /
 
Ugye az NC lábakat (az összeset) lekötötted GND-re?
(#) sooty válasza vicsys hozzászólására (») Máj 1, 2014 /
 
Igen azóta már közvetlenül a ds3231 mellett, az öcsipanelen összekötöttem az nc lábakat és a gnd-re kötöttem. (A múltkori képhez képest, mert akkor még csak alul a foglalatnál voltak összekötve, de nem javult)
A hozzászólás módosítva: Máj 1, 2014
(#) vicsys válasza sooty hozzászólására (») Máj 1, 2014 /
 
Nálam a reset, a SQW és 32K lábak 10k-val felhúzva. Az adatvonalak pedig 2k2-vel. A tápon 100nF és természetesen az elem. Az NC lábak GND-n. Ennyi, nem több. A reset gomb felesleges, nem is kötöttem be a PIC-re. A csatolt képen jól látszik, hogy mindkét tokozást kipróbáltam. (az M széria van a képen)

DSCN0004.JPG
    
(#) sooty válasza vicsys hozzászólására (») Máj 1, 2014 /
 
Most minden lábat újraforrasztottam, betettem a 10k felhúzó ellenállásokat a nem használt sqw és 32k kimenetekre, felengedtem a reset lábat és jár az óra (eddig ilyenkor leállt 08-08-08 jelent meg), kíváncsi leszek javul-e a pontossága. Köszi! (Most jövök rá, hogy valószínű a gnd láb volt szakadt, az viccelt meg, mert az nc lábakat külön lehúztam gnd-re és a reset vonal is a külön gnd-re lett kötve, de az rtc gnd-lába az maradt az eredeti foglaltban bekötve... )
A hozzászólás módosítva: Máj 1, 2014
(#) vicsys válasza sooty hozzászólására (») Máj 1, 2014 /
 
Javul-e? Ne hülyéskedj! 2ppm az adatlapja szerint a pontossága! Ha nálad ekkora eltérés van, akkor valami komoly gond van...
(#) sooty válasza vicsys hozzászólására (») Máj 1, 2014 /
 
Javul, szakadt volt az rtc gnd-je (az öcsipanel és a foglalat között), azért szedte fel a zavarokat. Viszont mérni nem tudtam mert a reset lábon vagy a többi nc lábon kapott valami gnd-t, amivel ment, csak a pontossága szállt el. Most már úgy tűnik O.K. Köszi a segítséget!
A hozzászólás módosítva: Máj 1, 2014
(#) eSDi válasza Hp41C hozzászólására (») Máj 5, 2014 /
 
Üdv!

Végülis kiderült, hogy a PIC-ben lévő szoftveres I2C-vel van valami probléma. Sikerült rávennem a PC-t, hogy LPT porton keresztül vezérelje az I2C vonalat, és így be tudtam kapcsolni az oszcillátort. El is indult még kondik nélkül is, de 9pF-tól 33pF-ig bármivel szépen indul.
(#) sooty hozzászólása Máj 22, 2014 / 1
 
Kicsit elburjánzott a ds3231 és pic16f886 kipróbálásának indult próbapanelem... de még így is pontos az rtc
A hozzászólás módosítva: Máj 22, 2014
(#) zenetom hozzászólása Júl 21, 2014 /
 
Sziasztok!
Járt már úgy valaki, hogy nem akart elindulni az RTC oszcillátora?
Egy MCP7940-el játszok, beleírni-olvasni sikerül, a 0x00 címen lévő regiszter 7. bite kapcsolja az oszcit, de nem akar elindulni. Pedig beállítom, és visszaolvasva is 1-et kapok, de az RTC nem ketyeg. Pedig egyszer már elindult, csak valami bugos volt, azt úgy néz ki kijavítottam, de most meg nem akar ketyegni.. Egyébként lehetséges hogy kapott az áramkör egy nagyobbacska tranzienst, mert egyszer adtam neki egy elég kókány tápot.
Szkóppal se mérek semmiféle szinuszt a kvarcnál, meg elvileg mennie kéne az MFP lábon a négyszögnek (anno ment az is), de most semmi.
Valakinek valami tipp?
(#) Hp41C válasza zenetom hozzászólására (») Júl 22, 2014 /
 
Idézet az MCP79410-79412 adatlapjából:
APPENDIX B: DEVICE ERRATA
Idézet:
„Devices with silicon revision prior to A4 (date code prior to 11/10) have an errata where the AM/PM bit (Bit 5 in register 02h) may be flipped if the oscillator is stopped. This is coincident with the OSCON bit getting cleared.
This can occur due to the following conditions:
• The oscillator is stopped on the application.
• The oscillator is stopped by clearing the ST bit (Bit 7 in register 00h).
• The external CMOS source is stopped in EXTOSC mode.
The work-around is to determine when the OSCON bit is cleared and check in software for AM/PM bit corruption. Devices with silicon revision A4 or later (date code after 11/09) do not have this issue.”
A hozzászólás módosítva: Júl 22, 2014
(#) zenetom válasza Hp41C hozzászólására (») Júl 22, 2014 /
 
Köszönöm, hogy írtál!
Bár az másik adatlap, de megnéztem az OSCON bitet, és bizony 0, tehát már saját maga is bevallja, hogy nem indul be az oszcija.
Most megpróbálom külső forrásról hajtani.
Aztán beszámolok.
(#) zenetom válasza zenetom hozzászólására (») Júl 22, 2014 /
 
Ha beállítom a külső órajelet, akkor megy!
Veszek egy újat a ChipCAD-ben...
A hozzászólás módosítva: Júl 22, 2014
(#) zenetom válasza zenetom hozzászólására (») Júl 25, 2014 /
 
Vettem újat, de már meg megy a régi is. A szokásos parajelenségek...
(#) bbatka hozzászólása Márc 1, 2016 /
 
Nem szoktam túl gyakran segítséget kérni, mert úgy tartom a küszködéssel csak tanulok. Most mégis kérem segítsetek. Hetek óta küzdök egy riasztó programjának írásával , de csak egy helyben topogok. A program egy részében a RS5C372a RTC és PIC18F4520 között szeretnék adatcserét megvalósítani. Először egy basic fejlesztő környezetben kezdtem hozzá nem túl sok sikerrel, aztán egy Pascal fejlesztő környezetben. Ez utóbbiban már sikerült krix-krax-kat kicsalnom az RTC-ből. A másodperc kiolvasásnál 60s-s -ként váltakoztak az alakzatok. A Pascal fejlesztő környezettel az volt a bajom hogy vagy elindult a program vagy nem. Volt olyan is hogy 10s-ig futott aztán utána ált le. Természetesen a watchdog ki volt kapcsolva. Ezek után úgy döntöttem hogy hanyagolom a Pascalos fejlesztőkörnyezetet. Ismét a basic felé fordultam. Sok sikertelen próbálkozás után elkezdtem az I2C alapjait és az RTC assemblyben való programozását tanulmányozgatni. A ChipCAD oldalán van egy példa, amelyet be is csatolok. Azt nem értem a példában hogy az elején letiltja a perifériás megszakításokat CLRF PIE1. Később a PIE1 már nem tűnik fel a forrásban, de a WAIT szubrutinban a PIR1 megszakítás flaget vizsgálja.
Gondolom valami elkerülte a figyelmem vagy ismeret hiánnyal küzdők.
(#) brato válasza bbatka hozzászólására (») Márc 1, 2016 /
 
Üdv!

Én PCF8560-al kínlodtam amég rá nem jöttem, hogy legalább 300 ms késleltetés kell a pic indulásakor, hogy a feszültségek stabilizálódjanak.
Azóta jól működik.
Proton basic-ben fejlesztek.
(#) bbatka válasza brato hozzászólására (») Márc 1, 2016 /
 
Nálam a kezdő késleltetés több mint 5s a lassú LCD miatt. (EDT EW162G0YMY)
Következő: »»   4 / 8
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.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