Barometer program : Data Logger function includes Barometer & temperature (BMP180), Humidity & temp. (RHT03), Sunshine (Cds), RTC(M41T62) data. : Logging data saves into EEPROM (AT24C1024) using ring buffer function.
Dependencies: AT24C1024 RHT03 TextLCD BMP180 M41T62
Fork of mbed_blinky by
Please see https://mbed.org/users/kenjiArai/notebook/mbed-lpc1114fn28-barometer-with-data-logging/#
dt_log.h@15:065fbeddc305, 2014-06-29 (annotated)
- Committer:
- kenjiArai
- Date:
- Sun Jun 29 06:58:00 2014 +0000
- Revision:
- 15:065fbeddc305
- Child:
- 16:f164f8912201
Barometer program / Step by step approach -> final step,; Barometer, Humidity, Sunshine, RTC data into EEPROM (logging)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kenjiArai | 15:065fbeddc305 | 1 | /* |
kenjiArai | 15:065fbeddc305 | 2 | * mbed Application program for the mbed LPC1114FN28 |
kenjiArai | 15:065fbeddc305 | 3 | * Data Logging |
kenjiArai | 15:065fbeddc305 | 4 | * |
kenjiArai | 15:065fbeddc305 | 5 | * Copyright (c) 2013,'14 Kenji Arai / JH1PJL |
kenjiArai | 15:065fbeddc305 | 6 | * http://www.page.sannet.ne.jp/kenjia/index.html |
kenjiArai | 15:065fbeddc305 | 7 | * http://mbed.org/users/kenjiArai/ |
kenjiArai | 15:065fbeddc305 | 8 | * Created: June 16th, 2013 |
kenjiArai | 15:065fbeddc305 | 9 | * Revised: June 29th, 2014 |
kenjiArai | 15:065fbeddc305 | 10 | * |
kenjiArai | 15:065fbeddc305 | 11 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, |
kenjiArai | 15:065fbeddc305 | 12 | * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE |
kenjiArai | 15:065fbeddc305 | 13 | * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, |
kenjiArai | 15:065fbeddc305 | 14 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
kenjiArai | 15:065fbeddc305 | 15 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
kenjiArai | 15:065fbeddc305 | 16 | */ |
kenjiArai | 15:065fbeddc305 | 17 | |
kenjiArai | 15:065fbeddc305 | 18 | // Definition ----------------------------------------------------------------------------------- |
kenjiArai | 15:065fbeddc305 | 19 | // Buffer size |
kenjiArai | 15:065fbeddc305 | 20 | #define EEP_SIZE 128 * 1024 // 1Mbits = 128 KBytes |
kenjiArai | 15:065fbeddc305 | 21 | #define PKT_SIZE 16 // Packet size |
kenjiArai | 15:065fbeddc305 | 22 | #define BLK_NO 8192 // 128KB/16 = 8192 |
kenjiArai | 15:065fbeddc305 | 23 | #define ALL_SIZE (PKT_SIZE) * (BLK_NO) |
kenjiArai | 15:065fbeddc305 | 24 | #if ALL_SIZ > EEP_SIZE |
kenjiArai | 15:065fbeddc305 | 25 | #error "Data size in EEPROM is too big!" |
kenjiArai | 15:065fbeddc305 | 26 | #endif |
kenjiArai | 15:065fbeddc305 | 27 | #define PTR_SIZE 16 |
kenjiArai | 15:065fbeddc305 | 28 | |
kenjiArai | 15:065fbeddc305 | 29 | // Buffer control |
kenjiArai | 15:065fbeddc305 | 30 | #define BUF_HEAD 0x0001 |
kenjiArai | 15:065fbeddc305 | 31 | #define BUF_RD_ALL 0 |
kenjiArai | 15:065fbeddc305 | 32 | #define BLK_SIZE 16 |
kenjiArai | 15:065fbeddc305 | 33 | |
kenjiArai | 15:065fbeddc305 | 34 | // Buffer Status |
kenjiArai | 15:065fbeddc305 | 35 | #define BUF_FULL 0xff |
kenjiArai | 15:065fbeddc305 | 36 | |
kenjiArai | 15:065fbeddc305 | 37 | // Packet pointer |
kenjiArai | 15:065fbeddc305 | 38 | #define READ_POINTER() \ |
kenjiArai | 15:065fbeddc305 | 39 | ((uint16_t)(( buf_pointer[0] << 8) + buf_pointer[1])) |
kenjiArai | 15:065fbeddc305 | 40 | #define WRITE_POINTER(x) \ |
kenjiArai | 15:065fbeddc305 | 41 | buf_pointer[0] = (uint8_t)( x >> 8); \ |
kenjiArai | 15:065fbeddc305 | 42 | buf_pointer[1] = (uint8_t)x; |
kenjiArai | 15:065fbeddc305 | 43 | #define RD_STATUS() \ |
kenjiArai | 15:065fbeddc305 | 44 | (buf_pointer[2]) |
kenjiArai | 15:065fbeddc305 | 45 | #define WR_STATUS(x) \ |
kenjiArai | 15:065fbeddc305 | 46 | buf_pointer[2] = (uint8_t)x; |
kenjiArai | 15:065fbeddc305 | 47 | |
kenjiArai | 15:065fbeddc305 | 48 | // Pointer structure |
kenjiArai | 15:065fbeddc305 | 49 | typedef struct EEPROM_BUF_INF{ |
kenjiArai | 15:065fbeddc305 | 50 | uint16_t wr_pointer; |
kenjiArai | 15:065fbeddc305 | 51 | uint16_t max; |
kenjiArai | 15:065fbeddc305 | 52 | uint16_t ptr; |
kenjiArai | 15:065fbeddc305 | 53 | uint8_t size; |
kenjiArai | 15:065fbeddc305 | 54 | uint8_t status; |
kenjiArai | 15:065fbeddc305 | 55 | } xEeprom_ptr; |
kenjiArai | 15:065fbeddc305 | 56 | |
kenjiArai | 15:065fbeddc305 | 57 | // RAM definition |
kenjiArai | 15:065fbeddc305 | 58 | extern uint8_t data_pack[PKT_SIZE]; |
kenjiArai | 15:065fbeddc305 | 59 | |
kenjiArai | 15:065fbeddc305 | 60 | // Function prototypes --------------------------------------------------------------------------- |
kenjiArai | 15:065fbeddc305 | 61 | void dtlog_data_pack(void); |
kenjiArai | 15:065fbeddc305 | 62 | void dtlog_one_write(void); |
kenjiArai | 15:065fbeddc305 | 63 | void dtlog_rd_buf_inf(xEeprom_ptr *); |
kenjiArai | 15:065fbeddc305 | 64 | void dtlog_clear_all_buff(xEeprom_ptr *); |
kenjiArai | 15:065fbeddc305 | 65 | void dtlog_block_read(xEeprom_ptr *); |
kenjiArai | 15:065fbeddc305 | 66 | void dtlog_num_of_block(xEeprom_ptr *); |
kenjiArai | 15:065fbeddc305 | 67 | uint16_t dtlog_buf_occupation(void); |