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++;
}
Ejemplo n.º 2
0
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>");
		}
	}

}
Ejemplo n.º 3
0
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);
}