Browse Source

Added DS3231 registers

Kevin Lee 5 years ago
parent
commit
c9c6de27bf

+ 183 - 0
Nixie_Firmware_Mbed/ds3231.h

@@ -0,0 +1,183 @@
+#ifndef _DS_3231_H_
+#define _DS_3231_H_
+
+#include "mbed.h"
+
+#define DS3231_ADDR 0x68
+
+typedef union {
+    struct {
+        uint8_t Second : 7;
+        uint8_t        : 1;
+    };
+    uint8_t AS_BYTE;
+} T_SECOND;
+
+typedef union {
+    struct {
+        uint8_t Minute : 7;
+        uint8_t        : 1;
+    };
+    uint8_t AS_BYTE;
+} T_MINUTE;
+
+typedef union {
+    struct {
+        uint8_t Hour : 5;
+        uint8_t nAM  : 1;
+        uint8_t n24  : 1;
+        uint8_t      : 1;
+    };
+    uint8_t AS_BYTE;
+} T_HOUR;
+
+typedef union {
+    struct {
+        uint8_t Day : 3;
+        uint8_t     : 5;
+    };
+    uint8_t AS_BYTE;
+} T_DAY;
+
+typedef union {
+    struct {
+        uint8_t Date : 6;
+        uint8_t      : 2;
+    };
+    uint8_t AS_BYTE;
+} T_DATE;
+
+typedef union {
+    struct {
+        uint8_t Month   : 5;
+        uint8_t         : 2;
+        uint8_t Century : 1;
+    };
+    uint8_t AS_BYTE;
+} T_MONTH;
+
+typedef union {
+    struct {
+        uint8_t Year : 8;
+    };
+    uint8_t AS_BYTE;
+} T_YEAR;
+
+typedef union {
+    struct {
+        uint8_t Second : 7;
+        uint8_t M1     : 1;
+    };
+    uint8_t AS_BYTE;
+} A_SECOND;
+
+typedef union {
+    struct {
+        uint8_t Minute : 7;
+        uint8_t M2     : 1;
+    };
+    uint8_t AS_BYTE;
+} A_MINUTE;
+
+typedef union {
+    struct {
+        uint8_t Hour : 5;
+        uint8_t nAM  : 1;
+        uint8_t n24  : 1;
+        uint8_t M3   : 1;
+    };
+    uint8_t AS_BYTE;
+} A_HOUR;
+
+typedef union {
+    struct {
+        union {
+            struct {
+                uint8_t Day  : 4;
+                uint8_t      : 2;
+            };
+            struct {
+                uint8_t Date : 6;
+            };
+        };
+        uint8_t nDT : 1;
+        uint8_t M4  : 1;
+    };
+    uint8_t AS_BYTE;
+} A_DAY_DATE;
+
+typedef union {
+    struct {
+        uint8_t A1IE  : 1;
+        uint8_t A2IE  : 1;
+        uint8_t INTCN : 1;
+        uint8_t RS1   : 1;
+        uint8_t RS2   : 1;
+        uint8_t CONV  : 1;
+        uint8_t BBSQW : 1;
+        uint8_t nEOSC : 1;
+    };
+    uint8_t AS_BYTE;
+} CONTROL_1;
+
+typedef union {
+    struct {
+        uint8_t A1F     : 1;
+        uint8_t A2F     : 1;
+        uint8_t BSY     : 1;
+        uint8_t EN32KHZ : 1;
+        uint8_t         : 3;
+        uint8_t OSF     : 1;
+    };
+    uint8_t AS_BYTE;
+} CONTROL_2;
+
+typedef union {
+    struct {
+        uint8_t Data : 7;
+        uint8_t Sign : 1;
+    };
+    uint8_t AS_BYTE;
+} AGING_OFFSET;
+
+typedef union {
+    struct {
+        uint8_t Data : 7;
+        uint8_t Sign : 1;
+    };
+    uint8_t AS_BYTE;
+} TEMP_MSB;
+
+typedef union {
+    struct {
+        uint8_t      : 6;
+        uint8_t Data : 2;
+    };
+    uint8_t AS_DATA;
+} TEMP_LSB;
+
+typedef union {
+    struct {
+        T_SECOND Second;            // 0x00
+        T_MINUTE Minute;            // 0x01
+        T_HOUR Hour;                // 0x02
+        T_DAY Day;                  // 0x03
+        T_DATE Date;                // 0x04
+        T_MONTH Month;              // 0x05
+        T_YEAR Year;                // 0x06
+        A_SECOND A1_Second;         // 0x07
+        A_MINUTE A1_Minute;         // 0x08
+        A_HOUR A1_Hour;             // 0x09
+        A_DAY_DATE A1_Day_Date;     // 0x0A
+        A_MINUTE A2_Minute;         // 0x0B
+        A_HOUR A2_Hour;             // 0x0C
+        A_DAY_DATE A2_Day_Date;     // 0x0D
+        CONTROL_1 Control_1;        // 0x0E
+        CONTROL_2 Control_2;        // 0x0F
+        AGING_OFFSET Aging_Offset;  // 0x10
+        TEMP_MSB Temp_MSB;          // 0x11
+        TEMP_LSB Temp_LSB;          // 0x12
+    };
+} DS3231_REGS;
+
+#endif

+ 7 - 16
Nixie_Firmware_Mbed/main.cpp

@@ -2,6 +2,7 @@
 #include "SWO.h"
 #include "pca9685.h"
 #include "tusb322.h"
+#include "ds3231.h"
 
 DigitalIn nFault(PA_3);
 DigitalIn Usb(PB_4);
@@ -13,7 +14,7 @@ AnalogIn Imon(PA_0);
 AnalogIn Vout(PA_1);
 AnalogOut Aout(PA_5);
 I2C i2c(PA_10, PA_9);
-SWO_Channel swo("channel");
+SWO_Channel swo("swo");
 
 PCM9685_REGS Regs[3] = {0};
 
@@ -56,7 +57,6 @@ void Dot_Update(int brightness) {
     i2c.write(TUBE_DOT_ADDR << 1, buffer, sizeof(buffer));
 }
 
-
 void Clock_Init() {
     char buffer[sizeof(REG_MODE1)+sizeof(REG_MODE2)+1] = {0};
     buffer[0] = FIELD_OFFSET(PCM9685_REGS, MODE1);
@@ -116,13 +116,6 @@ void USB_Init() {
     // Reenable CC termination
     ctrl->DISABLE_TERM = 0x0;
     i2c.write(TUSB322_ADDR << 1, buffer, 2);
-    
-//    do {
-//        wait(0.1);
-//        buffer[0] = FIELD_OFFSET(TUSB322_REGS, Status2);
-//        i2c.write(TUSB322_ADDR << 1, buffer, 1);
-//        i2c.read(TUSB322_ADDR << 1, buffer, 2);        
-//    } while (stat->ATTACHED_STATE != 0x10);
 }
 
 //#define CURRENT_TEST
@@ -167,10 +160,10 @@ int main() {
     
 #ifdef CURRENT_TEST
     Dot_Update(100);  
-//    Clock_Update(3, 1, 100);
-//    Clock_Update(2, 2, 100);
-//    Clock_Update(1, 3, 100);
-//    Clock_Update(0, 4, 100);
+   Clock_Update(3, 1, 100);
+   Clock_Update(2, 3, 100);
+   Clock_Update(1, 5, 100);
+   Clock_Update(0, 7, 100);
 #endif
 
     while(1) {
@@ -203,7 +196,6 @@ int main() {
 #endif
       
 #ifdef CYCLE_ANALOG  
-        // Analog dim
         for (int i = 0; i < 10; i++) {
             
             nNixieEn.write(1);
@@ -248,7 +240,6 @@ int main() {
 #endif
         
 #ifdef CYCLE_PWM
-        // PWM dim
         for (int i = 0; i < 10; i++) {
             for (int k = 0; k <= 1000; k++) {
                 for (int j = 0; j < 4; j++) {
@@ -412,4 +403,4 @@ int main() {
 #endif
         
     }
-}
+}

+ 0 - 1
Nixie_Firmware_Mbed/pca9685.h

@@ -144,4 +144,3 @@ const char Tube_Mapping[4][10][2] =
         { PCM9685_ADDR_3, 5  } } }; // Tube 3 Digit 9
 
 #endif
-

+ 1 - 1
Nixie_Firmware_Mbed/tusb322.h

@@ -48,4 +48,4 @@ typedef union {
     uint8_t AS_BYTE[11];
 } TUSB322_REGS;
 
-#endif
+#endif