Gast
#319850
Hallo!
Bin gerade dabei, über die SPI eines ATmega32 eine SD-Karte
anzusteuern. Dabei verwende ich teilweise den Programmcode von Ulrich
Radig. Die Routine für das Auslesen eines Sektors versteh ich jedoch
nicht ganz:
unsigned char mmc_read_sector (unsigned long addr,unsigned char*
Buffer)
{
...
addr = addr << 9; //addr = addr * 512
CMD[1] = ((addr & 0xFF000000) >>24 );
CMD[2] = ((addr & 0x00FF0000) >>16 );
CMD[3] = ((addr & 0x0000FF00) >>8 );
...
}
Warum wird denn die Adresse um 9 nach links geshiftet (bzw. mit 512
multipliziert) und was ist mit dem niederwertigstem, also dem 4.Byte
(CMD[4]) der Adresse? Wieso wird das nicht beachtet?
Wäre sehr dankbar für jede hilfreiche Antwort!
Gruß Danyo