//******************************************************************************************* // // 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; }
void enc28j60WriteBuffer(uint16_t len, uint8_t* data) { CSACTIVE; SPISendByte(ENC28J60_WRITE_BUF_MEM); while(len) { len--; SPISendByte(*data); data++; } CSPASSIVE; }
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 }
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 }
void enc28j60ReadBuffer(uint16_t len, uint8_t* data) { CSACTIVE; SPISendByte(ENC28J60_READ_BUF_MEM); while(len) { len--; *data = SPIReadByte(); data++; } *data='\0'; CSPASSIVE; }
//******************************************************************************************* // // 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; }
// 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; }