Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of L432KC-SMT16030 by
main.cpp@0:af4af28f0975, 2017-01-10 (annotated)
- 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?
| User | Revision | Line number | New 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 | } |
