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 

piši in beri eeprom 24C16

 
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
feri
Neznanec
Neznanec



Pridružen-a: Čet 14 Jul 2005 22:36
Prispevkov: 7
Aktiv.: 0.03

PrispevekObjavljeno: Pon Jul 18, 2005 1:48 pm    Naslov sporočila:  piši in beri eeprom 24C16 Odgovori s citatom

hello!

poizvedujem, kako naj naenkrat pošljem 4 byte v BASCOM 8051 ali pa gre komunikacija z ukazom ... i2cwbyte... le en byte za drugim. Pri tem mislim naenkrat samo z eno subrotino npr. Pisi_ee, in ne 4x klicano. Nekaj ste mi že svetovali, koda bi mi zelo prav prišla, hvala.

LP, Feri
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
feri
Neznanec
Neznanec



Pridružen-a: Čet 14 Jul 2005 22:36
Prispevkov: 7
Aktiv.: 0.03

PrispevekObjavljeno: Pon Jul 18, 2005 9:12 pm    Naslov sporočila:  dodatno Odgovori s citatom

Hello

Je kdo naletel, da se na istem vodilu I2C motita eeprom in PCF 8583. Ko jih ločiš z priključnimi pini pa gre.

Hvala, LP.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3351
Aktiv.: 15.02
Kraj: Dragomer

PrispevekObjavljeno: Sob Jul 23, 2005 9:48 am    Naslov sporočila:  Ja, z eno samo rutino pišem in berem v eeprom po 8 bajtov Odgovori s citatom

Ja, z eno samo rutino, v kateri je naslov prvega bajta od večih samo enkrat podan, pišem in berem v eeprom po 8 bajtov hkrati. To gre.
A je pri tem potrebno paziti na to, da je ves telegram 8-ih bajtov v okviru iste strani (page). Spomin eeproma je namreč organiziran v straneh, in to različni eepromi imajo različno veliko strani. Boš moral pogledat v datasheet koliko je velika stran (page) tvojega eeproma.

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



Pridružen-a: Čet 01 Jul 2004 11:18
Prispevkov: 4592
Aktiv.: 20.58
Kraj: Kobarid

PrispevekObjavljeno: Sob Jul 23, 2005 10:25 am    Naslov sporočila:   Odgovori s citatom

Ziv
EEPROM in PCF sta lahko na istem vodilu. EEPROMu spremenis naslov pa je. Sedaj govorim na pamet, zato je bolje da pogledas PDF eeproma. Naslov A0 ali A1 vezes na VCC pri tem moras tudi pri klicanju imeti drugacen naslov.

_________________
Lep dan
Simon
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
feri
Neznanec
Neznanec



Pridružen-a: Čet 14 Jul 2005 22:36
Prispevkov: 7
Aktiv.: 0.03

PrispevekObjavljeno: Pon Jul 25, 2005 9:58 pm    Naslov sporočila:  24C04 Odgovori s citatom

Hi!

Uporabljal bom 24C04, ta ima 512 bytov, piše da morajo biti A2,A1 na 1 in A0 neizkoriščen. Ali to pomeni, da ostane NC. Kolikor vem, to adreso najprej pošljemo, če želimo priključiti več istih eepromov, ki so I2C . Adresiranje samega pomnilniškega prostora(512 lokacij), pa nima vpliva na to. Ali imam prav?

Hvala za odgovor, LP Feri
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3351
Aktiv.: 15.02
Kraj: Dragomer

PrispevekObjavljeno: Tor Jul 26, 2005 6:55 am    Naslov sporočila:   Odgovori s citatom

V AT24C01A/02/04/08/16 datasheet-u piše med drugim:

DEVICE/PAGE ADDRESSES (A2, A1, A0): The A2, A1 and A0 pins are device
address inputs that are hard wired for the AT24C01A and the AT24C02. As many as eight 1K/2K devices may be addressed on a single bus system (device addressing is discussed in detail under the Device Addressing section).

The AT24C04 uses the A2 and A1 inputs for hard wire addressing and a total of four 4K devices may be addressed on a single bus system. The A0 pin is a no connect.
The AT24C08 only uses the A2 input for hardwire addressing and a total of two 8K
devices may be addressed on a single bus system. The A0 and A1 pins are no
connects.
The AT24C16 does not use the device address pins, which limits the number of devices on a single bus to one. The A0, A1 and A2 pins are no connects.

in

AT24C04, 4K SERIAL EEPROM: Internally organized with 32 pages of 16 bytes each, the 4K requires a 9-bit data word address for random word addressing.

Z drugimi besedami
Za izbiro čipa na i2c vodilu imaš pri 24c04 samo A1 in A2 pina. S tem pa ne pomeni, da v samem naslovu, ki se uporablja pri naslavljanju spomina nima A0 nobene vloge. Le ta bit (tokrat bit in ne pin) sodeluje v naslavljanju podatka v samem čipu.
Bajti so porazdeljeni v strani po 16 bajtov, kar je potrebno upoštevati, kadar želiš brati ali pisati več bajtov zaporedoma v enem call ukazu. Več bajtov v nizu lahko bereš ali pišeš le v okviru ene in iste strani.

Če istočasno uporabljaš na istem vodilu še RTC pcf 8583, ki ima samo pin A0 za izbor čipa, bita A1 in A2 pa v naslovu vseeno nastopata in sta 00! Če torej želiš istočasno uporabiti tudi 24c04, tista dva pina a1 in a2 ne smeta biti vezana na 00 temveč vsaj eden na 1, da se naslov razlikuje od naslova v pcf8583.

Pozdrav
vs
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
feri
Neznanec
Neznanec



Pridružen-a: Čet 14 Jul 2005 22:36
Prispevkov: 7
Aktiv.: 0.03

PrispevekObjavljeno: Sre Jul 27, 2005 11:41 pm    Naslov sporočila:   Odgovori s citatom

Hi

Se zahvaljujem za odgovor, Vilko. Našel sem prispevek na forumu, kjer ste imeli te težave, na katere sem naletel zdaj jaz že pred časom. Bolje pozno kot nikoli, kaj. Upam da bom dobil še kak odgovor na moja vprašanja. Pravzaprav ne vem kako bom rešil npr. s samo tremi tipkami nastavljati uro na 8583 in tudi čitati podatke iz eeproma.

LP, Feri
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Član
Član



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3351
Aktiv.: 15.02
Kraj: Dragomer

PrispevekObjavljeno: Čet Jul 28, 2005 6:51 am    Naslov sporočila:  Hm, ideja za možganski vihar (brainstorming) Odgovori s citatom

Ne vem, morda je ideja neumna, morda ne, ampak navrgel jo bom vseeno:

Nastavljanje ure z PCF8583 z eno samo tipko:

PCF8583 šteje samo 4 leta, 0, 1, 2 in 3

Pritisneš tipko in jo držiš, minute gredo gor vsako sekundo po ena.
Še vedno držiš tipko, in čez čas začnejo sekunde teči gor hitreje vsako sekundo po 10 minut. Pri prehodu 59 v 0 gre tudi ura gor. Ko spustiš tipko, se seveda to ustavi. Če ne spustiš tipke se čez čas hitrost naraščanja poveča in gre navzgor vsko sekundo po 1 ura, pri prehodu 23 na 0 gre tudi dan gor. In tako naprej, če se vedno držiš tipko se v sledečem intervalu recimo 20-ih sekund še poveča hitrost in začnejo teči dnevi navzgor, vsako sekundo po en dan, in potem meseci, in na koncu leta. Pri taki hitrosti seveda ne moremo natančno nastaviti ure-dneva, toda pridemo v bližino željene nastavitve, zelo verjetno udarimo čez.
Spustimo tipko.
Ponovno pritisnemo tipko - postopek se ponovi v smeri odštevanja, najprej gredo minute navzdol, in spet se čez čas hitrost povečuje, seveda, če se vedno držimo tipko. Tako bomo verjetno spet udarili pod željeno nastavitev, spet spustimo tipko in spet pritisnemo, in spet se spremeni smer približevanja k cilju, dokler cilja ne dosežemo z hitrostjo ena minuta na sekundo. Takrat spustimo tipko točno, ko je dan-ura nastavljen. Potem z hitrim dvojnim klikom na tipko potrdimo čas in postavimo sekunde na 0.

Ostane še nastavitev dneva v tednu, v kolikor je to potrebno.

Morda se bom pozabaval s to idejo in jo poizkusil prenesti v bascom.
Tako z eno samo tipko nastaviš leto, datum, uro minuto sekundo.

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



Pridružen-a: Pet 13 Feb 2004 10:26
Prispevkov: 3351
Aktiv.: 15.02
Kraj: Dragomer

PrispevekObjavljeno: Čet Jul 28, 2005 10:33 am    Naslov sporočila:  Poizkus nastavitve datuma/časa z eno samo tipko Odgovori s citatom

Prilagam bascom program, s katerim demonstriram, da se da nastaviti leto/mesec/dan - ura:minuta:sekunda z eno samo tipko.
Je sicer malo nerodno in potrebno je kar nekaj minut za popolno nastavitev, in pride v poštev le takrat, kadar so take nastavitve potrebne redko. Popravki časa pa se vnesejo s tipko dovolj hitro.

Postopek je kot opisan v prejšnjem prispevku, čim dalj držimo tipko, tem večji so inkrementi/dekrementi nastavitve vsako sekundo, in na koncu se nastavitev prestavlja vsako sekundo za eno leto. Smer inkrementiranja/dekrementiranja se spreminja z vsakišnjim pritiskom na tipko, ker lahko predvidimo, da bomo z velikim inkrementom preskočili željeno nastavitev, a se s tem vseeno približali, in z sledečim pritiskom na tipko se potem približamo spet in tako postopoma, dokler ne nastavljamo samih minut.

Program nima v sebi pretvorbe v bcd format in samo polnjenje rct čipa. S programom sem samo poizkusil dokazati, da se da nastaviti datum-čas z eno samo tipko. Tudi prikaz na LCD je samo orientacijski za testiranje, za pravo delo je potrebno tudi ta prikaz polepšati.

Če komu prav pride, lahko uporabi to kodo, a jo mora seveda po svojih potrebah predelati.

Srečno!
Vilko

Koda:
' poizkus nastavitve datuma/časa z eno tipko
$regfile = "89s8252.DAT"
$crystal = 12000000
Config Lcdpin = Pin , Db7 = P2.7 , Db6 = P2.6 , Db5 = P2.5 , Db4 = P2.4 , E = P2.3 , Rs = P2.2
Cls
Lcd "rtc-tipka"
Wait 3
Cls

Config Timer0 = Timer , Gate = Internal , Mode = 1
On Timer0 Titi Nosave
Load Timer0 , 195
Enable Timer0
Start Timer0
Enable Interrupts
Dim Tistevec As Byte
Dim Sekunde As Byte
Dim Minute As Byte
Dim Ure As Byte
Dim Dnevi As Byte
Dim Meseci As Byte
Dim Leta As Byte

Tipka Alias P3.3
Dim Smer As Bit

Do
' najprej uredimo časovni stroj. Ta teče na osnovi timerja
    If Tistevec > 20 Then
       Tistevec = Tistevec - 20
       Incr Sekunde
       If Sekunde > 59 Then
          Incr Minute
          If Minute > 59 Then
             Incr Ure
             If Ure > 23 Then
                Incr Dnevi
                If Dnevi > 31 Then
                   Incr Meseci
                   If Meseci > 12 Then
                      Incr Leta
                   End If
                End If
             End If
          End If
       End If

Dim Tipkasek As Byte
       Incr Tipkasek                      'šteje koliko časa je tipka pritisnjena ali spuščena
       ' če je tipka pritisnjena:
       If Tipka = 0 Then

         If Smer = 0 Then                 'smer navzgor
            ' v odvisnosti od tega, koliko časa je že tipka pritisnjena, povečam
            ' inkrement nastavitve
            Sekunde = 0
            Incr Minute
            If Tipkasek > 10 Then
               Minute = Minute + 10
            End If
            If Tipkasek > 15 Then
               Incr Ure
               Minute = 0
            End If
            If Tipkasek > 20 Then
               Ure = Ure + 5
            End If
            If Tipkasek > 25 Then
               Incr Dnevi
               Ure = 0
            End If
            If Tipkasek > 30 Then
               Dnevi = Dnevi + 5
            End If
            If Tipkasek > 35 Then
               Incr Meseci
               Dnevi = 1
            End If
            If Tipkasek > 45 Then
               Incr Leta
               Meseci = 1
            End If

         Else                             'smer navzdol
           Sekunde = 0
            Decr Minute
            If Tipkasek > 10 Then
               Minute = Minute - 10
            End If
            If Tipkasek > 15 Then
               Decr Ure
               Minute = 0
            End If
            If Tipkasek > 20 Then
               Ure = Ure - 5
            End If
            If Tipkasek > 25 Then
               Decr Dnevi
               Ure = 0
            End If
            If Tipkasek > 30 Then
               Dnevi = Dnevi - 5
            End If
            If Tipkasek > 35 Then
               Decr Meseci
               Dnevi = 1
            End If
            If Tipkasek > 45 Then
               Decr Leta
               Meseci = 1
            End If

         End If
       Else                               'tipka ni pritisnjena
       Tipkasek = 0
       End If
'      popravljanje vsebin:
       If Sekunde > 59 Then
          Sekunde = Sekunde - 60
       End If
       If Minute > 59 Then
          Minute = Minute - 60
       End If
       If Ure > 23 Then
          Ure = Ure - 24
       End If
       If Dnevi > 31 Then
          Dnevi = Dnevi - 31
       End If
       If Meseci > 12 Then
          Meseci = Meseci - 12
       End If
       If Leta > 3 Then
          Leta = Leta - 4
       End If

       ' poleg tega vsako sekundo damo informacijo na lcd
       Upperline
       Lcd Leta ; "/" ; Meseci ; "/" ; Dnevi ; "-" ; Ure ; ":" ; Minute ; ":" ; Sekunde ; "    "
       'konec zadolžitev vsako sekundo
     End If

Dim Prej As Bit
If Tipka = 1 And Prej = 0 Then
   ' tipko smo ravnokar izpustili, torej spremenimo smer
   Smer = Smer Xor 1
   Waitms 250
   Prej = 1
   Tipkasek = 0
End If
If Tipka = 0 And Prej = 1 Then
   Waitms 250
   Prej = 0
   Tipkasek = 0
End If




Loop

'////////////timer interrupt rutina ///////////////////
'---------timer0 interrupt subroutine takes control every 25 msec
Titi:
Load Timer0 , 195
Incr Tistevec
Return
'---------timer0 interrupt subroutine - end ----


Kodo sem dodal kar sem, ker mi dodajanje priponke ni uspelo.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
feri
Neznanec
Neznanec



Pridružen-a: Čet 14 Jul 2005 22:36
Prispevkov: 7
Aktiv.: 0.03

PrispevekObjavljeno: Sob Jul 30, 2005 9:44 pm    Naslov sporočila:  Kratek vklop Odgovori s citatom

Hi!

Programčka še nisem čisto predelal, ker sem na dopustu izven domovine in nimam možnosti za priklop. Se oglasim čez 14 dni

Hvala za trud, LP Feri.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
tiger
Član
Član



Pridružen-a: Čet 05 Feb 2004 0:22
Prispevkov: 1139
Aktiv.: 5.11
Kraj: Škofja Loka

PrispevekObjavljeno: Čet Sep 08, 2005 9:16 pm    Naslov sporočila:   Odgovori s citatom

Hi

Nastavitev ure in branje iz eeproma ali kaj drugega z tremi tipkami je čisto enostavno. Nastavitve razdeliš na posamezne enote, po katerih se pomikaš z tipko gor ali dol, ko si v določeni enoti pa nastaviš neko vrednost.

LP
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-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: 78 dni


Powered by phpBB © 2001, 2005 phpBB Group