EMIR - Ekvitermní mikroprocesorová regulace https://code.google.com/p/emir/ https://code.google.com/p/emir/wiki/DesignV3
Dependencies: ConfigFile DS1307 OneWire SDFileSystem USBDeviceLite mbed-rtos mbed
main.cpp@2:0e0131d51df5, 2014-04-28 (annotated)
- Committer:
- alpov
- Date:
- Mon Apr 28 13:10:52 2014 +0000
- Revision:
- 2:0e0131d51df5
- Parent:
- 0:36595c2797dc
updated libs, testing main devel, removed rtos
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
alpov | 0:36595c2797dc | 1 | #include "mbed.h" |
alpov | 0:36595c2797dc | 2 | #include "SDFileSystem.h" |
alpov | 0:36595c2797dc | 3 | #include "USBSerial.h" |
alpov | 0:36595c2797dc | 4 | #include "DS1307.h" |
alpov | 0:36595c2797dc | 5 | #include "1wire.h" |
alpov | 0:36595c2797dc | 6 | |
alpov | 0:36595c2797dc | 7 | Serial pc(MBED_UARTUSB); |
alpov | 0:36595c2797dc | 8 | |
alpov | 0:36595c2797dc | 9 | SDFileSystem sd(MBED_SPI0, "sd"); |
alpov | 0:36595c2797dc | 10 | |
alpov | 2:0e0131d51df5 | 11 | USBSerial usb(0x1f00, 0x2012, 0x0001, false); |
alpov | 0:36595c2797dc | 12 | |
alpov | 0:36595c2797dc | 13 | DS1307 rtc(I2C_SDA, I2C_SCL); |
alpov | 0:36595c2797dc | 14 | |
alpov | 0:36595c2797dc | 15 | OneWire ow(A4, A2, A3); |
alpov | 0:36595c2797dc | 16 | |
alpov | 0:36595c2797dc | 17 | DigitalOut ledR(LED_RED, 1); |
alpov | 0:36595c2797dc | 18 | DigitalOut ledG(LED_GREEN, 1); |
alpov | 0:36595c2797dc | 19 | //DigitalOut ledB(LED_BLUE, 1); |
alpov | 0:36595c2797dc | 20 | |
alpov | 0:36595c2797dc | 21 | DigitalOut OUT1(D2, 0); |
alpov | 0:36595c2797dc | 22 | DigitalOut OUT2(D3, 0); |
alpov | 0:36595c2797dc | 23 | DigitalOut OUT3(D4, 0); |
alpov | 0:36595c2797dc | 24 | DigitalOut OUT4(D5, 0); |
alpov | 0:36595c2797dc | 25 | |
alpov | 0:36595c2797dc | 26 | DigitalIn IN1(D8, PullUp); |
alpov | 0:36595c2797dc | 27 | DigitalIn IN2(D9, PullUp); |
alpov | 0:36595c2797dc | 28 | |
alpov | 0:36595c2797dc | 29 | |
alpov | 2:0e0131d51df5 | 30 | void blik_usb() |
alpov | 2:0e0131d51df5 | 31 | { |
alpov | 2:0e0131d51df5 | 32 | if (usb.configured()) |
alpov | 2:0e0131d51df5 | 33 | ledG = !ledG; |
alpov | 2:0e0131d51df5 | 34 | else |
alpov | 2:0e0131d51df5 | 35 | ledG = 1; |
alpov | 2:0e0131d51df5 | 36 | } |
alpov | 2:0e0131d51df5 | 37 | |
alpov | 2:0e0131d51df5 | 38 | |
alpov | 0:36595c2797dc | 39 | int main(void) |
alpov | 0:36595c2797dc | 40 | { |
alpov | 0:36595c2797dc | 41 | Timer t; |
alpov | 2:0e0131d51df5 | 42 | Ticker usbstat; |
alpov | 0:36595c2797dc | 43 | char c; |
alpov | 0:36595c2797dc | 44 | |
alpov | 2:0e0131d51df5 | 45 | usbstat.attach(&blik_usb, 0.2); |
alpov | 2:0e0131d51df5 | 46 | |
alpov | 0:36595c2797dc | 47 | pc.printf("Hello World!\n"); |
alpov | 0:36595c2797dc | 48 | |
alpov | 0:36595c2797dc | 49 | FILE *fp = fopen("/sd/sdtest2.txt", "w"); |
alpov | 0:36595c2797dc | 50 | if (fp == NULL) { |
alpov | 0:36595c2797dc | 51 | pc.printf("Could not open file for write\n"); |
alpov | 0:36595c2797dc | 52 | } else { |
alpov | 0:36595c2797dc | 53 | pc.printf("Writing... "); |
alpov | 0:36595c2797dc | 54 | fprintf(fp, "Hello fun SD Card World!\nOK!\n"); |
alpov | 0:36595c2797dc | 55 | pc.printf("closing... "); |
alpov | 0:36595c2797dc | 56 | fclose(fp); |
alpov | 0:36595c2797dc | 57 | } |
alpov | 0:36595c2797dc | 58 | pc.printf("done\n"); |
alpov | 0:36595c2797dc | 59 | |
alpov | 0:36595c2797dc | 60 | OUT1 = 1; |
alpov | 0:36595c2797dc | 61 | OUT2 = 1; |
alpov | 0:36595c2797dc | 62 | OUT3 = 1; |
alpov | 0:36595c2797dc | 63 | OUT4 = 1; |
alpov | 0:36595c2797dc | 64 | wait(1.0); |
alpov | 0:36595c2797dc | 65 | OUT1 = 0; |
alpov | 0:36595c2797dc | 66 | OUT2 = 0; |
alpov | 0:36595c2797dc | 67 | OUT3 = 0; |
alpov | 0:36595c2797dc | 68 | OUT4 = 0; |
alpov | 0:36595c2797dc | 69 | |
alpov | 2:0e0131d51df5 | 70 | pc.printf("Entering loop\n"); |
alpov | 2:0e0131d51df5 | 71 | |
alpov | 0:36595c2797dc | 72 | while (1) |
alpov | 0:36595c2797dc | 73 | { |
alpov | 2:0e0131d51df5 | 74 | if (!usb.readable()) continue; |
alpov | 2:0e0131d51df5 | 75 | c = usb.getc(); |
alpov | 2:0e0131d51df5 | 76 | //pc.printf("USB command received\n"); |
alpov | 0:36595c2797dc | 77 | |
alpov | 0:36595c2797dc | 78 | if (c == 'r') { |
alpov | 0:36595c2797dc | 79 | // perform read |
alpov | 0:36595c2797dc | 80 | t.reset(); |
alpov | 0:36595c2797dc | 81 | t.start(); |
alpov | 0:36595c2797dc | 82 | time_t m_time = rtc.now(); |
alpov | 0:36595c2797dc | 83 | t.stop(); |
alpov | 0:36595c2797dc | 84 | |
alpov | 0:36595c2797dc | 85 | struct tm *now; |
alpov | 0:36595c2797dc | 86 | now = localtime(&m_time); |
alpov | 0:36595c2797dc | 87 | |
alpov | 2:0e0131d51df5 | 88 | usb.printf("Current time is %lu, %02d:%02d:%02d, %d.%d.%04d\n", |
alpov | 0:36595c2797dc | 89 | m_time, |
alpov | 0:36595c2797dc | 90 | now->tm_hour, now->tm_min, now->tm_sec, |
alpov | 0:36595c2797dc | 91 | now->tm_mday, now->tm_mon+1, now->tm_year+1900 |
alpov | 0:36595c2797dc | 92 | ); |
alpov | 2:0e0131d51df5 | 93 | usb.printf("Internal datetime format is %s\n", asctime(now)); |
alpov | 2:0e0131d51df5 | 94 | usb.printf("Read complete, elapsed %uus\n", t.read_us()); |
alpov | 0:36595c2797dc | 95 | |
alpov | 0:36595c2797dc | 96 | } |
alpov | 0:36595c2797dc | 97 | else if (c == 'w') { |
alpov | 0:36595c2797dc | 98 | // perform write |
alpov | 0:36595c2797dc | 99 | int date, month, year, hours, minutes, seconds; |
alpov | 2:0e0131d51df5 | 100 | usb.printf("Enter the date (date 1..31)\n"); usb.scanf("%d", &date); |
alpov | 2:0e0131d51df5 | 101 | usb.printf("Enter the date (month 1..12)\n"); usb.scanf("%d", &month); |
alpov | 2:0e0131d51df5 | 102 | usb.printf("Enter the date (year >2000)\n"); usb.scanf("%d", &year); |
alpov | 2:0e0131d51df5 | 103 | usb.printf("Enter the time (hours 0..23)\n"); usb.scanf("%d", &hours); |
alpov | 2:0e0131d51df5 | 104 | usb.printf("Enter the time (minutes 0..59)\n"); usb.scanf("%d", &minutes); |
alpov | 2:0e0131d51df5 | 105 | usb.printf("Enter the time (seconds 0..59)\n"); usb.scanf("%d", &seconds); |
alpov | 0:36595c2797dc | 106 | |
alpov | 0:36595c2797dc | 107 | struct tm now = {seconds, minutes, hours, date, month-1, year-1900}; |
alpov | 0:36595c2797dc | 108 | time_t m_time = mktime(&now); |
alpov | 0:36595c2797dc | 109 | |
alpov | 0:36595c2797dc | 110 | t.reset(); |
alpov | 0:36595c2797dc | 111 | t.start(); |
alpov | 0:36595c2797dc | 112 | bool b = rtc.set_time(m_time); |
alpov | 0:36595c2797dc | 113 | t.stop(); |
alpov | 0:36595c2797dc | 114 | |
alpov | 2:0e0131d51df5 | 115 | usb.printf("Write complete (UNIX %lu, result %d), elapsed %uus\n", m_time, b, t.read_us()); |
alpov | 0:36595c2797dc | 116 | } |
alpov | 0:36595c2797dc | 117 | else if (c == 'c') { |
alpov | 0:36595c2797dc | 118 | ow.ConvertAll(true); |
alpov | 2:0e0131d51df5 | 119 | usb.printf("Convert done\n"); |
alpov | 0:36595c2797dc | 120 | } |
alpov | 0:36595c2797dc | 121 | else if (c == 't') { |
alpov | 0:36595c2797dc | 122 | int result, temp; |
alpov | 0:36595c2797dc | 123 | uint8_t rom[8]; |
alpov | 0:36595c2797dc | 124 | |
alpov | 0:36595c2797dc | 125 | memset(rom, 0, sizeof(rom)); |
alpov | 0:36595c2797dc | 126 | result = ow.First(rom); |
alpov | 0:36595c2797dc | 127 | while (result == OW_FOUND) { |
alpov | 2:0e0131d51df5 | 128 | for (int i = 0; i < 8; i++) usb.printf("%.2X", rom[i]); |
alpov | 0:36595c2797dc | 129 | |
alpov | 0:36595c2797dc | 130 | t.reset(); |
alpov | 0:36595c2797dc | 131 | t.start(); |
alpov | 0:36595c2797dc | 132 | int b = ow.ReadTemperature(rom, &temp); |
alpov | 0:36595c2797dc | 133 | t.stop(); |
alpov | 2:0e0131d51df5 | 134 | if (b) usb.printf(": read failed, code 0x%.4x, elapsed %uus\n", b, t.read_us()); |
alpov | 2:0e0131d51df5 | 135 | else usb.printf(": read ok, temperature %.2f'C, elapsed %uus\n", temp / 100., t.read_us()); |
alpov | 0:36595c2797dc | 136 | |
alpov | 0:36595c2797dc | 137 | result = ow.Next(rom); |
alpov | 0:36595c2797dc | 138 | } |
alpov | 2:0e0131d51df5 | 139 | usb.printf("Done\n"); |
alpov | 0:36595c2797dc | 140 | } |
alpov | 0:36595c2797dc | 141 | else { |
alpov | 2:0e0131d51df5 | 142 | usb.printf("Syntax error\n"); |
alpov | 0:36595c2797dc | 143 | } |
alpov | 2:0e0131d51df5 | 144 | |
alpov | 2:0e0131d51df5 | 145 | usb.printf("\n"); |
alpov | 0:36595c2797dc | 146 | } |
alpov | 0:36595c2797dc | 147 | |
alpov | 0:36595c2797dc | 148 | } |
alpov | 0:36595c2797dc | 149 |