void CC110x::readBurst(uint8_t *buf, uint8_t regAddr, uint8_t len) { // read burst data from CC1101 via SPI cc1101_Select(); // select CC1101 wait_Miso(); // wait until MISO goes low sendSPI(regAddr | READ_BURST); // send register address for(uint8_t i=0 ; i<len ; i++) buf[i] = sendSPI(0x00); // read result byte by byte cc1101_Deselect(); // deselect CC1101 }
static void WriteBuffer(word len, byte* data) { enableChip(); sendSPI(ENC28J60_WRITE_BUF_MEM); while (len--) sendSPI(*data++); disableChip(); }
void CC110x::writeReg(uint8_t regAddr, uint8_t val) { // write single register into the CC1101 IC via SPI cc1101_Select(); // select CC1101 wait_Miso(); // wait until MISO goes low sendSPI(regAddr); // send register address sendSPI(val); // send value cc1101_Deselect(); // deselect CC1101 }
void CC110x::writeBurst(uint8_t regAddr, uint8_t *buf, uint8_t len) { // write multiple registers into the CC1101 IC via SPI cc1101_Select(); // select CC1101 wait_Miso(); // wait until MISO goes low sendSPI(regAddr | WRITE_BURST); // send register address for(uint8_t i=0 ; i<len ; i++) sendSPI(buf[i]); // send value cc1101_Deselect(); // deselect CC1101 }
void enc28j60WriteOp(uint8_t op, uint8_t address, uint8_t data) { enableChip(); sendSPI(op | (address & ADDR_MASK)); sendSPI(data); disableChip(); }
uint8_t CC110x::readReg(uint8_t regAddr, uint8_t regType) { // read CC1101 register via SPI cc1101_Select(); // select CC1101 wait_Miso(); // wait until MISO goes low sendSPI(regAddr | regType); // send register address uint8_t val = sendSPI(0x00); // read result cc1101_Deselect(); // deselect CC1101 return val; }
void testTeamLEDPins() { // Set up Team LEDs on MAX7219 sendSPI(0x0200 + 0x04); m_wait(TEST_TEAM_LED_TIME_MS); sendSPI(0x0200 + 0x08); m_wait(TEST_TEAM_LED_TIME_MS); sendSPI(0x0200 + 0x00); //m_set(RED_LED); m_wait(TEST_TEAM_LED_TIME_MS); //m_set(BLUE_LED); m_wait(TEST_TEAM_LED_TIME_MS); }
void enc28j60WriteBuffer(uint16_t len, uint8_t* data) { enableChip(); sendSPI(ENC28J60_WRITE_BUF_MEM); while (len--) sendSPI(*data++); disableChip(); }
static void ReadBuffer(word len, byte* data) { enableChip(); sendSPI(ENC28J60_READ_BUF_MEM); while (len--) { sendSPI(0x00); *data++ = SPDR; } disableChip(); *data='\0'; }
static byte ReadOp(byte op, byte address) { enableChip(); sendSPI(op | (address & ADDR_MASK)); sendSPI(0x00); if (address & 0x80) sendSPI(0x00); byte result = SPDR; disableChip(); return result; }
void enc28j60ReadBuffer(uint16_t len, uint8_t* data) { enableChip(); sendSPI(ENC28J60_READ_BUF_MEM); while (len--) { sendSPI(0x00); *data++ = SPDR; } disableChip(); }
void enc28j60WriteBuffer(uint16_t len, uint8_t* data) { if(len >= (MAX_FRAMELEN)) return; enableChip(); sendSPI(ENC28J60_WRITE_BUF_MEM); while (len--) sendSPI(*data++); disableChip(); }
void enc28j60ReadBuffer(uint16_t len, uint8_t* data) { enableChip(); sendSPI(ENC28J60_READ_BUF_MEM); while (len--) { sendSPI(0x00); *data++ = ReadSPDR(); } disableChip(); // Remove next line suggested by user epam - not needed // *data='\0'; }
uint8_t enc28j60ReadOp(uint8_t op, uint8_t address) { enableChip(); // issue read command sendSPI(op | (address & ADDR_MASK)); sendSPI(0x00); if (address & 0x80) sendSPI(0x00); byte result = SPDR; // release CS disableChip(); return result; }
void updateStatusFlags() { // SPI communication using the MAX7219 IC sendSPI(0x0100 + LOW(statusFlags)); sendSPI(0x0200 + HIGH(statusFlags)); // MAX7219_DIN // MAX7219_CLK // MAX7219_LOAD // Connect anodes to SEG lines // Connect cathodes to DIG lines 0 and 1 // RED LED connects to same anode as LED bar array segment 3 // BLUE LED connects to same anode as LED bar array segment 4 // Take datasheet of LED array: DC fwd curr & fwd volt // RSet will depend on these values (use table from MAX7219 datasheet) // Typical value may be 33kOhm between Vcc and pin 18 (ISet) }
void drawScreen (void) { uint8_t k, value = 0; drawHorLineDOGS(0,101,9); // Unterstrichene Überschrift drawBoxDOGS(0,32,7); // Button Links drawBoxDOGS(34,67,7); // Button Mitte drawBoxDOGS(69,101,7); // Button Rechts // Zeichen für linken Button (Runter) setAddrDOGS(7,12); CD = DATA; for(k=0; k<(BUTTON_DRAW_WIDTH/2); k++) { value |= (0x04<<k); sendSPI(~value); } for(k=(BUTTON_DRAW_WIDTH/2); k>0; k--) { value &= ~(0x04<<k); sendSPI(~value); } value = 0; // Zeichen für rechten Button (Hoch) setAddrDOGS(7,81); CD = DATA; for(k=0; k<(BUTTON_DRAW_WIDTH/2); k++) { value |= (0x20>>k); sendSPI(~value); } for(k=(BUTTON_DRAW_WIDTH/2); k>0; k--) { value &= ~(0x20>>k); sendSPI(~value); } // Text für mittleren Button (OK) charChainDOGS(7,46,1,"OK"); }
void drawCheckBox (uint8_t page, uint8_t column, bool ckecked) { setAddrDOGS(page,column); CD = DATA; sendSPI(0x7E); sendSPI(0x42); if(ckecked) { sendSPI(0x5A); sendSPI(0x5A); } else { sendSPI(0x42); sendSPI(0x42); } sendSPI(0x42); sendSPI(0x7E); }
void testStatusLEDPins() { sendSPI(0x0100 + 0x01); m_wait(TEST_STATUS_LED_TIME_MS); sendSPI(0x0100 + 0x03); m_wait(TEST_STATUS_LED_TIME_MS); sendSPI(0x0100 + 0x06); m_wait(TEST_STATUS_LED_TIME_MS); sendSPI(0x0100 + 0x0C); m_wait(TEST_STATUS_LED_TIME_MS); sendSPI(0x0100 + 0x18); m_wait(TEST_STATUS_LED_TIME_MS); sendSPI(0x0100 + 0x30); m_wait(TEST_STATUS_LED_TIME_MS); sendSPI(0x0100 + 0x60); m_wait(TEST_STATUS_LED_TIME_MS); sendSPI(0x0100 + 0xC0); m_wait(TEST_STATUS_LED_TIME_MS); sendSPI(0x0100 + 0x80); sendSPI(0x0200 + 0x01); m_wait(TEST_STATUS_LED_TIME_MS); sendSPI(0x0100 + 0x00); sendSPI(0x0200 + 0x03); m_wait(TEST_STATUS_LED_TIME_MS); sendSPI(0x0200 + 0x02); m_wait(TEST_STATUS_LED_TIME_MS); sendSPI(0x0200 + 0x00); }
static void WriteOp(byte op, byte address, byte data) { enableChip(); sendSPI(op | (address & ADDR_MASK)); sendSPI(data); disableChip(); }
void CC110x::cmdStrobe(uint8_t cmd) { // send command strobe to the CC1101 IC via SPI cc1101_Select(); // select CC1101 wait_Miso(); // wait until MISO goes low sendSPI(cmd); // send strobe command cc1101_Deselect(); // deselect CC1101 }