1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- /*
- * Bit-Banged SPI routines
- */
-
- #include "spi.h"
-
- void spiInit(void) {
- MI_dir;
- MO_dir;
- SCK_dir;
- CS_dir;
- GDO_dir;
-
- SCK_off;
- MO_off;
- CS_on;
- }
-
- void spiWrite(uint8_t command) {
- SCK_off;
- MO_off;
-
- uint8_t n = 8;
- while (n--) {
- if (command & 0x80) {
- MO_on;
- } else {
- MO_off;
- }
-
- SCK_on;
- NOP();
- SCK_off;
-
- command = command << 1;
- }
-
- MO_on;
- }
-
- uint8_t spiRead(void) {
- uint8_t result = 0;
-
- for (uint8_t i = 0; i < 8; i++) {
- if (MI_1) {
- result = (result << 1) | 0x01;
- } else {
- result = result << 1;
- }
-
- SCK_on;
- NOP();
- SCK_off;
- NOP();
- }
-
- return result;
- }
|