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
- Committer:
- alpov
- Date:
- 2014-04-28
- Revision:
- 2:0e0131d51df5
- Parent:
- 0:36595c2797dc
File content as of revision 2:0e0131d51df5:
#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"); } }