
Appendix 2
6(15)
while(UART_cReadChar() == 0x00); // Scans for valid data
data_size[0] = UART_bReadRxData(); // Stores Lowest byte of
// file size
data_size[1] = UART_cGetChar(); // Stores middle byte of file size
data_size[2] = UART_cGetChar(); // Stores highest byte of file size
// Find number of bytes left after all 512 size writes will be made
file_size_partial = ((data_size[1]<<8)|data_size[0]) + 1;
while(file_size_partial > 512) file_size_partial = file_size_partial - 512;
file_size = file_size_partial;
// Writes file size to directory entry string
directory[60] = data_size[0];
directory[61] = data_size[1];
directory[62] = data_size[2];
// Gets number of sectors for proper future loop counts
while(UART_cReadChar() == 0x00);
number_of_sectors[0] = UART_bReadRxData();
number_of_sectors[1] = UART_cGetChar();
sectors = ((number_of_sectors[1]<<8)|number_of_sectors[0]) - 1;
card_initialize(); // SD card initialization into SPI mode
Counter8_WritePeriod(0x30); // Sets period to 30 clocks
Counter8_WriteCompareValue(0x15); // Generates a 50% duty cycle
write_data_init(0x00, 0x00, 0x04, 0x00); // Writes first FAT entry
start_token();
for(i=0;i<sizeof(fat);i++)
{
write_data_raw(fat[i])
;
}
write_data_fill(sizeof(fat));
write_CRC();
stop_token();
// Address sector 2, offset 400
write_data_init(0x00, 0x01, 0xE2, 0x00); // Writes second FAT entry
start_token();
for(i=0;i<sizeof(fat);i++)
{
write_data_raw(fat[i])
;
}
write_data_fill(sizeof(fat));
write_CRC();
stop_token();
// Address sector 241, offset 1E200
write_data_init(0x00, 0x03, 0xC0, 0x00); // Writes DIRECTORY entry
start_token(); // Address sector 480, offset 3C000
for(i=0;i<sizeof(directory);i++)
{
write_data_raw(directory[i]);
}
write_data_fill(sizeof(directory));
write_CRC();
stop_token();
Komentarze do niniejszej Instrukcji