osEepromLongWrite.htm
1.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<HTML>
<HEAD>
<TITLE>Manual for osEepromLongWrite</TITLE>
</HEAD>
<BODY>
<P>
<B><FONT FACE="Arial">osEepromLongWrite(3P) <BR>
</FONT></B>
<P>
<B>関数名<BR>
</B>
<P>
osEepromLongRead, osEepromLongWrite
<P>
→ EEPROMの複数ブロックのリード/ライト
<BR>
<P>
<B>構文<BR>
</B>
<P>
#include <ultra64.h><BR>
<P>
s32 osEepromLongRead (OSMesgQueue *mq, u8 address,
u8 *buffer, int nbytes);<BR>
<B>s32 osEepromLongWrite(OSMesgQueue *mq, u8 address,
u8 *buffer, int nbytes);</B><BR>
<P>
<B>説明<BR>
</B>
osEepromLongRead関数は、EEPROM に対してリードコマンドを発行し、
address で指定したアドレスから、nbytes バイトのデータを読み込みます。
また、<B>osEepromLongWrite</B>関数は、EEPROM
に対してライトコマンドを発行して、address で指定したアドレスから、
nbytes バイトのデータを書き込みます。
<P>
データ格納用バッファ bufferは、
nbytes バイトのデータが格納できるだけのサイズを用意しておく必要があります。
また、ハードウェアの制限から、転送するバイト数
nbyte は 8の倍数にしなければなりません。
<P>
メッセージキュー mq は、OS_EVENT_SI
イベントに関連付けて初期化されたメッセージキューでなければなりません。
詳しくは、<A HREF="osSetEventMesg.htm" >osSetEventMesg</A>(3P)
を参照してください。
アドレス addressは、EEPROM ブロックアドレスであることに注意してください。
8バイト単位のブロックですので、実際のアドレスを8で割った値を指定する必要があります。<BR>
<P>
EEPROM の書き込みコマンドは、転送終了までに最大およそ15ミリ秒の時間がかかります。
osEepromLongWrite では、内部的にはタイマを使用してこれに対処しています。
<P>
さらに注意点として、
関数 osEepromLongRead や osEepromLongWrite を呼ぶ前に、
<A HREF="osContInit.htm" >osContInit</A>(3P)を呼んでおく必要があります。
これは、OS の低レベルでの初期化のためです。 <BR>
<P>
<B>参照<BR>
</B>
<P>
<A HREF="osContInit.htm" >osContInit</A> (3P), <A HREF="osEepromProbe.htm" >osEepromProbe</A>
(3p),
<A HREF="osEepromRead.htm" >osEepromRead</A> (3p), <A HREF="osEepromWrite.htm" >osEepromWrite</A>
(3p).<BR>
</BODY>
</HTML>