//#define F_CPU 8000000 #include #include #include #include "uart.h" #include "mmc.h" #include "fat.h" //SREG defines #define S_MOSI PB3 #define S_MISO PB4 #define S_SCK PB5 #define S_LATCH PB2 //DEBUG defines #define D_LED0 PC5 //SRAM defines #define R_WR PB6 #define R_RD PB7 #define R_DATA PORTD #define R_DIR DDRD #define READ_BUFFER_SIZE 512 #define DEBUG_BUFFER_SIZE 256 #define BLOCK_CNT 512 //uint8_t debug_buffer[DEBUG_BUFFER_SIZE]; uint8_t read_buffer[READ_BUFFER_SIZE]; void dprintf(const uint8_t * fmt, ...) { //va_list args; //va_start(args, fmt); //vsnprintf(debug_buffer,DEBUG_BUFFER_SIZE-1, fmt, args); //va_end(args); //uart_puts(debug_buffer); uart_puts(fmt); } void dump_packet(uint32_t addr,uint32_t len,uint8_t *packet){ uint16_t i,j; uint16_t sum =0; for (i=0;i=33 && packet[i+j]<=126 ) dprintf("%c", packet[i+j]); else dprintf("."); } dprintf("|\r\n"); } } void spi_init(void) { /* Set MOSI and SCK output, all others input */ DDRB |= ((1<>16)); spi_master_transmit((uint8_t)(addr>>8)); spi_master_transmit((uint8_t)(addr>>0)); PORTB |= (1<>16)); spi_master_transmit((uint8_t)(addr>>8)); spi_master_transmit((uint8_t)(addr>>0)); PORTB |= (1<