Gast
#1907632
void EEPROM_write(unsigned int ucAddress, unsigned char ucData)
{
/* Wait for completion of previous write */
while(EECR & (1<<EEPE));
/* Set Programming mode */
EECR = (0<<EEPM1)|(0<<EEPM0);
/* Set up address and data registers */
EEAR = ucAddress;
EEDR = ucData;
/* Write logical one to EEMPE */
EECR |= (1<<EEMPE);
/* Start eeprom write by setting EEPE */
EECR |= (1<<EEPE);
}
Das hier ist der Code aus der ATTiny24 Dokumentation von www.atmel.com.
Der Code oben stammt von Seite 18 des genannten Dokuments.
Meine Frage nun, wozu immer diese Bitshifts wie hier "EECR =
(0<<EEPM1)|(0<<EEPM0);"?
Würde das nicht das selbe sein wie "EECR = EEPM1 | EEPM0;" ? Oder gibt
es da einen Unterschied?
Die zweite Frage ist hier steht ja:
/* Write logical one to EEMPE */
EECR |= (1<<EEMPE);
Aber ist das nicht ein Bitshift des Inhalts von EEMPE um eine Stelle
(ein Bit? oder ist es ein Byte?) nach links. Und anschließend ein
bitweise OR mit EECR? Im Kommentar steht "Write logical one to EEMPE",
aber das tut die Zeile doch gar nicht? Die shiftet doch EEMPE um eins
nach links und odert das ganze dann mit EECR? confused
Ich komme vom normalen Computer C. Also ich bin eigentlich ganz gut in C
normalerweise, aber ich verstehe den Grund für das Bitshift nicht.
Wäre für eine Antwort echt dankbar.
Grüße, Joe