Exemple #1
0
//*******************************************************************************************
//
// Function : icmp_send_request
// Description : Send ARP request packet to destination.
//
//*******************************************************************************************
void enc28j60WriteOp(BYTE op, BYTE address, BYTE data)
{
	CSACTIVE;

	SPISendByte(op | (address & ADDR_MASK));
	
	SPISendByte( data);
	CSPASSIVE;
}
Exemple #2
0
void enc28j60WriteBuffer(uint16_t len, uint8_t* data)
{
        CSACTIVE;
        
        SPISendByte(ENC28J60_WRITE_BUF_MEM);
        
        while(len)
        {
                len--;
                
                SPISendByte(*data);
                data++;
                
        }
        CSPASSIVE;
}
Exemple #3
0
void OLEDWriteData(unsigned char data)
{
	OLEDSetDC(1); // 1 = Date, 0 = Command
	OLEDSetCS(0); // 1 = OLED Chip Select

	SPISendByte(data);

	OLEDSetCS(1); // 0 = Chip Select Disable
	OLEDSetDC(0); // 1 = Date, 0 = Command

}
Exemple #4
0
void OLEDWriteCmd(unsigned char cmd)
{
	OLEDSetDC(0); // 1 = Date, 0 = Command
	OLEDSetCS(0); // 1 = OLED Chip Select

	SPISendByte(cmd);

	OLEDSetCS(1); // 0 = Chip Select Disable
	OLEDSetDC(1); // 1 = Date, 0 = Command

}
Exemple #5
0
void enc28j60ReadBuffer(uint16_t len, uint8_t* data)
{
        CSACTIVE;

        SPISendByte(ENC28J60_READ_BUF_MEM);
        while(len)
        {
                len--;

                *data = SPIReadByte();
                data++;
        }
        *data='\0';
        CSPASSIVE;
}
Exemple #6
0
//*******************************************************************************************
//
// Function : icmp_send_request
// Description : Send ARP request packet to destination.
//
//*******************************************************************************************
BYTE enc28j60ReadOp(BYTE op, BYTE address)
{
        BYTE data;
	// activate CS
	CSACTIVE;
        
	// issue read command
	SPISendByte(op | (address & ADDR_MASK));
	// read data
	data = SPIReadByte();
	// do dummy read if needed (for mac and mii, see datasheet page 29)
	if(address & 0x80)
	{
		data = SPIReadByte();
	}

	CSPASSIVE;
	return data;
}
Exemple #7
0
// Timer a interrupt service routine, add code here for IN LAB
	__interrupt void TimerA0_routine(void)
{
		P1OUT &= ~BIT3; //array 100
		SPISendByte(0x20);
		SPISendByte(array100[num1] >> 8);
		SPISendByte(array100[num1]);
		P1OUT |= BIT3;

		P1OUT &= ~BIT3;		 //array 300
		SPISendByte(0x21);
		SPISendByte(array300[num1] >> 8);
		SPISendByte(array300[num1]);
		P1OUT |= BIT3;

		P1OUT &= ~BIT3;		 //array 500
		SPISendByte(0x22);
		SPISendByte(array500[num1] >> 8);
		SPISendByte(array500[num1]);
		P1OUT |= BIT3;

		P1OUT &= ~BIT3;		 //array 700
		SPISendByte(0x23);
		SPISendByte(array700[num2] >> 8);
		SPISendByte(array700[num2]);
		P1OUT |= BIT3;

		num1++;
		num2++;

		if (num1 == 224) {
			num1 = 0;
		}

		if (num2 == 32) {
			num2 = 0;
		}
}
//Read a register from the memory
static int _F9_Handler (void)
{
	uint8_t RegToRead 		= argAsInt(1);
	uint8_t BufferNumber 	= argAsInt(2);
	uint16_t Addr 			= argAsInt(3);
	uint8_t DataBuffer[10];
	
	if(RegToRead == 1)
	{
		AT45DB321D_Select();
	}
	else if(RegToRead == 0)
	{
		AT45DB321D_Deselect();
	}
	else if(RegToRead == 2)	//Read status
	{
		//SPI_Init(SPI_SPEED_FCPU_DIV_2 | SPI_ORDER_MSB_FIRST | SPI_SCK_LEAD_FALLING | SPI_SAMPLE_TRAILING | SPI_MODE_MASTER);		
		InitSPIMaster(0,0);		//Mode 0,0 is good
		printf_P(PSTR("Stat: 0x%02X\n"), AT45DB321D_ReadStatus());
	}
	else if(RegToRead == 3)	//Read IDs
	{
		//SPI_Init(SPI_SPEED_FCPU_DIV_2 | SPI_ORDER_MSB_FIRST | SPI_SCK_LEAD_FALLING | SPI_SAMPLE_TRAILING | SPI_MODE_MASTER);		
		InitSPIMaster(0,0);		//Mode 0,0 is good
		AT45DB321D_Select();
		SPISendByte(AT45DB321D_CMD_READ_DEVICE_ID);
		printf_P(PSTR("ID[1]: 0x%02X\n"), SPISendByte(0x00));
		printf_P(PSTR("ID[2]: 0x%02X\n"), SPISendByte(0x00));
		printf_P(PSTR("ID[3]: 0x%02X\n"), SPISendByte(0x00));
		printf_P(PSTR("ID[4]: 0x%02X\n"), SPISendByte(0x00));
		AT45DB321D_Deselect();
	}
	else if(RegToRead == 4)	//Read bytes from buffer
	{
		printf_P(PSTR("Reading 5 bytes from buffer %u at address 0x%04X\n"), BufferNumber, Addr);
		AT45DB321D_BufferRead(BufferNumber, Addr, DataBuffer, 5);
		printf_P(PSTR("0: 0x%02X\n"), DataBuffer[0]);
		printf_P(PSTR("1: 0x%02X\n"), DataBuffer[1]);
		printf_P(PSTR("2: 0x%02X\n"), DataBuffer[2]);
		printf_P(PSTR("3: 0x%02X\n"), DataBuffer[3]);
		printf_P(PSTR("4: 0x%02X\n"), DataBuffer[4]);
	}
	
	else if(RegToRead == 5)	//write bytes to buffer
	{
		printf_P(PSTR("writing 5 bytes to buffer %u at address 0x%04X\n"), BufferNumber, Addr);
		DataBuffer[0] = 0xAE;
		DataBuffer[1] = 0x14;
		DataBuffer[2] = 0x9A;
		DataBuffer[3] = 0x22;
		DataBuffer[4] = 0x17;
		AT45DB321D_BufferWrite(BufferNumber, Addr, DataBuffer, 5);
	}
	
	else if(RegToRead == 6)	//Copy page to buffer
	{
		printf_P(PSTR("Copy page 0x%04X to buffer %u\n"), Addr, BufferNumber);
		AT45DB321D_CopyPageToBuffer(BufferNumber, Addr);
		printf_P(PSTR("Stat: 0x%02X\n"), AT45DB321D_WaitForReady());
	}
	
	else if(RegToRead == 7)	//Copy buffer to page
	{
		printf_P(PSTR("Copy buffer %u to page 0x%04X\n"), BufferNumber, Addr);
		AT45DB321D_CopyBufferToPage(BufferNumber, Addr);
		printf_P(PSTR("Stat: 0x%02X\n"), AT45DB321D_WaitForReady());
	}
	
	else if(RegToRead == 8)	//Erase page
	{
		printf_P(PSTR("Erase page 0x%04X\n"), Addr);
		AT45DB321D_ErasePage(Addr);
		printf_P(PSTR("Stat: 0x%02X\n"), AT45DB321D_WaitForReady());
	}
	
	else if(RegToRead == 9)	//init datalogger
	{
		 Datalogger_Init(DATALOGGER_INIT_APPEND | DATALOGGER_INIT_RESTART_IF_FULL);
	}
	
	else if (RegToRead == 10)
	{
		Datalogger_AddDataSet(DataBuffer);
	}
	
	else if (RegToRead == 11)
	{
		Datalogger_SaveDataToFlash();
	}
	
	else if (RegToRead == 12)
	{
		Datalogger_ReadBackData(5);
	}
	
	return 0;
}