Zeitsteuerung

Fork of timer0 by V09

Revision:
1:8779e76fd4ea
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rs_485.h	Fri Feb 05 14:39:43 2016 +0000
@@ -0,0 +1,61 @@
+
+#include "mbed.h"
+#include "MODSERIAL.h"
+
+// Schnittstelle für den H-Bus
+#define RS485_TX2   P2_0
+#define RS485_RX2   P2_1
+#define RS485_DIR2  P1_4
+
+class rs_485 {
+
+  private:
+
+    Timer   timeout;        // define debounce timer
+    Timeout timeout_out;
+    
+    int tx_timeout1;
+    int tx_timeout2;
+     
+    bool send_end_flag;     // Flag für Telegrammende
+    uint8_t rs_aktiv;       // 0 inaktiv auf Empfang
+                            // 1 aktiv auf Empfang
+                            // 2 aktiv im Sendemodus
+    uint8_t rs_aktiv_old;
+    uint8_t t_array[4];
+    int     zeit;
+      
+  public:
+
+    struct Message {
+    uint8_t     STX;                // Start byte
+    uint8_t     source;             // Absender Adresse
+    uint8_t     dest;               // Ziel Adresse 
+    uint8_t     len;                // Length of data field in bytes   
+    uint8_t     data[8];            // Data field
+    uint8_t     CRC;                // CRC
+    uint8_t     ETX;                // Telegramm Ende
+    uint8_t     h;
+    uint8_t     m;
+    uint8_t     s;
+    uint16_t    ms;
+    uint8_t     count;              // interner Zähler
+    uint8_t     sm;                 // interne Steuerung ( state maschine )
+    uint8_t     error; 
+    };
+
+    Message msg_out;
+    Message msg_in; 
+       
+    rs_485();
+   
+    void isr_timeout(void);
+    void txEmpty(MODSERIAL_IRQ_INFO *q);
+    uint8_t get_crc(uint8_t *pbuffer, uint8_t count);
+    void msg_print(Message msg);
+    void write(uint8_t *data);
+    void execute(void);
+    void send(void);
+    void receive(void);
+     
+};
\ No newline at end of file