Brian Kechel / Mbed 2 deprecated eliminator

Dependencies:   mbed

Committer:
kechbs
Date:
Thu May 09 17:09:02 2019 +0000
Revision:
1:009c799bb5d1
Parent:
0:1d2b7ae1269a
test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kechbs 0:1d2b7ae1269a 1 #include "main.h"
kechbs 1:009c799bb5d1 2 #include <mbed.h>
kechbs 0:1d2b7ae1269a 3 #include "charmap.h"
kechbs 1:009c799bb5d1 4 #include "stm32f70rb.h"
kechbs 0:1d2b7ae1269a 5
kechbs 1:009c799bb5d1 6 #define USE_PLL_HSE_XTAL (1) /* Use external xtal */
kechbs 0:1d2b7ae1269a 7
kechbs 0:1d2b7ae1269a 8 #define DIGIT_CONTROLLER_ID 0xA8
kechbs 0:1d2b7ae1269a 9 #define SLEEP_INTERVAL 0.003f
kechbs 0:1d2b7ae1269a 10
kechbs 0:1d2b7ae1269a 11 #define D_ON 0x3F
kechbs 0:1d2b7ae1269a 12 #define DISPLAYTIMEOUT 5
kechbs 0:1d2b7ae1269a 13
kechbs 0:1d2b7ae1269a 14 DigitalInOut shutdown(PB_7,PIN_OUTPUT,PullNone,1);
kechbs 0:1d2b7ae1269a 15
kechbs 0:1d2b7ae1269a 16 DigitalInOut dig_1(PB_4,PIN_OUTPUT,OpenDrain,1);
kechbs 0:1d2b7ae1269a 17 DigitalInOut dig_2(PB_5,PIN_OUTPUT,OpenDrain,1);
kechbs 0:1d2b7ae1269a 18 DigitalInOut dig_3(PB_6,PIN_OUTPUT,OpenDrain,1);
kechbs 0:1d2b7ae1269a 19 I2C digit_driver(PB_9, PB_8);
kechbs 0:1d2b7ae1269a 20
kechbs 0:1d2b7ae1269a 21 //SPI spi(PA_7, PA_6, PA_5); // mosi, miso, sclk
kechbs 0:1d2b7ae1269a 22 SPISlave device(PA_7, PA_6, PA_5, PA_15);
kechbs 0:1d2b7ae1269a 23 //DigitalOut cs(PA_15); //should be cs but seems to be CE_E maybe mislabel
kechbs 1:009c799bb5d1 24 int spiDATA[4];
kechbs 1:009c799bb5d1 25
kechbs 1:009c799bb5d1 26
kechbs 0:1d2b7ae1269a 27
kechbs 0:1d2b7ae1269a 28 int main()
kechbs 1:009c799bb5d1 29 {
kechbs 1:009c799bb5d1 30 //RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
kechbs 1:009c799bb5d1 31 //RCC_OscInitStruct.HSEState = RCC_HSE_ON;
kechbs 1:009c799bb5d1 32 //RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
kechbs 1:009c799bb5d1 33 //RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
kechbs 0:1d2b7ae1269a 34
kechbs 1:009c799bb5d1 35 digit_driver.frequency(400000);
kechbs 0:1d2b7ae1269a 36
kechbs 0:1d2b7ae1269a 37 char shutdown_reg[2];
kechbs 0:1d2b7ae1269a 38 shutdown_reg[0] = 0x00;
kechbs 0:1d2b7ae1269a 39 shutdown_reg[1] = 0x01;
kechbs 0:1d2b7ae1269a 40
kechbs 0:1d2b7ae1269a 41 //Command to
kechbs 0:1d2b7ae1269a 42 char updateI2C[2];
kechbs 0:1d2b7ae1269a 43 updateI2C[0] = 0x16;
kechbs 0:1d2b7ae1269a 44 updateI2C[1] = 0xFF;
kechbs 0:1d2b7ae1269a 45
kechbs 0:1d2b7ae1269a 46 //*************** CH 1-6 ENABLE BITS ***************************************
kechbs 0:1d2b7ae1269a 47 char ledBank1[2];
kechbs 0:1d2b7ae1269a 48 ledBank1[0]=0x13;
kechbs 0:1d2b7ae1269a 49 ledBank1[1]=0xff;
kechbs 0:1d2b7ae1269a 50 //*************** CH 7-12 ENABLE BITS **************************************
kechbs 0:1d2b7ae1269a 51 char ledBank2[2];
kechbs 0:1d2b7ae1269a 52 ledBank2[0]=0x14;
kechbs 0:1d2b7ae1269a 53 ledBank2[1]=0xff;
kechbs 0:1d2b7ae1269a 54 //*************** CH 13-18 ENABLE BITS *************************************
kechbs 0:1d2b7ae1269a 55 char ledBank3[2];
kechbs 0:1d2b7ae1269a 56 ledBank3[0]=0x15;
kechbs 0:1d2b7ae1269a 57 ledBank3[1]=0xff;
kechbs 0:1d2b7ae1269a 58
kechbs 0:1d2b7ae1269a 59 //Init programmable registers
kechbs 0:1d2b7ae1269a 60 shutdown = 1;
kechbs 0:1d2b7ae1269a 61 digit_driver.write(DIGIT_CONTROLLER_ID, shutdown_reg, 2);
kechbs 0:1d2b7ae1269a 62 wait(0.3);
kechbs 0:1d2b7ae1269a 63
kechbs 0:1d2b7ae1269a 64 //************** SET BRIGHTNESS FOR ALL SEGMENTS ***************************
kechbs 0:1d2b7ae1269a 65 //If changed, must also modify segValDisp
kechbs 0:1d2b7ae1269a 66 char pwmData1[2];
kechbs 0:1d2b7ae1269a 67 pwmData1[0]=0x01;
kechbs 0:1d2b7ae1269a 68 pwmData1[1]=0xFF;
kechbs 0:1d2b7ae1269a 69
kechbs 0:1d2b7ae1269a 70 //******************* PWM FOR ALL BITS FOR REFRESH *************************
kechbs 0:1d2b7ae1269a 71 for (pwmData1[0]=0x01; pwmData1[0] < 0x13; pwmData1[0]++){
kechbs 0:1d2b7ae1269a 72 digit_driver.write(DIGIT_CONTROLLER_ID, pwmData1,2);
kechbs 0:1d2b7ae1269a 73 }
kechbs 0:1d2b7ae1269a 74 wait(0.1);
kechbs 0:1d2b7ae1269a 75 //********* SETUP LCD INPUTS FOR ALL BITS **********************************
kechbs 0:1d2b7ae1269a 76 digit_driver.write(DIGIT_CONTROLLER_ID, ledBank1,2);
kechbs 0:1d2b7ae1269a 77 digit_driver.write(DIGIT_CONTROLLER_ID, ledBank2,2);
kechbs 0:1d2b7ae1269a 78 digit_driver.write(DIGIT_CONTROLLER_ID, ledBank3,2);
kechbs 0:1d2b7ae1269a 79 digit_driver.write(DIGIT_CONTROLLER_ID, updateI2C,2);
kechbs 0:1d2b7ae1269a 80 digit_driver.write(DIGIT_CONTROLLER_ID, shutdown_reg, 2);
kechbs 0:1d2b7ae1269a 81 wait(0.1);
kechbs 0:1d2b7ae1269a 82
kechbs 0:1d2b7ae1269a 83 device.frequency(976000);
kechbs 0:1d2b7ae1269a 84 device.reply(0x00);
kechbs 0:1d2b7ae1269a 85
kechbs 0:1d2b7ae1269a 86 int blinkRate = 50;
kechbs 0:1d2b7ae1269a 87
kechbs 1:009c799bb5d1 88 //*********** 70 seccond count for PI Modual boot time ********************
kechbs 1:009c799bb5d1 89 for (int j = 7; j >= 0; j--) {
kechbs 1:009c799bb5d1 90 for (int i = 9; i >= 0; i--) {
kechbs 1:009c799bb5d1 91 for (int x = 0; x <= 250; x++){
kechbs 1:009c799bb5d1 92 segValDisplay(j, 3);
kechbs 1:009c799bb5d1 93 segValDisplay(i, 2);
kechbs 1:009c799bb5d1 94 wait(0.001);
kechbs 1:009c799bb5d1 95 }
kechbs 1:009c799bb5d1 96 }
kechbs 1:009c799bb5d1 97 }
kechbs 1:009c799bb5d1 98 //**************************************************************************
kechbs 0:1d2b7ae1269a 99
kechbs 0:1d2b7ae1269a 100 while(1) {
kechbs 0:1d2b7ae1269a 101 //Check if data exists on SPI BUSS
kechbs 0:1d2b7ae1269a 102 if(device.receive()) {
kechbs 0:1d2b7ae1269a 103 //Save both bytes of data
kechbs 0:1d2b7ae1269a 104 for (int i = 0; i < 2; i++) {
kechbs 0:1d2b7ae1269a 105 spiDATA[i] = device.read();
kechbs 0:1d2b7ae1269a 106 }
kechbs 0:1d2b7ae1269a 107
kechbs 0:1d2b7ae1269a 108 }
kechbs 0:1d2b7ae1269a 109 //spiDATA[1] = 1;
kechbs 0:1d2b7ae1269a 110 //Check if LCD should blink data and set time accordingly
kechbs 0:1d2b7ae1269a 111 if (spiDATA[1] == 0){
kechbs 0:1d2b7ae1269a 112 blinkRate--;
kechbs 0:1d2b7ae1269a 113 }else{
kechbs 0:1d2b7ae1269a 114 blinkRate = 50;
kechbs 0:1d2b7ae1269a 115 }
kechbs 0:1d2b7ae1269a 116
kechbs 0:1d2b7ae1269a 117 //Loop display for 5 cycles to minimize flicker before checking
kechbs 0:1d2b7ae1269a 118 //SPI BUSS
kechbs 0:1d2b7ae1269a 119 for(int i = 0; i < 4; i++) {
kechbs 0:1d2b7ae1269a 120 if (spiDATA[0] == 0) { // || blinkRate > 150)
kechbs 0:1d2b7ae1269a 121 dig_1 = 1; dig_2 = 1; dig_3 = 1;
kechbs 0:1d2b7ae1269a 122 }else{
kechbs 0:1d2b7ae1269a 123 segValDisplay(spiDATA[0] ,1);
kechbs 1:009c799bb5d1 124 segValDisplay(18, 2);
kechbs 1:009c799bb5d1 125 segValDisplay(13, 3);
kechbs 0:1d2b7ae1269a 126 }
kechbs 0:1d2b7ae1269a 127 if (blinkRate <= 25) {
kechbs 0:1d2b7ae1269a 128 dig_1 = 1; dig_2 = 1; dig_3 = 1;
kechbs 0:1d2b7ae1269a 129 segValDisplay(-1 ,1);
kechbs 0:1d2b7ae1269a 130 segValDisplay(-1, 2);
kechbs 0:1d2b7ae1269a 131 segValDisplay(-1, 3);
kechbs 0:1d2b7ae1269a 132 }
kechbs 0:1d2b7ae1269a 133 }
kechbs 0:1d2b7ae1269a 134
kechbs 0:1d2b7ae1269a 135 if (blinkRate < 0){blinkRate = 50;}
kechbs 0:1d2b7ae1269a 136 }
kechbs 0:1d2b7ae1269a 137 }
kechbs 0:1d2b7ae1269a 138
kechbs 0:1d2b7ae1269a 139 void segValDisplay (int val, int dispNum) {
kechbs 0:1d2b7ae1269a 140 //Turn off all illumination for refresh
kechbs 0:1d2b7ae1269a 141 if (dispNum == 1 || dispNum == 2 || dispNum == 3){dig_1 = 1;dig_2 = 1;dig_3 = 1;}
kechbs 0:1d2b7ae1269a 142
kechbs 0:1d2b7ae1269a 143 uint8_t GraphicSeg[4];
kechbs 0:1d2b7ae1269a 144 char updateI2C[2];
kechbs 0:1d2b7ae1269a 145 updateI2C[0] = 0x16;
kechbs 0:1d2b7ae1269a 146 updateI2C[1] = 0xFF;
kechbs 0:1d2b7ae1269a 147 //get charmap for chosen val
kechbs 0:1d2b7ae1269a 148 GraphicSeg[0] = 0x13;
kechbs 0:1d2b7ae1269a 149 GraphicSeg[1] = SegTable[1 + val][2];
kechbs 0:1d2b7ae1269a 150 GraphicSeg[2] = SegTable[1 + val][1];
kechbs 0:1d2b7ae1269a 151 GraphicSeg[3] = SegTable[1 + val][0];
kechbs 0:1d2b7ae1269a 152 digit_driver.write(DIGIT_CONTROLLER_ID, (char *)GraphicSeg, 4);
kechbs 0:1d2b7ae1269a 153 digit_driver.write(DIGIT_CONTROLLER_ID, updateI2C, 2);
kechbs 0:1d2b7ae1269a 154 //turn on current digit leaving un-refreshed digits off
kechbs 0:1d2b7ae1269a 155 if (dispNum == 1){dig_1 = 0;dig_2 = 1;dig_3 = 1;}
kechbs 0:1d2b7ae1269a 156 if (dispNum == 2){dig_1 = 1;dig_2 = 0;dig_3 = 1;}
kechbs 0:1d2b7ae1269a 157 if (dispNum == 3){dig_1 = 1;dig_2 = 1;dig_3 = 0;}
kechbs 0:1d2b7ae1269a 158
kechbs 0:1d2b7ae1269a 159 wait(0.001);
kechbs 0:1d2b7ae1269a 160
kechbs 0:1d2b7ae1269a 161 }
kechbs 0:1d2b7ae1269a 162
kechbs 0:1d2b7ae1269a 163
kechbs 0:1d2b7ae1269a 164