Leo Boogaard / Mbed 2 deprecated L432KC-SMT16030_fork

Dependencies:   mbed

Fork of L432KC-SMT16030 by Leo Boogaard

Committer:
lmboogaard
Date:
Tue Jan 10 11:32:26 2017 +0000
Revision:
0:af4af28f0975
test program for Mbed CLI; no SPI rate, no UART, no I2C

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lmboogaard 0:af4af28f0975 1 #include "mbed.h"
lmboogaard 0:af4af28f0975 2 #include "LCD12864.h"
lmboogaard 0:af4af28f0975 3
lmboogaard 0:af4af28f0975 4 DigitalOut myled(PB_1);
lmboogaard 0:af4af28f0975 5 DigitalIn Senslev(PA_8);
lmboogaard 0:af4af28f0975 6
lmboogaard 0:af4af28f0975 7 Serial RFData(PA_2, PA_3);//was PA_2,PA_3
lmboogaard 0:af4af28f0975 8 //Serial pc(USBTX,USBRX);
lmboogaard 0:af4af28f0975 9 SPI QCOUNT(PB_5, PB_4, PB_3);
lmboogaard 0:af4af28f0975 10 Timer Duty;
lmboogaard 0:af4af28f0975 11 Timer Cycle;
lmboogaard 0:af4af28f0975 12 int Td,T;
lmboogaard 0:af4af28f0975 13 LCD12864RSPI mylcd;
lmboogaard 0:af4af28f0975 14
lmboogaard 0:af4af28f0975 15 float Store[10];
lmboogaard 0:af4af28f0975 16 float Average(float* array);
lmboogaard 0:af4af28f0975 17 char TxtBuf[17] = "Hier staat niets";
lmboogaard 0:af4af28f0975 18 int n = 0;
lmboogaard 0:af4af28f0975 19 //************
lmboogaard 0:af4af28f0975 20 // Circular buffers for serial TX and RX data - used by interrupt routines
lmboogaard 0:af4af28f0975 21 extern const int buffer_size = 255;
lmboogaard 0:af4af28f0975 22 // might need to increase buffer size for high baud rates
lmboogaard 0:af4af28f0975 23 extern char tx_buffer[buffer_size+1];
lmboogaard 0:af4af28f0975 24 extern char rx_buffer[buffer_size+1];
lmboogaard 0:af4af28f0975 25 // Circular buffer pointers
lmboogaard 0:af4af28f0975 26 // volatile makes read-modify-write atomic
lmboogaard 0:af4af28f0975 27 extern volatile int tx_in;
lmboogaard 0:af4af28f0975 28 extern volatile int tx_out;
lmboogaard 0:af4af28f0975 29 extern volatile int rx_in;
lmboogaard 0:af4af28f0975 30 extern volatile int rx_out;
lmboogaard 0:af4af28f0975 31 // Line buffers for sprintf and sscanf
lmboogaard 0:af4af28f0975 32 extern char tx_line[80];
lmboogaard 0:af4af28f0975 33 extern char rx_line[80];
lmboogaard 0:af4af28f0975 34 extern void read_line(void);
lmboogaard 0:af4af28f0975 35 //*************
lmboogaard 0:af4af28f0975 36 void Catch(void)
lmboogaard 0:af4af28f0975 37 {
lmboogaard 0:af4af28f0975 38 myled=1;
lmboogaard 0:af4af28f0975 39 // Loop just in case more than one character is in UART's receive FIFO buffer
lmboogaard 0:af4af28f0975 40 // Stop if buffer full
lmboogaard 0:af4af28f0975 41 while ((RFData.readable()) && (((rx_in + 1) % buffer_size) != rx_out)) {
lmboogaard 0:af4af28f0975 42 rx_buffer[rx_in] = RFData.getc();
lmboogaard 0:af4af28f0975 43 // Uncomment to Echo to USB serial to watch data flow
lmboogaard 0:af4af28f0975 44 // monitor_device.putc(rx_buffer[rx_in]);
lmboogaard 0:af4af28f0975 45 rx_in = (rx_in + 1) % buffer_size;
lmboogaard 0:af4af28f0975 46 }
lmboogaard 0:af4af28f0975 47 myled=0;
lmboogaard 0:af4af28f0975 48 return;
lmboogaard 0:af4af28f0975 49
lmboogaard 0:af4af28f0975 50 }
lmboogaard 0:af4af28f0975 51 /*
lmboogaard 0:af4af28f0975 52 // get the current time from the terminal
lmboogaard 0:af4af28f0975 53 struct tm t;
lmboogaard 0:af4af28f0975 54 printf("Enter current date and time:\n");
lmboogaard 0:af4af28f0975 55 printf("YYYY MM DD HH MM SS[enter]\n");
lmboogaard 0:af4af28f0975 56 scanf("%d %d %d %d %d %d", &t.tm_year, &t.tm_mon, &t.tm_mday
lmboogaard 0:af4af28f0975 57 , &t.tm_hour, &t.tm_min, &t.tm_sec);
lmboogaard 0:af4af28f0975 58
lmboogaard 0:af4af28f0975 59 // adjust for tm structure required values
lmboogaard 0:af4af28f0975 60 t.tm_year = t.tm_year - 1900;
lmboogaard 0:af4af28f0975 61 t.tm_mon = t.tm_mon - 1;
lmboogaard 0:af4af28f0975 62
lmboogaard 0:af4af28f0975 63 // set the time
lmboogaard 0:af4af28f0975 64 set_time(mktime(&t));
lmboogaard 0:af4af28f0975 65
lmboogaard 0:af4af28f0975 66 // display the time
lmboogaard 0:af4af28f0975 67 while(1) {
lmboogaard 0:af4af28f0975 68 time_t seconds = time(NULL);
lmboogaard 0:af4af28f0975 69 printf("Time as a basic string = %s", ctime(&seconds));
lmboogaard 0:af4af28f0975 70 wait(1);
lmboogaard 0:af4af28f0975 71 }
lmboogaard 0:af4af28f0975 72
lmboogaard 0:af4af28f0975 73 int tm_sec //seconds after the minute – [0, 60][@1] (public member object)
lmboogaard 0:af4af28f0975 74 int tm_min //minutes after the hour – [0, 59] (public member object)
lmboogaard 0:af4af28f0975 75 int tm_hour //hours since midnight – [0, 23] (public member object)
lmboogaard 0:af4af28f0975 76 int tm_mday //day of the month – [1, 31] (public member object)
lmboogaard 0:af4af28f0975 77 int tm_mon //months since January – [0, 11] (public member object)
lmboogaard 0:af4af28f0975 78 int tm_year //years since 1900 (public member object)
lmboogaard 0:af4af28f0975 79 int tm_wday //days since Sunday – [0, 6] (public member object)
lmboogaard 0:af4af28f0975 80 int tm_yday //days since January 1 – [0, 365]
lmboogaard 0:af4af28f0975 81 int tm_isdst //Daylight Saving Time flag. The value is positive if DST is in effect, zero if
lmboogaard 0:af4af28f0975 82 //not and negative if no information is available (public member object)
lmboogaard 0:af4af28f0975 83 */
lmboogaard 0:af4af28f0975 84 struct tm t;
lmboogaard 0:af4af28f0975 85
lmboogaard 0:af4af28f0975 86 int main()
lmboogaard 0:af4af28f0975 87 {
lmboogaard 0:af4af28f0975 88 QCOUNT.format(8,0); //dac 13bit, res = 8192
lmboogaard 0:af4af28f0975 89 QCOUNT.frequency(10000);
lmboogaard 0:af4af28f0975 90
lmboogaard 0:af4af28f0975 91 RFData.format(8,SerialBase::None, 1);
lmboogaard 0:af4af28f0975 92 RFData.baud(4800);
lmboogaard 0:af4af28f0975 93
lmboogaard 0:af4af28f0975 94 t.tm_sec = 00;
lmboogaard 0:af4af28f0975 95 t.tm_min = 17;
lmboogaard 0:af4af28f0975 96 t.tm_hour = 15;
lmboogaard 0:af4af28f0975 97 t.tm_mday = 2;
lmboogaard 0:af4af28f0975 98 t.tm_mon = 0;
lmboogaard 0:af4af28f0975 99 t.tm_year = 2017 - 1900;
lmboogaard 0:af4af28f0975 100 t.tm_wday = 1;
lmboogaard 0:af4af28f0975 101 t.tm_yday = 2;
lmboogaard 0:af4af28f0975 102 t.tm_isdst = 1;
lmboogaard 0:af4af28f0975 103
lmboogaard 0:af4af28f0975 104 char timeBuf[30];
lmboogaard 0:af4af28f0975 105 char *ptimeBuf = timeBuf;
lmboogaard 0:af4af28f0975 106 char Buf[16];
lmboogaard 0:af4af28f0975 107 char *pBuf = Buf;
lmboogaard 0:af4af28f0975 108
lmboogaard 0:af4af28f0975 109 set_time(mktime(&t));
lmboogaard 0:af4af28f0975 110 time_t seconds = time(NULL);
lmboogaard 0:af4af28f0975 111 sprintf(ptimeBuf, "%s", ctime(&seconds));
lmboogaard 0:af4af28f0975 112
lmboogaard 0:af4af28f0975 113 mylcd.Initialise(); //was initialise
lmboogaard 0:af4af28f0975 114 mylcd.CLEAR();
lmboogaard 0:af4af28f0975 115 mylcd.DisplayString(0, 0, "Temperatuur = ", 14);
lmboogaard 0:af4af28f0975 116 mylcd.DisplayString(2, 0, ptimeBuf, 11);
lmboogaard 0:af4af28f0975 117 mylcd.DisplayString(3, 0, ptimeBuf + 11 , 13);
lmboogaard 0:af4af28f0975 118
lmboogaard 0:af4af28f0975 119 wait_ms(100);
lmboogaard 0:af4af28f0975 120
lmboogaard 0:af4af28f0975 121 int i = 0;
lmboogaard 0:af4af28f0975 122 strcpy(rx_buffer, TxtBuf);
lmboogaard 0:af4af28f0975 123 RFData.attach(&Catch, Serial::RxIrq);
lmboogaard 0:af4af28f0975 124 __enable_irq();
lmboogaard 0:af4af28f0975 125 rx_in = 0;
lmboogaard 0:af4af28f0975 126 while(1) {
lmboogaard 0:af4af28f0975 127
lmboogaard 0:af4af28f0975 128 /*
lmboogaard 0:af4af28f0975 129 while (Senslev) {}; //synchrounise level rise
lmboogaard 0:af4af28f0975 130
lmboogaard 0:af4af28f0975 131 while (!Senslev) {};
lmboogaard 0:af4af28f0975 132 Duty.start();
lmboogaard 0:af4af28f0975 133 Cycle.start();
lmboogaard 0:af4af28f0975 134
lmboogaard 0:af4af28f0975 135
lmboogaard 0:af4af28f0975 136 while (Senslev) {};
lmboogaard 0:af4af28f0975 137 Duty.stop();
lmboogaard 0:af4af28f0975 138 Td = Duty.read_us();
lmboogaard 0:af4af28f0975 139 Duty.reset();
lmboogaard 0:af4af28f0975 140
lmboogaard 0:af4af28f0975 141 while (!Senslev) {};
lmboogaard 0:af4af28f0975 142 Cycle.stop();
lmboogaard 0:af4af28f0975 143 T = Cycle.read_us();
lmboogaard 0:af4af28f0975 144 Cycle.reset();
lmboogaard 0:af4af28f0975 145
lmboogaard 0:af4af28f0975 146 Store[i] = 212.77f * Td/T - 68.08f;
lmboogaard 0:af4af28f0975 147 wait(1);//was 10
lmboogaard 0:af4af28f0975 148 myled = !myled;
lmboogaard 0:af4af28f0975 149 i++;
lmboogaard 0:af4af28f0975 150
lmboogaard 0:af4af28f0975 151 //do temp calculation
lmboogaard 0:af4af28f0975 152 //......
lmboogaard 0:af4af28f0975 153 if(i == 10) {
lmboogaard 0:af4af28f0975 154
lmboogaard 0:af4af28f0975 155
lmboogaard 0:af4af28f0975 156 float temp = Average(Store);
lmboogaard 0:af4af28f0975 157
lmboogaard 0:af4af28f0975 158
lmboogaard 0:af4af28f0975 159 sprintf(pBuf, "%2.2f", temp);
lmboogaard 0:af4af28f0975 160 *(pBuf + 5) = ' '; //symbol graden chinees
lmboogaard 0:af4af28f0975 161 *(pBuf + 6) = 'C';
lmboogaard 0:af4af28f0975 162 *(pBuf + 7) = '\0';
lmboogaard 0:af4af28f0975 163
lmboogaard 0:af4af28f0975 164 time_t seconds = time(NULL);
lmboogaard 0:af4af28f0975 165 sprintf(ptimeBuf, "%s", ctime(&seconds));
lmboogaard 0:af4af28f0975 166 mylcd.DisplayString(1, 0, pBuf, strlen(pBuf));
lmboogaard 0:af4af28f0975 167 // mylcd.DisplayString(2, 0, ptimeBuf, 11);
lmboogaard 0:af4af28f0975 168 mylcd.DisplayString(3, 0, ptimeBuf + 11 , 13);
lmboogaard 0:af4af28f0975 169
lmboogaard 0:af4af28f0975 170 i = 0;
lmboogaard 0:af4af28f0975 171 }
lmboogaard 0:af4af28f0975 172 */
lmboogaard 0:af4af28f0975 173
lmboogaard 0:af4af28f0975 174
lmboogaard 0:af4af28f0975 175 // read_line();
lmboogaard 0:af4af28f0975 176 mylcd.DisplayString(2, 0, rx_line, 16);//strlen(pBuf));
lmboogaard 0:af4af28f0975 177
lmboogaard 0:af4af28f0975 178 }
lmboogaard 0:af4af28f0975 179 }
lmboogaard 0:af4af28f0975 180
lmboogaard 0:af4af28f0975 181 float Average(float* array)
lmboogaard 0:af4af28f0975 182 {
lmboogaard 0:af4af28f0975 183 float Result = 0;
lmboogaard 0:af4af28f0975 184
lmboogaard 0:af4af28f0975 185 for(int i = 0; i < 10; i++)
lmboogaard 0:af4af28f0975 186 Result += *(array + i);
lmboogaard 0:af4af28f0975 187
lmboogaard 0:af4af28f0975 188 return Result/10;
lmboogaard 0:af4af28f0975 189 }