Zeitsteuerung
Fork of timer0 by
Diff: rs_485.h
- 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