void write_char (char c) { // At end of sector. if (mmc_buf_i == sizeof(mmc_buf)/sizeof(*mmc_buf)) { // Write the sector.. mmcWrite(conf->current_sector, mmc_buf); conf->current_sector++; conf->check_sum = checksum(conf->current_sector); // Write new end sector to config. mmcWrite(CONFIG_SECTOR, config_buf); memset(mmc_buf, 0, sizeof(mmc_buf)); mmc_buf_i = 0; } // Put char in sector buffer. mmc_buf[mmc_buf_i] = c; mmc_buf_i++; }
void mmcTest(void) { uint32_t sector=0; uint8_t buffer[0x200]; int c; // initialize MMC interface mmcInit(); // print new prompt rprintf("\r\ncmd>"); // testing loop while(1) { // check for keypress if((c=uartGetByte()) != -1) { switch(c) { case 'i': // initialize card rprintf("\r\nResetting MMC/SD Card\r\n"); mmcReset(); break; case 'r': // read current sector into buffer rprintf("\r\nRead Sector %d\r\n", sector); mmcRead(sector, buffer); // print buffer contents debugPrintHexTable(0x200, buffer); break; case 'w': // write current sector with data from buffer rprintf("\r\nWrite Sector %d\r\n", sector); mmcWrite(sector, buffer); break; // move to new sector case '+': sector++; rprintf("\r\nSector = %d", sector); break; case '-': sector--; rprintf("\r\nSector = %d", sector); break; case '*': sector+=512; rprintf("\r\nSector = %d", sector); break; case '/': sector-=512; rprintf("\r\nSector = %d", sector); break; case '\r': default: break; } // print new prompt rprintf("\r\ncmd>"); } } }
void disk_writeflush() { // Finalize write process int retry=16; //zkusi to maximalne 16x int ret; //printf(":WSECT:%d",n_actual_mmc_sector); do { ret = mmcWrite(n_actual_mmc_sector); //vraci 0 kdyz ok retry--; } while (ret && retry); //printf(":WD:"); }
void temperature_timer_interrupt (void) { char buf[16]; u08 i; short temperature; if(conf->current_sector > mmcSectorCount) { cbi(PORTA,PA0); return; } else { sbi(PORTA,PA0); } do { temperature = read_temperature(); } while(temperature>>TEMPERATURE_POINT < -200); // Format temperature. format_temperature(buf, temperature); for (i = 0; buf[i] != '.'; i++); if (buf[i + 2] >= '5') buf[i + 1]++; buf[i + 2] = '\0'; //cbi(PORTA, PA0); if (mmc_buf_i != 0 || conf->current_sector != START_SECTOR) write_char('\n'); for (i = 0; buf[i] != '\0'; i++) write_char(buf[i]); write_char('\0'); mmc_buf_i--; // Write to sector. mmcWrite(conf->current_sector, mmc_buf); //sbi(PORTA, PA0); }