 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
dgregor Član

Pridružen-a: Čet 06 Jan 2005 13:55 Prispevkov: 32 Aktiv.: 0.14 Kraj: Celje
|
Objavljeno: Pon Maj 15, 2006 3:04 pm Naslov sporočila: PIC in čip za realni čas PCF8583! |
|
|
Pozdravljeni!
Je že kdo uporabljal za štetje realnega časa na PIC-u Phillipsov čip PCF8583?
Prosim za mnenja in izkušnje oziroma obstaja kakšna blojša varianta?
Vnaprej hvala za komentarje!
Lp, Gregor |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.94 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Pon Maj 15, 2006 3:05 pm Naslov sporočila: |
|
|
Odtipkaj v iskalnik na forumu PCF8593 _________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
jur Član


Pridružen-a: Pet 02 Dec 2005 14:45 Prispevkov: 5142 Aktiv.: 21.71 Kraj: [color=zelena]Ljubljana[/color]
|
Objavljeno: Pon Maj 15, 2006 3:21 pm Naslov sporočila: |
|
|
Ta chip deluje lepo. Na internetu je cul kup primerov za uporabo. Ni drag in ga imajo pri nas v trgovinah. Verjetno obstja tudi kašna boljša verzija, vendar je ta povsem v redu.
Jur |
|
Nazaj na vrh |
|
 |
California Član

Pridružen-a: Pet 26 Avg 2005 19:48 Prispevkov: 236 Aktiv.: 1.00 Kraj: Hrastnik
|
Objavljeno: Pon Maj 15, 2006 7:32 pm Naslov sporočila: |
|
|
Poizkusi! PIC18F458. LP Vlado
Koda: |
program RTCmbasic 'DELA NA PORTD 4,3;
dim Sec as byte
dim Min as byte
dim Hr as byte
dim Day as byte
dim Mn as byte
dim Year as byte
dim txt as char[16]
dim Tipka_RD0, minuta as byte
sub procedure Set_Clk
'i2C_Start ' issue start signal
Soft_I2C_Start
'I2C_Wr($A0) ' address PCF8583
Soft_I2C_Write($A0)
delay_ms(5)
'I2C_Wr(0) ' start from word at address 0 (configuration word)
Soft_I2C_Write(0)
delay_ms(5)
'I2C_Wr($80) '0 write $80 to config. (pause counter...)
Soft_I2C_Write($80)
delay_ms(5)
'I2C_Wr(0) '1 write 0 to cents word
Soft_I2C_Write(0)
delay_ms(5)
'I2C_Wr(0) '2 write 0 to seconds word
Soft_I2C_Write(0)
delay_ms(5)
'I2C_Wr(minuta) '3 write $56 to minutes word
Soft_I2C_Write($56)
delay_ms(5)
'I2C_Wr($C0+$9) '4 $80 is 12hr mode A.M., write $10 to hours word 80
' $C0 is 12hr mode P.M.,
Soft_I2C_Write($C0+$9)
delay_ms(5)
'I2C_Wr($80+$18) '5 write $80=2006, +$17 to year/date word
Soft_I2C_Write($80+$18)
delay_ms(5)
'I2C_Wr($03) '6 write $02 to weekday/month
Soft_I2C_Write($03) '2
delay_ms(5)
'I2C_Stop ' issue stop signal
Soft_I2C_Stop
'i2C_Start ' issue start signal
Soft_I2C_Start
'I2C_Wr($A0) ' address PCF8530
Soft_I2C_Write($A0)
delay_ms(5)
'I2C_Wr(0) ' start from word at address 0
Soft_I2C_Write(0)
delay_ms(5)
'I2C_Wr(0) ' write 0 to config word (enable counting)
Soft_I2C_Write(0)
delay_ms(5)
'I2C_Stop ' issue stop signal
Soft_I2C_Stop
end sub
sub procedure Zero_fill(dim byref value as char[10]) ' fill text repesentation
if length(value) = 1 then ' with leading zero
value[2] = value[1]
value[1] = 48
value[0] = 2
end if
end sub
' reads time and date information from RTC (PCF8583)
sub procedure Read_time(dim byref Sec as byte,
dim byref Min as byte,
dim byref Hr as byte,
dim byref Day as byte,
dim byref Mn as byte)
soft_i2c_start
delay_us(20)
soft_i2c_write($A0)
delay_us(20)
soft_i2c_write(2)
delay_us(20)
soft_i2c_start
delay_us(20)
soft_i2c_write($A1)
delay_us(20)
sec=soft_i2c_read(1)
min = soft_i2c_read(1)
hr = soft_i2c_read(1)
day =soft_i2c_read(1)
mn = soft_i2c_read(0)
soft_I2C_Stop
end sub
sub procedure Transform_time(dim byref Sec as byte,
dim byref Min as byte,
dim byref Hr as byte,
dim byref Day as byte,
dim byref Mn as byte,
dim byref Year as byte)
sec = ((sec and $F0) >> 4)*10 + (sec and $0F) ' formats date and time
min = ((min and $F0) >> 4)*10 + (min and $0F)
hr = ((hr and $F0) >> 4)*10 + (hr and $0F)
year = ((day and $C0)) >> 6
day = ((day and $30) >> 4)*10 + (day and $0F)
mn = ((mn and $10) >> 4)*10 + (mn and $0F)
end sub
sub procedure Display_time(dim Sec as byte,
dim Min as byte,
dim Hr as byte,
dim Day as byte,
dim Mn as byte,
dim Year as byte)
ByteToStr(day,txt)
Zero_fill(txt)
LCD_Out(1,6,txt)
ByteToStr(mn,txt)
Zero_fill(txt)
LCD_Out(1,9,txt)
LCD_Chr(1,16,52+year)
ByteToStr(hr,txt)
LCD_Out(2,6,txt)
ByteToStr(min,txt)
Zero_fill(txt)
LCD_Out(2,9,txt)
ByteToStr(sec,txt)
Zero_fill(txt)
LCD_Out(2,12,txt)
end sub
sub procedure Init
INTCON2 = $80 '18F458
CMCON = 7 'comparators on portD off
TRISB = 0 ' designate portd as output
LCD_init(portb) ' initialize LCD on PORTB
txt = "Date:" ' prepare and output static text on LCD
LCD_Out(1,1,txt) '
'
txt = "Time:"
LCD_Out(2,1,txt)
txt = "200"
LCD_Out(1,13,txt)
Lcd_Cmd(LCD_CURSOR_OFF)
end sub
main:
Init ' perform initialization
soft_i2c_config(PORTD,4,3)
while true
'Init
'soft_i2c_config(PORTD,4,3)
Read_Time(Sec, Min, Hr, Day, Mn) ' read time from RTC(PCF8583)
Transform_Time(Sec, Min, Hr, Day, Mn, Year) ' format data and time
Display_Time(Sec, Min, Hr, Day, Mn, Year) ' prepare and display on LCD
Lcd_Chr(1,9,".")
Lcd_Chr(1,12,".")
Lcd_Chr(2,9,":")
Lcd_Chr(2,12,":")
Delay_ms(1000) ' wait 1s
wend
end. |
_________________ California |
|
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: 492 dni
Powered by phpBB © 2001, 2005 phpBB Group
|