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 

RTC modul - MCP79410

 
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
kose19
Član
Član



Pridružen-a: Sre 02 Mar 2005 19:37
Prispevkov: 1228
Aktiv.: 5.53
Kraj: okolica Kobarida

PrispevekObjavljeno: Pon Mar 30, 2015 1:49 pm    Naslov sporočila:  RTC modul - MCP79410 Odgovori s citatom

Pozdravljeni.

Imam ta modul in mi je po priloženi kodi delal iz prve. Sicer na AtMega64a, vendar mislim, da to ne upliva na moj problem.
Najprej se je zataknilo, ko sem hotel koristiti še Weekday spremenljivko. Nekako po defaultu je bila 44 Shocked , ura in datum sta normalno tekla z napajanjem in brez (na baterijo).
In potem se je zgodilo, da je ura čez noč obstala. Ko jo ponovno vpišem, sicer obdrži vrednosti, vendar ne teče.
To je moj prvi I2C in zato ne vem na kak način naj se lotim problema. Kakšen nasvet, ali naj naročim nov modul?

lp


Koda:

$regfile = "attiny88.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 20
$framesize = 40

' Config
Config Lcdbus = 4
Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portd.2 , Db6 = Portd.1 , Db7 = Portd.0 , E = Porta.2 , Rs = Portd.4
Config Lcd = 16 * 1a
Config Scl = Portc.5
Config Sda = Portc.4
Config I2cdelay = 5
Config Clock = User
Config Date = Dmy , Separator = /
Dim Weekday As Byte
Const Mpc79410w = &B11011110
Const Mpc79410r = &B11011111

Cls
 Weekday = 1
Time$ = "01:00:00"
Date$ = "01/01/12"
' Main loop
Do
   Upperline : Lcd Time$
   Lowerline : Lcd Date$
Loop
End

 Getdatetime:
    I2cstart
    I2cwbyte Mpc79410w
    I2cwbyte 0
    I2cstart
    I2cwbyte Mpc79410r
    I2crbyte _sec , Ack
    _sec.7 = 0
    I2crbyte _min , Ack
    I2crbyte _hour , Ack
    I2crbyte Weekday , Ack
    I2crbyte _day , Ack
    I2crbyte _month , Ack
    _month.5 = 0
    I2crbyte _year , Nack
    I2cstop
    _sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
    _day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)
Return
 Setdate:
   _day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year)
   I2cstart
   I2cwbyte Mpc79410w
   I2cwbyte 4
   I2cwbyte _day
   I2cwbyte _month
   I2cwbyte _year
   I2cstop
Return
 Settime:
    _sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)
    I2cstart
    I2cwbyte Mpc79410w
    I2cwbyte 0
    _sec.7 = 1
    I2cwbyte _sec
    I2cwbyte _min
    I2cwbyte _hour
    Weekday.3 = 1
    I2cwbyte Weekday
    I2cstop
Return

_________________
- Absens, carens -
- Tisti, ki ga ni, bo prikrajšan -
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
int47
Član
Član



Pridružen-a: Pon 15 Dec 2003 0:10
Prispevkov: 2066
Aktiv.: 9.30
Kraj: Ljubljana

PrispevekObjavljeno: Pon Mar 30, 2015 6:57 pm    Naslov sporočila:   Odgovori s citatom

Poglej 5.2.3 OSCILLATOR FAILURE STATUS.
_________________
Kdor ni skregan, ni Slovenc !
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
kose19
Član
Član



Pridružen-a: Sre 02 Mar 2005 19:37
Prispevkov: 1228
Aktiv.: 5.53
Kraj: okolica Kobarida

PrispevekObjavljeno: Pon Mar 30, 2015 9:01 pm    Naslov sporočila:   Odgovori s citatom

Hm, sem prebral datasheet, pa nisem nič napredoval.
Ker je moje znanje programiranja še zmeraj na začetnem nivoju (pač nikoli nisem bil programer), mi v glavnem ni nič jasno.
Kako pišeš in bereš registre preko I2c lahko samo ugibam. Ali je možen "reset", da bi potem spet naložil zgoraj pripet program? Ne vem niti ali je bil čip na modulu prej že kakorkoli nastavljen. Skratka tema.
Bi rabil podroben komentar pripetega programa kar se tiče I2c. Kaj se piše, zakaj se piše, kako se piše in kam se piše, da bi počasi razumel kaj in kako...
Uči se namreč Janezek, Janezi smo bolj trdi d'oh!

_________________
- Absens, carens -
- Tisti, ki ga ni, bo prikrajšan -
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
int47
Član
Član



Pridružen-a: Pon 15 Dec 2003 0:10
Prispevkov: 2066
Aktiv.: 9.30
Kraj: Ljubljana

PrispevekObjavljeno: Pon Mar 30, 2015 10:52 pm    Naslov sporočila:  Re: RTC modul - MCP79410 Odgovori s citatom

Za začetek naštudiraj i2c vodilo in časovne funkcije v Bascom-u.

vpis enega registra preko i2c je opisan v FIGURE 6-1:

->START - Živjo, halo... Začetek prenosa.
->CONTROL BYTE: Master odda naslov naprave na vodilu, s katero se želi pogovarjati. Control byte je pojasnjen v FIGURE 4.3. Vsebuje 4 bit naslov EEPROM, oz RAM, nasledni trije 3 biti so vedno '1', ter R/W bit, s katerim izbiraš pisanje / branje.
<-ACK: Master sprosti vodilo. SLAVE potrdi sprejem.
->ADDRESS BYTE: Master odda naslov registra, kamor želi vpisat podatke.
<-ACK: Master sprosti vodilo. SLAVE potrdi sprejem.
->DATA: Master odda BYTE, ki se bo vpisal na naslov [ADDRESS BYTE]
<-ACK: Master sprosti vodilo. SLAVE potrdi sprejem.
->STOP: Adijo. MASTER pove napravam na vodilu, da je prenehal z oddajo.


V tvojem primeru pogrešam komunikacijo uC-ja z RTC modulom
Koda:

Cls   'zbriše LCD
 Weekday = 1    ' prvi dan v tednu
Time$ = "01:00:00"   ' ura je ...  vpliva na spremenljivko v uC-ju
Date$ = "01/01/12"   ' datum je... vpliva na spremenljivko v uC-ju

 '  Če ima uC svojo uro, bi moral tu uskladiti uro uC-ja z RTC, ali obratno.


' Main loop   
Do ' glavna zanka

   '  Če uC-ju nima svoje ure, bi tukaj program moral prebrati čas iz RTC

   Upperline : Lcd Time$    ' v zgornjo vrtico izpiše Time$
   Lowerline : Lcd Date$    ' v spodnjo vrstico izpiše Date$
Loop ' skoči na Do
End

_________________
Kdor ni skregan, ni Slovenc !
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 -> 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: 48 dni


Powered by phpBB © 2001, 2005 phpBB Group