|
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
feri Neznanec
Pridružen-a: Čet 14 Jul 2005 22:36 Prispevkov: 7 Aktiv.: 0.03
|
Objavljeno: Pon Jul 18, 2005 1:48 pm Naslov sporočila: piši in beri eeprom 24C16 |
|
|
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 |
|
|
feri Neznanec
Pridružen-a: Čet 14 Jul 2005 22:36 Prispevkov: 7 Aktiv.: 0.03
|
Objavljeno: Pon Jul 18, 2005 9:12 pm Naslov sporočila: dodatno |
|
|
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 |
|
|
vilko Član
Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3351 Aktiv.: 15.02 Kraj: Dragomer
|
Objavljeno: Sob Jul 23, 2005 9:48 am Naslov sporočila: Ja, z eno samo rutino pišem in berem v eeprom po 8 bajtov |
|
|
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 |
|
|
SimonS Član
Pridružen-a: Čet 01 Jul 2004 11:18 Prispevkov: 4592 Aktiv.: 20.58 Kraj: Kobarid
|
Objavljeno: Sob Jul 23, 2005 10:25 am Naslov sporočila: |
|
|
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 |
|
|
feri Neznanec
Pridružen-a: Čet 14 Jul 2005 22:36 Prispevkov: 7 Aktiv.: 0.03
|
Objavljeno: Pon Jul 25, 2005 9:58 pm Naslov sporočila: 24C04 |
|
|
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 |
|
|
vilko Član
Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3351 Aktiv.: 15.02 Kraj: Dragomer
|
Objavljeno: Tor Jul 26, 2005 6:55 am Naslov sporočila: |
|
|
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 |
|
|
feri Neznanec
Pridružen-a: Čet 14 Jul 2005 22:36 Prispevkov: 7 Aktiv.: 0.03
|
Objavljeno: Sre Jul 27, 2005 11:41 pm Naslov sporočila: |
|
|
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 |
|
|
vilko Član
Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3351 Aktiv.: 15.02 Kraj: Dragomer
|
Objavljeno: Čet Jul 28, 2005 6:51 am Naslov sporočila: Hm, ideja za možganski vihar (brainstorming) |
|
|
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 |
|
|
vilko Član
Pridružen-a: Pet 13 Feb 2004 10:26 Prispevkov: 3351 Aktiv.: 15.02 Kraj: Dragomer
|
Objavljeno: Čet Jul 28, 2005 10:33 am Naslov sporočila: Poizkus nastavitve datuma/časa z eno samo tipko |
|
|
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 |
|
|
feri Neznanec
Pridružen-a: Čet 14 Jul 2005 22:36 Prispevkov: 7 Aktiv.: 0.03
|
Objavljeno: Sob Jul 30, 2005 9:44 pm Naslov sporočila: Kratek vklop |
|
|
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 |
|
|
tiger Član
Pridružen-a: Čet 05 Feb 2004 0:22 Prispevkov: 1139 Aktiv.: 5.11 Kraj: Škofja Loka
|
Objavljeno: Čet Sep 08, 2005 9:16 pm Naslov sporočila: |
|
|
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 |
|
|
|
|
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
|