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
Diff: main.cpp
- Revision:
- 3:ede67e9b60eb
- Parent:
- 2:0e0131d51df5
- Child:
- 4:9065e9ccb078
--- a/main.cpp Mon Apr 28 13:10:52 2014 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,149 +0,0 @@ -#include "mbed.h" -#include "SDFileSystem.h" -#include "USBSerial.h" -#include "DS1307.h" -#include "1wire.h" - -Serial pc(MBED_UARTUSB); - -SDFileSystem sd(MBED_SPI0, "sd"); - -USBSerial usb(0x1f00, 0x2012, 0x0001, false); - -DS1307 rtc(I2C_SDA, I2C_SCL); - -OneWire ow(A4, A2, A3); - -DigitalOut ledR(LED_RED, 1); -DigitalOut ledG(LED_GREEN, 1); -//DigitalOut ledB(LED_BLUE, 1); - -DigitalOut OUT1(D2, 0); -DigitalOut OUT2(D3, 0); -DigitalOut OUT3(D4, 0); -DigitalOut OUT4(D5, 0); - -DigitalIn IN1(D8, PullUp); -DigitalIn IN2(D9, PullUp); - - -void blik_usb() -{ - if (usb.configured()) - ledG = !ledG; - else - ledG = 1; -} - - -int main(void) -{ - Timer t; - Ticker usbstat; - char c; - - usbstat.attach(&blik_usb, 0.2); - - pc.printf("Hello World!\n"); - - FILE *fp = fopen("/sd/sdtest2.txt", "w"); - if (fp == NULL) { - pc.printf("Could not open file for write\n"); - } else { - pc.printf("Writing... "); - fprintf(fp, "Hello fun SD Card World!\nOK!\n"); - pc.printf("closing... "); - fclose(fp); - } - pc.printf("done\n"); - - OUT1 = 1; - OUT2 = 1; - OUT3 = 1; - OUT4 = 1; - wait(1.0); - OUT1 = 0; - OUT2 = 0; - OUT3 = 0; - OUT4 = 0; - - pc.printf("Entering loop\n"); - - while (1) - { - if (!usb.readable()) continue; - c = usb.getc(); - //pc.printf("USB command received\n"); - - if (c == 'r') { - // perform read - t.reset(); - t.start(); - time_t m_time = rtc.now(); - t.stop(); - - struct tm *now; - now = localtime(&m_time); - - usb.printf("Current time is %lu, %02d:%02d:%02d, %d.%d.%04d\n", - m_time, - now->tm_hour, now->tm_min, now->tm_sec, - now->tm_mday, now->tm_mon+1, now->tm_year+1900 - ); - usb.printf("Internal datetime format is %s\n", asctime(now)); - usb.printf("Read complete, elapsed %uus\n", t.read_us()); - - } - else if (c == 'w') { - // perform write - int date, month, year, hours, minutes, seconds; - usb.printf("Enter the date (date 1..31)\n"); usb.scanf("%d", &date); - usb.printf("Enter the date (month 1..12)\n"); usb.scanf("%d", &month); - usb.printf("Enter the date (year >2000)\n"); usb.scanf("%d", &year); - usb.printf("Enter the time (hours 0..23)\n"); usb.scanf("%d", &hours); - usb.printf("Enter the time (minutes 0..59)\n"); usb.scanf("%d", &minutes); - usb.printf("Enter the time (seconds 0..59)\n"); usb.scanf("%d", &seconds); - - struct tm now = {seconds, minutes, hours, date, month-1, year-1900}; - time_t m_time = mktime(&now); - - t.reset(); - t.start(); - bool b = rtc.set_time(m_time); - t.stop(); - - usb.printf("Write complete (UNIX %lu, result %d), elapsed %uus\n", m_time, b, t.read_us()); - } - else if (c == 'c') { - ow.ConvertAll(true); - usb.printf("Convert done\n"); - } - else if (c == 't') { - int result, temp; - uint8_t rom[8]; - - memset(rom, 0, sizeof(rom)); - result = ow.First(rom); - while (result == OW_FOUND) { - for (int i = 0; i < 8; i++) usb.printf("%.2X", rom[i]); - - t.reset(); - t.start(); - int b = ow.ReadTemperature(rom, &temp); - t.stop(); - if (b) usb.printf(": read failed, code 0x%.4x, elapsed %uus\n", b, t.read_us()); - else usb.printf(": read ok, temperature %.2f'C, elapsed %uus\n", temp / 100., t.read_us()); - - result = ow.Next(rom); - } - usb.printf("Done\n"); - } - else { - usb.printf("Syntax error\n"); - } - - usb.printf("\n"); - } - -} -