03082014
Dependencies: Buffer ConfigFile SDFileSystem mbed mon timer0
Fork of 15_PT1000 by
Diff: main.cpp
- Revision:
- 2:f48d2eb0cc55
- Parent:
- 1:82c47e2d81f0
- Child:
- 3:72a65324d50d
--- a/main.cpp Sun Jul 27 08:38:11 2014 +0000 +++ b/main.cpp Mon Jul 28 14:37:14 2014 +0000 @@ -1,7 +1,9 @@ -// Version 07 30.06.2013 +// Version 10 27.07.2014 // die Ausgabe auf das Format #nr val umgestellt #include "mbed.h" +#include "ConfigFile.h" +#include "SDFileSystem.h" #include "DS2482.h" #include "timer0.h" #include "Buffer.h" @@ -9,10 +11,10 @@ #define CR 13 -timer0 down_timer; -Serial pc(USBTX, USBRX); -Buffer <char> buf; -monitor mon; +SDFileSystem sd(PTD2, PTD3, PTC5, PTD0, "sd"); // The pinout (MOSI, MISO, SCLK, CS) +timer0 down_timer; // Zeitsteuerung +Serial pc(USBTX, USBRX); // tx, rx +Buffer <char> buf; // Ringbuffer für ankommende Zeichen // sda, scl, adr DS2482 ow(PTE0,PTE1,0x30); @@ -69,7 +71,14 @@ float temp_float; -//-------------------------------------------------------- +ConfigFile cfg; +char value[BUFSIZ]; + +//------------------------------------------------------------------------------ +// Werte die auch über das config file gesetzt werden können +float offset = 0.0; + +//------------------------------------------------------------------------------ // Interruptroutine wird bei jedem ankommenden Zeichen aufgerufen void rx_handler(void) { @@ -84,7 +93,13 @@ } } - +//------------------------------------------------------------------------------ +// lesen der PT1000 AD-Werte +// +// Um Störungen zu reduzieren werden 16 Werte gelesen und daraus wird der +// Mittelwert berechnet. Eine Messung dauert ca. 30µs. Somit wird für eine Messung +// ca. eine Zeit von 0,5ms benötigt. +// int read_mw(uint8_t pos) { uint8_t n; @@ -121,22 +136,45 @@ return mw; } +//------------------------------------------------------------------------------ +// int main() { + //------------------------------------------------------------------------------ + // RS232 Schnittstellt welche auf den CMSIS-DAP (USB Port) weitergeleitet wird + // pc.baud(9600); pc.attach(&rx_handler, Serial::RxIrq); pc.printf("\n V08 was compiled on %s %s \n", __DATE__,__TIME__); + mon_init(); + + //------------------------------------------------------------------------------ + // Timer für die Zeitsteuerung + // down_timer.SetCountdownTimer(0,1,50); // Timer für die LED down_timer.SetCountdownTimer(1,1,500); // Timer für den one wire bus down_timer.SetCountdownTimer(2,1,1000);// Timer für die Ausgabe der Daten r = g = b = 1; // RGB LED ausschalten + + //-------------------------------------------------------------------- + // Variablen von der SD Karte initialisieren + + cfg.read("/sd/input.cfg"); + + if (cfg.getValue("offset", &value[0], sizeof(value))) + { + offset = atof(value); + pc.printf("\noffset = %f", offset); + } + //-------------------------------------------------------------------- // one wire bus + /* // pc.printf("\n ++++ on wire search ++++\n"); wait (0.1); ow.DS18XX_Read_Address(); @@ -178,12 +216,17 @@ status = 0; ds1820_status = 0; + */ + //-------------------------------------------------------------------- // Schleife fuer die Datenerfassung while(1) { - mon.get_line(); + //------------------------------------------- + // Prüfen ob Zeichen eingegeben wurden + + get_line(); //------------------------------------------- // timer 0 steuert die LED @@ -273,13 +316,13 @@ temp_word = read_mw(0); temp_float = (temp_word - 17210); temp_float /= 70; - pc.printf("%0.2f; ",temp_float); // Rohdaten ausgeben + // pc.printf("%0.2f; ",temp_float); // Rohdaten ausgeben temp_word = read_mw(1); temp_float = (temp_word - 17210); temp_float /= 70; - pc.printf("%0.2f\n",temp_float); // Rohdaten ausgeben + // pc.printf("%0.2f\n",temp_float); // Rohdaten ausgeben //------------------------------------------------------