Kaynağa Gözat

Переделал spi_send на 16 бит данных.

Vladimir N. Shilov 9 yıl önce
ebeveyn
işleme
156b800489
1 değiştirilmiş dosya ile 20 ekleme ve 7 silme
  1. 20 7
      app/max7219.cpp

+ 20 - 7
app/max7219.cpp

@@ -44,14 +44,27 @@ static void spi_SendByte (uint8_t DataByte) {
 
 }
 
-void MAX7219_writeData(uint8_t data_register, uint8_t data)
+void MAX7219_writeData(uint8_t reg, uint8_t data)
 {
-    MAX7219_LOAD0;
-    // Send the register where the data will be stored
-    spi_SendByte(data_register);
-    // Send the data to be stored
-    spi_SendByte(data);
-    MAX7219_LOAD1;
+    MAX7219_LOAD0; // îïóñòèëè çàù¸ëêó
+//    spi_SendByte(reg);
+//    spi_SendByte(data);
+
+    // software spi
+	uint8_t i; // ñ÷åò÷èê áèò
+	uint16_t sdata = (reg<<8) || data;
+	for (i=16; i!=0; i--) {
+		PinRes(PIN_CLK); // âûäàëè ñòðîá
+		if (bit_is_set(sdata,15)) { // åñëè ñòàðøèé áèò == 1
+			PinSet(PIN_DIN); // MOSI = 1
+		} else { // åñëè ñòàðøèé áèò == 0
+			PinRes(PIN_DIN); // MOSI = 0
+		}
+		PinSet(PIN_CLK); // çàù¸ëêíóëè ñòðîá
+		sdata <<= 1; // ñäâèã âëåâî íà 1 áèò
+	}
+
+    MAX7219_LOAD1; // ïîäíÿëè çàù¸ëêó
 }
 
 void MAX7219_Init(void) {