• slider image 442
  • slider image 483
  • slider image 484
  • slider image 485
  • slider image 486
  • slider image 487
  • slider image 488
  • slider image 491
:::

論壇索引


Board index » All Posts (wilence)




有人寫過RTC (real time clock)嗎?DS12C887 這顆IC....><
#31
中級會員
中級會員


您好…
最近急需利用dallas的這顆ic ,要讀取它的系統時間,我

有照datasheet上的時序來觸發,可是完全沒動作,不知道是

沒有正確定的送出addree還是怎樣,請教有經驗的人幫幫忙

非常滴感謝 T__T

發表於: 2004/12/30 17:20
頂部


Re: eeprom在timer中斷後做寫入、讀取
#32
中級會員
中級會員


已經順利解決

1. 主程式忘了Initialize_I2C_Master();

2. 宣告要讀取的型態要一致,如

unsigned int rec[];

unsigned char *wrptr = rec;

沒注意到,要設一致才對

3. InitializeAD( ) 中不該用 ADC_INT_ON , 因未處理此中斷

只用到Timer中斷,雖然這不會影響讀值


4. OpenI2C(MASTER,SLEW_ON);

SSPADD = 20; <-- 沒設到... 搞笑 = ="


大致是醬吧...提供給大家一個小參考..大多是自已疏乎掉 ><

發表於: 2004/12/4 14:55
頂部


Re: eeprom在timer中斷後做寫入、讀取
#33
中級會員
中級會員


#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中斷後做寫入、讀取
#34
中級會員
中級會員


各位先進您好

情況大概是我的pic在timer固定時間中斷後,做adc讀取

,之後放入陣列,同時我需寫入eeprom,但中斷點就停在

Write的函式,沒辦法往下跑。

之後我把adc部份拿掉,陣列直接設值,就在timer中斷後

直接寫入eeprom,情況也是一樣,沒法寫入,更別提之後要做

讀取動作。

不知各位有無遇此類情形,感謝您的指點迷津~~~

發表於: 2004/11/29 20:40
頂部


Re: ADC 定時讀取方法...  ><
#35
中級會員
中級會員


感謝您的回答

前天我就已試了此方法,已可順利解決

發表於: 2004/11/17 10:21
頂部


ADC 定時讀取方法...  ><
#36
中級會員
中級會員


各位先進您好

  想請教一下...我現在做的是pic依我的需求來固定時間,對

其電壓變化做讀取。只是當初我是調可變電阻,電壓變化後

接受到A/D interrup來ReadADC,而我是現在想使用timer固

定時間來做讀取,在timer固定時間中斷後,來讀取A/D電壓變

化,有什麼方法或函式可以自己來讀取輸入腳的電壓變化?


非常感謝各位的指導~~


發表於: 2004/11/12 19:50
頂部


Re: 讀取eeprom問題.....非常感謝各位
#37
中級會員
中級會員


您好

經過一番test後,已可順利寫、讀,感謝所有提供建言的

大大,m(_ _)m,最後想請教一下,eeprom記憶體內容

到多少才需像24LC256醬子,address byte 需改成hi btye和

low byte呢?


發表於: 2004/10/19 12:06
頂部


Re: 讀取eeprom問題.....非常感謝各位
#38
中級會員
中級會員


您好

對於各位大大的建議,小弟一定會去好好研究一番。很感

謝您們的回答,謝謝。

發表於: 2004/10/15 22:22
頂部


Re: 讀取eeprom問題.....非常感謝各位
#39
中級會員
中級會員


您好
基本上Reference Guide 和 Complier Libraries我都有,而

我是先從12.1那個範例程式下手,有error自行修改,不行後,

再以您說的書上提供的example,即是我第一篇po的source

code,由於我是使用Microchip提供的板子來練習,所以它的

eeprom是256k的,相對的,如同之前一位大大所說的,不如

使於用24LC256,所以才想請教各位有無較適合之範例。

基本差別,能再稍微解釋一下嗎?我想,讀寫的函式應是

用一樣的,而address的byte組成,小弟就較不清楚了。


非常感謝各位的解惑!~~

發表於: 2004/10/15 0:05
頂部


Re: 讀取eeprom問題.....非常感謝各位
#40
中級會員
中級會員


上述程式即是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
頂部



« 1 2 3 (4) 5 »



:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------