有人寫過RTC (real time clock)嗎?DS12C887 這顆IC....><
|
||||
---|---|---|---|---|
中級會員
|
您好…
最近急需利用dallas的這顆ic ,要讀取它的系統時間,我 有照datasheet上的時序來觸發,可是完全沒動作,不知道是 沒有正確定的送出addree還是怎樣,請教有經驗的人幫幫忙 非常滴感謝 T__T
發表於: 2004/12/30 17:20
|
|||
|
Re: eeprom在timer中斷後做寫入、讀取
|
||||
---|---|---|---|---|
中級會員
|
#pragma code isrhighcode = 0x0008
void isr_high_direct(void) { _asm //begin in-line assembly goto isr_high //go to isr_high function _endasm //end in-line assembly } #pragma code //----------------------------------------------------------------- #pragma interrupt isr_high void isr_high(void) { if(PIR1bits.TMR2IF) { RCint(); PIR1bits.TMR2IF = 0 ; //Clear Timer2 interrupt Flag } } #pragma code //-------------------------------------------------------- void RCint() { CC++ ; counter++ ; if(counter/45==1) // 約3秒 { ConvertADC(); // Convert A/D while(BusyADC( )); // Waiting A/D until done result = ReadADC(); PORTB=ADRESH; // Put A/D result on LEDs count += 1; rec[count] = result; counter = 0 ; } if(CC/135==1) { EE_Page_Write(0xA0,0x00,0x01,10,wrptr); EEPROM_ACK(0xA0); EE_SEQU_Read(0xA0,0x00,0x01,10,rdptr); CC = 0; } } ps. wrptr是指標,指向rec陣列 rdptr是指向另一要讀取eeprom的陣列 //------------------------------------------------------- void EE_Page_Write(unsigned char ctrl,unsigned char addr_h,unsigned char addr_l,unsigned char length,unsigned char *dptr) { IdleI2C(); StartI2C(); I2C_Done(); WriteI2C(ctrl); while(SSPCON2bits.ACKSTAT); I2C_Done(); WriteI2C(addr_h); while(SSPCON2bits.ACKSTAT); I2C_Done(); WriteI2C(addr_l); while(SSPCON2bits.ACKSTAT); I2C_Done(); while (length!=0) { WriteI2C(*dptr); while(SSPCON2bits.ACKSTAT); I2C_Done(); dptr++; length--; } StopI2C(); I2C_Done(); } //----------------------------------------------------------- void I2C_Done(void) { while (!PIR1bits.SSPIF); PIR1bits.SSPIF=0; } ************************************* 主要在RCint這個中斷副程式上 程式流程是每兩秒我會做adc讀取,三次後我需把資料存入 eeprom,但程式就是停在EE_Page_Write上,在Write的副程 式裡停在I2C_Done(),Done的副程式停在while的判別式, 之前是單純在while(1)下跑,陣列都先預設好資料,可以存也 可以讀,I2C_Done那也沒問題,但移到timer的中斷副程式下 就完全動不了,很令人疑惑~~ 對了,還有eeprom是外接的256k的eeprom 情況大致如此,謝謝各位
發表於: 2004/11/30 10:58
|
|||
|
eeprom在timer中斷後做寫入、讀取
|
||||
---|---|---|---|---|
中級會員
|
各位先進您好
情況大概是我的pic在timer固定時間中斷後,做adc讀取 ,之後放入陣列,同時我需寫入eeprom,但中斷點就停在 Write的函式,沒辦法往下跑。 之後我把adc部份拿掉,陣列直接設值,就在timer中斷後 直接寫入eeprom,情況也是一樣,沒法寫入,更別提之後要做 讀取動作。 不知各位有無遇此類情形,感謝您的指點迷津~~~
發表於: 2004/11/29 20:40
|
|||
|
Re: ADC 定時讀取方法... ><
|
||||
---|---|---|---|---|
中級會員
|
感謝您的回答
前天我就已試了此方法,已可順利解決
發表於: 2004/11/17 10:21
|
|||
|
ADC 定時讀取方法... ><
|
||||
---|---|---|---|---|
中級會員
|
各位先進您好
想請教一下...我現在做的是pic依我的需求來固定時間,對 其電壓變化做讀取。只是當初我是調可變電阻,電壓變化後 接受到A/D interrup來ReadADC,而我是現在想使用timer固 定時間來做讀取,在timer固定時間中斷後,來讀取A/D電壓變 化,有什麼方法或函式可以自己來讀取輸入腳的電壓變化? 非常感謝各位的指導~~
發表於: 2004/11/12 19:50
|
|||
|
Re: 讀取eeprom問題.....非常感謝各位
|
||||
---|---|---|---|---|
中級會員
|
您好
經過一番test後,已可順利寫、讀,感謝所有提供建言的 大大,m(_ _)m,最後想請教一下,eeprom記憶體內容 到多少才需像24LC256醬子,address byte 需改成hi btye和 low byte呢?
發表於: 2004/10/19 12:06
|
|||
|
Re: 讀取eeprom問題.....非常感謝各位
|
||||
---|---|---|---|---|
中級會員
|
您好
對於各位大大的建議,小弟一定會去好好研究一番。很感 謝您們的回答,謝謝。
發表於: 2004/10/15 22:22
|
|||
|
Re: 讀取eeprom問題.....非常感謝各位
|
||||
---|---|---|---|---|
中級會員
|
您好
基本上Reference Guide 和 Complier Libraries我都有,而 我是先從12.1那個範例程式下手,有error自行修改,不行後, 再以您說的書上提供的example,即是我第一篇po的source code,由於我是使用Microchip提供的板子來練習,所以它的 eeprom是256k的,相對的,如同之前一位大大所說的,不如 使於用24LC256,所以才想請教各位有無較適合之範例。 基本差別,能再稍微解釋一下嗎?我想,讀寫的函式應是 用一樣的,而address的byte組成,小弟就較不清楚了。 非常感謝各位的解惑!~~
發表於: 2004/10/15 0:05
|
|||
|
Re: 讀取eeprom問題.....非常感謝各位
|
||||
---|---|---|---|---|
中級會員
|
上述程式即是12.1的範例,complier後因有LCDxx等的error,所以自行修正忽略掉所有關LCD的函式,其餘原封不動,下述是所定義的Function Prototype,最後所得到的Read_Data沒有值, f是在EEPROM_Read完後的回傳值為10(十六進制),但真的不是很清楚程式中的Send_Data、Send_Addr值到底為何?...且不知回應的f值是否為正確?
程式都頗長的,不知各位大大有沒有適合的範例... 感謝各位解惑... #pragma udata access My_RAM near unsigned char Debounce; near unsigned char Send_Addr; near unsigned char Send_Data; near unsigned char Send_Length; near unsigned char Read_Data; near unsigned char P_SW2; near unsigned char P_SW6; #pragma udata #define Page_Length 8 #define SW2 PORTAbits.RA4 #define SW6 PORTEbits.RE1 #define Bounce_Time 6 #define EE_CMD 0xA0
發表於: 2004/10/14 22:21
|
|||
|