#include "types.h"

関数 | |
| void | EEPROM_init (void) |
| int | EEPROM_read (unsigned int ptr) |
| BOOL | EEPROM_write (unsigned int ptr, unsigned char buf) |
| void EEPROM_init | ( | void | ) |
libeeprom.c の 84 行で定義されています。
参照先 EEPROM_AD_PIN, EEPROM_AE_PIN, EEPROM_RX_SET, と EEPROM_SCL.
{
EEPROM_RX_SET();
EEPROM_SCL = EEPROM_HIGH;
/* Bank */
EEPROM_AD_PIN = EEPROM_LOW;
EEPROM_AE_PIN = EEPROM_LOW;
//EEPROM_AF_PIN = EEPROM_LOW;
return;
}
| int EEPROM_read | ( | unsigned int | ptr | ) |
libeeprom.c の 107 行で定義されています。
参照先 EEPROM_A0, EEPROM_A1, EEPROM_A2, EEPROM_A3, EEPROM_A4, EEPROM_A5, EEPROM_A6, EEPROM_A7, EEPROM_A8, EEPROM_A9, EEPROM_AA, EEPROM_AB, EEPROM_AC, EEPROM_AD, EEPROM_AD_PIN, EEPROM_AE, EEPROM_AE_PIN, EEPROM_HIGH, EEPROM_LOW, と EEPROM_MASK.
参照元 CONFIG_load().
{
unsigned char data;
// EEPROM_AF_PIN = EEPROM_MASK(ptr, EEPROM_AF);
EEPROM_AE_PIN = EEPROM_MASK(ptr, EEPROM_AE);
EEPROM_AD_PIN = EEPROM_MASK(ptr, EEPROM_AD);
EEPROM_start();
/* コントロール : 1010 AF AE AD R/W */
EEPROM_TX_pulse(EEPROM_HIGH);
EEPROM_TX_pulse(EEPROM_LOW);
EEPROM_TX_pulse(EEPROM_HIGH);
EEPROM_TX_pulse(EEPROM_LOW);
// EEPROM_TX_pulse(EEPROM_MASK(ptr, EEPROM_AF));
EEPROM_TX_pulse(EEPROM_LOW);
EEPROM_TX_pulse(EEPROM_MASK(ptr, EEPROM_AE));
EEPROM_TX_pulse(EEPROM_MASK(ptr, EEPROM_AD));
EEPROM_TX_pulse(EEPROM_LOW);
if(EEPROM_RX_pulse() == EEPROM_HIGH) goto READ_ERROR; /* Acknowledge */
/* アドレス : * * * AC AB AA A9 A8 */
EEPROM_TX_pulse(EEPROM_LOW);
EEPROM_TX_pulse(EEPROM_LOW);
EEPROM_TX_pulse(EEPROM_LOW);
EEPROM_TX_pulse(EEPROM_MASK(ptr, EEPROM_AC));
EEPROM_TX_pulse(EEPROM_MASK(ptr, EEPROM_AB));
EEPROM_TX_pulse(EEPROM_MASK(ptr, EEPROM_AA));
EEPROM_TX_pulse(EEPROM_MASK(ptr, EEPROM_A9));
EEPROM_TX_pulse(EEPROM_MASK(ptr, EEPROM_A8));
if(EEPROM_RX_pulse() == EEPROM_HIGH) goto READ_ERROR; /* Acknowledge */
/* アドレス : A7 A6 A5 A4 A3 A2 A1 A0 */
EEPROM_TX_pulse(EEPROM_MASK(ptr, EEPROM_A7));
EEPROM_TX_pulse(EEPROM_MASK(ptr, EEPROM_A6));
EEPROM_TX_pulse(EEPROM_MASK(ptr, EEPROM_A5));
EEPROM_TX_pulse(EEPROM_MASK(ptr, EEPROM_A4));
EEPROM_TX_pulse(EEPROM_MASK(ptr, EEPROM_A3));
EEPROM_TX_pulse(EEPROM_MASK(ptr, EEPROM_A2));
EEPROM_TX_pulse(EEPROM_MASK(ptr, EEPROM_A1));
EEPROM_TX_pulse(EEPROM_MASK(ptr, EEPROM_A0));
if(EEPROM_RX_pulse() == EEPROM_HIGH) goto READ_ERROR; /* Acknowledge */
/* ここから読み込み処理 */
EEPROM_start();
/* デバイスアドレス 1010 AF AE AD R/W */
EEPROM_TX_pulse(EEPROM_HIGH);
EEPROM_TX_pulse(EEPROM_LOW);
EEPROM_TX_pulse(EEPROM_HIGH);
EEPROM_TX_pulse(EEPROM_LOW);
// EEPROM_TX_pulse(EEPROM_MASK(ptr, EEPROM_AF));
EEPROM_TX_pulse(EEPROM_LOW);
EEPROM_TX_pulse(EEPROM_MASK(ptr, EEPROM_AE));
EEPROM_TX_pulse(EEPROM_MASK(ptr, EEPROM_AD));
EEPROM_TX_pulse(EEPROM_HIGH);
if(EEPROM_RX_pulse() == EEPROM_HIGH) goto READ_ERROR; /* Acknowledge */
/* データ読み出し */
data = 0;
data += EEPROM_RX_pulse() << 7;
data += EEPROM_RX_pulse() << 6;
data += EEPROM_RX_pulse() << 5;
data += EEPROM_RX_pulse() << 4;
data += EEPROM_RX_pulse() << 3;
data += EEPROM_RX_pulse() << 2;
data += EEPROM_RX_pulse() << 1;
data += EEPROM_RX_pulse();
EEPROM_TX_pulse(EEPROM_HIGH); /* No Acknowledge */
EEPROM_stop();
return(data);
READ_ERROR:
EEPROM_stop();
return(-1);
}

| BOOL EEPROM_write | ( | unsigned int | ptr, | |
| unsigned char | buf | |||
| ) |
libeeprom.c の 200 行で定義されています。
参照先 EEPROM_A0, EEPROM_A1, EEPROM_A2, EEPROM_A3, EEPROM_A4, EEPROM_A5, EEPROM_A6, EEPROM_A7, EEPROM_A8, EEPROM_A9, EEPROM_AA, EEPROM_AB, EEPROM_AC, EEPROM_AD, EEPROM_AD_PIN, EEPROM_AE, EEPROM_AE_PIN, EEPROM_HIGH, EEPROM_LOW, EEPROM_MASK, FALSE, rtc, RTC_get_ticks(), RTC::tick, と TRUE.
{
unsigned int wait;
// EEPROM_AF_PIN = EEPROM_MASK(ptr, EEPROM_AF);
EEPROM_AE_PIN = EEPROM_MASK(ptr, EEPROM_AE);
EEPROM_AD_PIN = EEPROM_MASK(ptr, EEPROM_AD);
EEPROM_start();
/* コントロール : 1010 AF AE AD R/W */
EEPROM_TX_pulse(EEPROM_HIGH);
EEPROM_TX_pulse(EEPROM_LOW);
EEPROM_TX_pulse(EEPROM_HIGH);
EEPROM_TX_pulse(EEPROM_LOW);
// EEPROM_TX_pulse(EEPROM_MASK(ptr, EEPROM_AF));
EEPROM_TX_pulse(EEPROM_LOW);
EEPROM_TX_pulse(EEPROM_MASK(ptr, EEPROM_AE));
EEPROM_TX_pulse(EEPROM_MASK(ptr, EEPROM_AD));
EEPROM_TX_pulse(EEPROM_LOW);
if(EEPROM_RX_pulse() == EEPROM_HIGH) goto WRITE_ERROR; /* Acknowledge */
/* アドレス : * * * AC AB AA A9 A8 */
EEPROM_TX_pulse(EEPROM_LOW);
EEPROM_TX_pulse(EEPROM_LOW);
EEPROM_TX_pulse(EEPROM_LOW);
EEPROM_TX_pulse(EEPROM_MASK(ptr, EEPROM_AC));
EEPROM_TX_pulse(EEPROM_MASK(ptr, EEPROM_AB));
EEPROM_TX_pulse(EEPROM_MASK(ptr, EEPROM_AA));
EEPROM_TX_pulse(EEPROM_MASK(ptr, EEPROM_A9));
EEPROM_TX_pulse(EEPROM_MASK(ptr, EEPROM_A8));
if(EEPROM_RX_pulse() == EEPROM_HIGH) goto WRITE_ERROR; /* Acknowledge */
/* アドレス : A7 A6 A5 A4 A3 A2 A1 A0 */
EEPROM_TX_pulse(EEPROM_MASK(ptr, EEPROM_A7));
EEPROM_TX_pulse(EEPROM_MASK(ptr, EEPROM_A6));
EEPROM_TX_pulse(EEPROM_MASK(ptr, EEPROM_A5));
EEPROM_TX_pulse(EEPROM_MASK(ptr, EEPROM_A4));
EEPROM_TX_pulse(EEPROM_MASK(ptr, EEPROM_A3));
EEPROM_TX_pulse(EEPROM_MASK(ptr, EEPROM_A2));
EEPROM_TX_pulse(EEPROM_MASK(ptr, EEPROM_A1));
EEPROM_TX_pulse(EEPROM_MASK(ptr, EEPROM_A0));
if(EEPROM_RX_pulse() == EEPROM_HIGH) goto WRITE_ERROR; /* Acknowledge */
/* データ書き込み */
EEPROM_TX_pulse(EEPROM_MASK(buf, EEPROM_A7));
EEPROM_TX_pulse(EEPROM_MASK(buf, EEPROM_A6));
EEPROM_TX_pulse(EEPROM_MASK(buf, EEPROM_A5));
EEPROM_TX_pulse(EEPROM_MASK(buf, EEPROM_A4));
EEPROM_TX_pulse(EEPROM_MASK(buf, EEPROM_A3));
EEPROM_TX_pulse(EEPROM_MASK(buf, EEPROM_A2));
EEPROM_TX_pulse(EEPROM_MASK(buf, EEPROM_A1));
EEPROM_TX_pulse(EEPROM_MASK(buf, EEPROM_A0));
if(EEPROM_RX_pulse() == EEPROM_HIGH) goto WRITE_ERROR; /* Acknowledge */
EEPROM_stop();
/* Write Cycle Time */
wait = rtc.tick;
while(RTC_get_ticks(wait, rtc.tick) < 100);
return(TRUE);
WRITE_ERROR:
EEPROM_stop();
return(FALSE);
}

1.7.1