Zeitsteuerung

Fork of timer0 by V09

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers rs_485.h Source File

rs_485.h

00001 
00002 #include "mbed.h"
00003 #include "MODSERIAL.h"
00004 
00005 // Schnittstelle für den H-Bus
00006 #define RS485_TX2   P2_0
00007 #define RS485_RX2   P2_1
00008 #define RS485_DIR2  P1_4
00009 
00010 class rs_485 {
00011 
00012   private:
00013 
00014     Timer   timeout;        // define debounce timer
00015     Timeout timeout_out;
00016     
00017     int tx_timeout1;
00018     int tx_timeout2;
00019      
00020     bool send_end_flag;     // Flag für Telegrammende
00021     uint8_t rs_aktiv;       // 0 inaktiv auf Empfang
00022                             // 1 aktiv auf Empfang
00023                             // 2 aktiv im Sendemodus
00024     uint8_t rs_aktiv_old;
00025     uint8_t t_array[4];
00026     int     zeit;
00027       
00028   public:
00029 
00030     struct Message {
00031     uint8_t     STX;                // Start byte
00032     uint8_t     source;             // Absender Adresse
00033     uint8_t     dest;               // Ziel Adresse 
00034     uint8_t     len;                // Length of data field in bytes   
00035     uint8_t     data[8];            // Data field
00036     uint8_t     CRC;                // CRC
00037     uint8_t     ETX;                // Telegramm Ende
00038     uint8_t     h;
00039     uint8_t     m;
00040     uint8_t     s;
00041     uint16_t    ms;
00042     uint8_t     count;              // interner Zähler
00043     uint8_t     sm;                 // interne Steuerung ( state maschine )
00044     uint8_t     error; 
00045     };
00046 
00047     Message msg_out;
00048     Message msg_in; 
00049        
00050     rs_485();
00051    
00052     void isr_timeout(void);
00053     void txEmpty(MODSERIAL_IRQ_INFO *q);
00054     uint8_t get_crc(uint8_t *pbuffer, uint8_t count);
00055     void msg_print(Message msg);
00056     void write(uint8_t *data);
00057     void execute(void);
00058     void send(void);
00059     void receive(void);
00060      
00061 };