Arduino UNO で使われている ATmega328/P のマニュアルがあります。
https://www.microchip.com/wwwproducts/en/ATmega328
このマニュアルの「8.6.3」に
「 EECR – The EEPROM Control Register」という項があります。
このRegister「EECR」は 8 Bitで、アドレスは「0x1F」と記されています。
この8 Bitの内容は、
– – EEPM1 EEPM0 EERIE EEMPE EEPE EERE
となっています。
このうち、Least Significant Bit から3番目の Bit 2は「EEMPE」で、これは、
• Bit 2 – EEMPE: EEPROM Master Write Enable
と説明があります。
これのほかのBit1,Bit0は以下のように、
• Bit 1 – EEPE: EEPROM Write Enable
• Bit 0 – EERE: EEPROM Read Enable
です。
さて、この「EEPE」RegisterのBit 2、すなわち「EEMPE」を使うコードのサンプルとして、次のようなCodingがあげられています。
code
1// C Code Example 2char cSREG; 3cSREG = SREG; /* store SREG value */ 4/* disable interrupts during timed sequence */ 5_CLI(); 6EECR |= (1<<EEMPE); /* start EEPROM write */ 7EECR |= (1<<EEPE); 8SREG = cSREG; /* restore SREG value (I-bit) */ 9 10//参考:CLIは、Grobal Interrupt Disableの意。
ここに記された
EECR |= (1<<EEMPE); EECR |= (1<<EEPE);
の意味を知りたいのです。
When EEMPE is set, setting EEPE within four clock cycles will write data to the EEPROM at the selected address
と説明されています。
例えば一つ目の「EEMPE」、これは一つのBitのはずですから、その内容は「1」、又は「0」のはず。
するとこれが「Enable」で「1」になったとして、これを1つ「Left Shift」すれば「10」になる。
この「10」を「EECR」Registerに「Bit Or」したら、、、、
(おっと、ちょっとへんだぞ、、、)
という訳で、整理が付きません。
入門者向けの分かりやすいアドバイスが出来る方に、ご案内お願いします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/02/13 00:45
退会済みユーザー
2019/02/13 00:49
2019/02/13 01:24 編集
退会済みユーザー
2019/02/13 01:37 編集
2019/02/13 01:47
2019/02/13 01:53
退会済みユーザー
2019/02/13 01:55