• 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)




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


以下是從版上範例程式中來的,這program可讀寫24LCxx系列的eeprom程式,我稍微修改,只單純讀寫一個byte,但還是讀寫不到值,是什麼問題呢?

謝謝各位的教導。

#include <p18f452.h>
#include <i2c.h>
#include <stdlib.h>

void Initialize_I2C_Master(void);
void EE_SEQU_Read(unsigned char,unsigned char,unsigned char,unsigned char *);
void EEPROM_Write(unsigned char,unsigned char,unsigned char);
void EEPROM_ACK(unsigned char);
void InitialPort(void);
unsigned char EEPROM_Read(unsigned char,unsigned char);

#define SW2 PORTAbits.RA4

unsigned char Read_Data;

void main(void)
{
TRISAbits.TRISA4=1;
Initialize_I2C_Master( );

while(1)
{
if(!SW2)
{
EEPROM_Write(0xA0,0x10,0x05);
EEPROM_ACK(0xA0);
Read_Data = EEPROM_Read(0xA0,0x10);
}
}
}
//--------------------------------------------------------------
void EEPROM_Write(unsigned char ctrl,unsigned char addr,unsigned char data)
{
IdleI2C();
StartI2C();
I2C_Done();
WriteI2C(ctrl);
while(SSPCON2bits.ACKSTAT); I2C_Done();
WriteI2C(addr);
while(SSPCON2bits.ACKSTAT); I2C_Done();

WriteI2C(data); while(SSPCON2bits.ACKSTAT); I2C_Done();

StopI2C(); I2C_Done();
}
//-----------------------------------------------------------------
void EEPROM_ACK(unsigned char ctrl)
{
unsigned char i;

IdleI2C(); StartI2C(); I2C_Done();
WriteI2C(ctrl); I2C_Done();
while (SSPCON2bits.ACKSTAT)
{
for (i=0;i<100;i++);
RestartI2C();
I2C_Done();
WriteI2C(ctrl); I2C_Done();
}
StopI2C();
I2C_Done();
}
//-------------------------------------------------------------unsigned char EEPROM_Read(unsigned char ctrl,unsigned char addr)
{
unsigned char f;

IdleI2C();
StartI2C();
I2C_Done();
WriteI2C(ctrl);
while(SSPCON2bits.ACKSTAT); I2C_Done();
WriteI2C(addr);
while(SSPCON2bits.ACKSTAT); I2C_Done();
RestartI2C(); I2C_Done();

WriteI2C(ctrl+1); while(SSPCON2bits.ACKSTAT); I2C_Done();

f=ReadI2C(); I2C_Done();
NotAckI2C(); I2C_Done();
StopI2C();
I2C_Done();
return(f);
}
//-----------------------------------------------
void I2C_Done(void)
{
while (!PIR1bits.SSPIF);
PIR1bits.SSPIF=0;
}
//------------------------------------------------
void Initialize_I2C_Master(void)
{
OpenI2C(MASTER,SLEW_ON);
SSPADD= 9;
}









發表於: 2004/10/14 16:33
頂部


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


找到了…很感謝您

發表於: 2004/10/14 14:20
頂部


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


版大您好..

我找了workshop裡的教材及講義,沒看到您說的練習6-2,

是在檔案下載嗎。

真的很感謝您..

發表於: 2004/10/14 12:42
頂部


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


想請教eeprom讀寫問題.....感謝各位
想請教一下,以下是我的source code

#include <p18f452.h>
#include "i2c.h"
#define SW2 PORTAbits.RA4

void InitialPort(void);
void Delay(unsigned int count);
void main(void);

unsigned char arraywr[] = {1,2,3,4,5,6,7,8,9};
unsigned char *wrptr = arraywr;
unsigned char arrayrd[10]={0};
unsigned char *rdptr = arrayrd;
unsigned char a,b,c;
unsigned int aa;


void main(void)
{
TRISAbits.TRISA4=1; // Set SW2 for input
InitialPort() ;
OpenI2C(MASTER,SLEW_ON);
SSPADD= 9;

while(1)
{
if(!SW2)
{

a = EEPageWrite(0xA0, 0x70, wrptr);
b = EEAckPolling(0xA1);
c = EESequentialRead(0xA0, 0x70, rdptr,15);
aa = EERandomRead(0xA0, 0x30);

}
}
}

我是對24LC256做存取,單純把一陣列寫入eeprom,和讀出,可是小弟用watch觀察讀出陣列,但都沒有寫入值,不知道寫入法式不對還是怎樣,我有參看版上提供的範例程式,但太複雜,所以就先以Microchip Reference Guide提供的example練習,還是有問題。

還是各位大大有簡單的做存取程式範例呢?

感謝各位大大的回答…小弟感激不盡 m(_ _)m

剛學pic沒幾個禮拜,所以,請各位大大見諒

發表於: 2004/10/14 11:16
頂部


想請教eeprom讀寫問題.....感謝各位
#45
中級會員
中級會員


想請教一下,以下是我的source code

#include <p18f452.h>
#include "i2c.h"
#define SW2 PORTAbits.RA4

void InitialPort(void);
void Delay(unsigned int count);
void main(void);

unsigned char arraywr[] = {1,2,3,4,5,6,7,8,9};
unsigned char *wrptr = arraywr;
unsigned char arrayrd[10]={0};
unsigned char *rdptr = arrayrd;
unsigned char a,b,c;
unsigned int aa;


void main(void)
{
TRISAbits.TRISA4=1; // Set SW2 for input
InitialPort() ;
OpenI2C(MASTER,SLEW_ON);
SSPADD= 9;

while(1)
{
if(!SW2)
{

a = EEPageWrite(0xA0, 0x70, wrptr);
b = EEAckPolling(0xA1);
c = EESequentialRead(0xA0, 0x70, rdptr,15);
aa = EERandomRead(0xA0, 0x30);

}
}
}

這是單純把一陣列寫入eeprom,和讀出,可是小弟用watch觀
察讀出陣列,但都沒有寫入值,不知道寫入法式不對還是怎樣,我有參看版上提供的範例程式,但太複雜,所以就先以Microchip Reference Guide提供的example練習,但還是有問題。

感謝各位大大的回答…小弟感激不盡 m(_ _)m

剛學pic沒幾個禮拜,所以,請各位大大見諒

發表於: 2004/10/13 22:50
頂部



« 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... ]

教育訓練中心

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