Programm to control a huge setup of sous vide cookers. See https://stratum0.org/wiki/S0us-vide for more information on this project.

Dependencies:   mbed-rtos mbed

Fork of rtos_basic by mbed official

Committer:
chrissidach
Date:
Mon Jul 13 19:50:02 2015 +0000
Revision:
7:22b5cbcece06
Parent:
3:c92e21f305d8
+initial infrastructure; +extensionIF; +serial parser

Who changed what in which revision?

UserRevisionLine numberNew contents of line
emilmont 1:491820ee784d 1 #include "mbed.h"
emilmont 1:491820ee784d 2 #include "rtos.h"
chrissidach 7:22b5cbcece06 3
chrissidach 7:22b5cbcece06 4 #include "extensionIF.h"
chrissidach 7:22b5cbcece06 5 #include "serialParser.h"
emilmont 1:491820ee784d 6
emilmont 1:491820ee784d 7 DigitalOut led1(LED1);
chrissidach 7:22b5cbcece06 8
chrissidach 7:22b5cbcece06 9 SerialParser *pc;
chrissidach 7:22b5cbcece06 10 EIF *eif;
chrissidach 7:22b5cbcece06 11
chrissidach 7:22b5cbcece06 12 I2C i2c(PB_9, PB_8);
chrissidach 7:22b5cbcece06 13
chrissidach 7:22b5cbcece06 14 #define I2CslaveAddr 0x40
chrissidach 7:22b5cbcece06 15
chrissidach 7:22b5cbcece06 16
chrissidach 7:22b5cbcece06 17 void i2c_1w(void const *args) {
chrissidach 7:22b5cbcece06 18 char data[10];
chrissidach 7:22b5cbcece06 19 char data2[10];
chrissidach 7:22b5cbcece06 20 int rc;
chrissidach 7:22b5cbcece06 21
chrissidach 7:22b5cbcece06 22 data[0] = 0;
chrissidach 7:22b5cbcece06 23
chrissidach 7:22b5cbcece06 24 i2c.frequency(100000);
chrissidach 7:22b5cbcece06 25
chrissidach 7:22b5cbcece06 26 while(true)
chrissidach 7:22b5cbcece06 27 {
chrissidach 7:22b5cbcece06 28 printf("Write... ");
chrissidach 7:22b5cbcece06 29 rc = i2c.write(0x40, data, 1);
chrissidach 7:22b5cbcece06 30 printf("%i\r\n", rc);
chrissidach 7:22b5cbcece06 31 data[0] = ~data[0];
chrissidach 7:22b5cbcece06 32
chrissidach 7:22b5cbcece06 33 printf("Read... ");
chrissidach 7:22b5cbcece06 34 rc = i2c.read(0x40, data2, 1);
chrissidach 7:22b5cbcece06 35 printf("%i, %x\r\n", rc, data2[0]);
emilmont 1:491820ee784d 36 Thread::wait(1000);
emilmont 1:491820ee784d 37 }
emilmont 1:491820ee784d 38 }
emilmont 1:491820ee784d 39
chrissidach 7:22b5cbcece06 40 int main() {
chrissidach 7:22b5cbcece06 41 printf("\r\n!****\r\n!System Init...\r\n");
chrissidach 7:22b5cbcece06 42
chrissidach 7:22b5cbcece06 43 eif = new EIF();
chrissidach 7:22b5cbcece06 44 printf("!* EIF init complete\r\n");
emilmont 1:491820ee784d 45
chrissidach 7:22b5cbcece06 46 //TODO: Remove
chrissidach 7:22b5cbcece06 47 //Lets pretend this extension is present:
chrissidach 7:22b5cbcece06 48 eif->mutex.lock();
chrissidach 7:22b5cbcece06 49 eif->extensions[0].present = true;
chrissidach 7:22b5cbcece06 50 eif->extensions[0].pods[0].present = true;
chrissidach 7:22b5cbcece06 51 eif->extensions[0].pods[0].temp1 = 280;
chrissidach 7:22b5cbcece06 52 eif->extensions[0].pods[0].temp2 = 270;
chrissidach 7:22b5cbcece06 53 eif->mutex.unlock();
chrissidach 7:22b5cbcece06 54
chrissidach 7:22b5cbcece06 55
chrissidach 7:22b5cbcece06 56 pc = new SerialParser(USBTX, USBRX, eif);
chrissidach 7:22b5cbcece06 57 printf("!* SerialParser init complete\r\n");
chrissidach 7:22b5cbcece06 58
chrissidach 7:22b5cbcece06 59 //Thread thread(i2c_1w);
chrissidach 7:22b5cbcece06 60
chrissidach 7:22b5cbcece06 61
chrissidach 7:22b5cbcece06 62 printf("!Init complete\r\n");
chrissidach 7:22b5cbcece06 63
chrissidach 7:22b5cbcece06 64 //Pretend we are still there...
emilmont 1:491820ee784d 65 while (true) {
emilmont 1:491820ee784d 66 led1 = !led1;
chrissidach 7:22b5cbcece06 67 Thread::wait(200);
emilmont 1:491820ee784d 68 }
emilmont 1:491820ee784d 69 }