start implementing intercom protocol rehash
This commit is contained in:
parent
d0601716e8
commit
2340808695
|
|
@ -203,12 +203,32 @@ int main (void)
|
|||
if (intercom_flags & FLAG_NEW_RX) {
|
||||
intercom_flags &= ~FLAG_NEW_RX;
|
||||
|
||||
switch (rx.packet.control_word) {
|
||||
// M105- read temperatures
|
||||
case 105:
|
||||
send_temperature(0, temp_get(0));
|
||||
send_temperature(1, temp_get(1));
|
||||
temp_set(0, read_temperature(0));
|
||||
send_temperature(1, temp_get(1));
|
||||
temp_set(1, read_temperature(1));
|
||||
|
||||
start_send();
|
||||
break;
|
||||
// M130 - set PID P factor
|
||||
case 130:
|
||||
pid_set_p(rx.packet.control_index, rx.packet.control_data_int32);
|
||||
// M131 - set PID I factor
|
||||
case 131:
|
||||
pid_set_i(rx.packet.control_index, rx.packet.control_data_int32);
|
||||
// M132 - set PID D factor
|
||||
case 132:
|
||||
pid_set_d(rx.packet.control_index, rx.packet.control_data_int32);
|
||||
// M133 - set PID I limit
|
||||
case 133:
|
||||
pid_set_i_limit(rx.packet.control_index, rx.packet.control_data_int32);
|
||||
// M134 - save PID values to eeprom
|
||||
case 134:
|
||||
heater_save_settings();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,31 +11,6 @@
|
|||
|
||||
#define START 0x55
|
||||
|
||||
enum {
|
||||
ERROR_BAD_CRC
|
||||
} err_codes;
|
||||
|
||||
typedef struct {
|
||||
uint8_t start;
|
||||
uint8_t dio;
|
||||
uint8_t controller_num;
|
||||
uint8_t control_word;
|
||||
uint8_t control_index;
|
||||
union {
|
||||
int32_t control_data_int32;
|
||||
uint32_t control_data_uint32;
|
||||
float control_data_float;
|
||||
uint16_t temp[2];
|
||||
};
|
||||
uint8_t err;
|
||||
uint8_t crc;
|
||||
} intercom_packet_t;
|
||||
|
||||
typedef union {
|
||||
intercom_packet_t packet;
|
||||
uint8_t data[sizeof(intercom_packet_t)];
|
||||
} intercom_packet;
|
||||
|
||||
intercom_packet tx; // this packet will be send
|
||||
intercom_packet rx; // the last received packet with correct checksum
|
||||
intercom_packet _tx; // current packet in transmission
|
||||
|
|
|
|||
|
|
@ -12,6 +12,34 @@
|
|||
#define disable_transmit() do { WRITE(TX_ENABLE_PIN,0); UCSR0B &= ~(MASK(TXCIE0) | MASK(UDRIE0)); UCSR0B |= MASK(RXEN0); } while(0)
|
||||
#endif
|
||||
|
||||
enum {
|
||||
ERROR_BAD_CRC
|
||||
} err_codes;
|
||||
|
||||
typedef struct {
|
||||
uint8_t start;
|
||||
uint8_t dio;
|
||||
uint8_t controller_num;
|
||||
uint8_t control_word;
|
||||
uint8_t control_index;
|
||||
union {
|
||||
int32_t control_data_int32;
|
||||
uint32_t control_data_uint32;
|
||||
float control_data_float;
|
||||
uint16_t temp[2];
|
||||
};
|
||||
uint8_t err;
|
||||
uint8_t crc;
|
||||
} intercom_packet_t;
|
||||
|
||||
typedef union {
|
||||
intercom_packet_t packet;
|
||||
uint8_t data[sizeof(intercom_packet_t)];
|
||||
} intercom_packet;
|
||||
|
||||
extern intercom_packet tx;
|
||||
extern intercom_packet rx;
|
||||
|
||||
// initialise serial subsystem
|
||||
void intercom_init(void);
|
||||
|
||||
|
|
@ -47,4 +75,6 @@ void start_send(void);
|
|||
#define FLAG_TX_FINISHED 8
|
||||
extern volatile uint8_t intercom_flags;
|
||||
|
||||
|
||||
|
||||
#endif /* _INTERCOM_H */
|
||||
|
|
|
|||
25
intercom.c
25
intercom.c
|
|
@ -11,31 +11,6 @@
|
|||
|
||||
#define START 0x55
|
||||
|
||||
enum {
|
||||
ERROR_BAD_CRC
|
||||
} err_codes;
|
||||
|
||||
typedef struct {
|
||||
uint8_t start;
|
||||
uint8_t dio;
|
||||
uint8_t controller_num;
|
||||
uint8_t control_word;
|
||||
uint8_t control_index;
|
||||
union {
|
||||
int32_t control_data_int32;
|
||||
uint32_t control_data_uint32;
|
||||
float control_data_float;
|
||||
uint16_t temp[2];
|
||||
};
|
||||
uint8_t err;
|
||||
uint8_t crc;
|
||||
} intercom_packet_t;
|
||||
|
||||
typedef union {
|
||||
intercom_packet_t packet;
|
||||
uint8_t data[sizeof(intercom_packet_t)];
|
||||
} intercom_packet;
|
||||
|
||||
intercom_packet tx; // this packet will be send
|
||||
intercom_packet rx; // the last received packet with correct checksum
|
||||
intercom_packet _tx; // current packet in transmission
|
||||
|
|
|
|||
30
intercom.h
30
intercom.h
|
|
@ -12,6 +12,34 @@
|
|||
#define disable_transmit() do { WRITE(TX_ENABLE_PIN,0); UCSR0B &= ~(MASK(TXCIE0) | MASK(UDRIE0)); UCSR0B |= MASK(RXEN0); } while(0)
|
||||
#endif
|
||||
|
||||
enum {
|
||||
ERROR_BAD_CRC
|
||||
} err_codes;
|
||||
|
||||
typedef struct {
|
||||
uint8_t start;
|
||||
uint8_t dio;
|
||||
uint8_t controller_num;
|
||||
uint8_t control_word;
|
||||
uint8_t control_index;
|
||||
union {
|
||||
int32_t control_data_int32;
|
||||
uint32_t control_data_uint32;
|
||||
float control_data_float;
|
||||
uint16_t temp[2];
|
||||
};
|
||||
uint8_t err;
|
||||
uint8_t crc;
|
||||
} intercom_packet_t;
|
||||
|
||||
typedef union {
|
||||
intercom_packet_t packet;
|
||||
uint8_t data[sizeof(intercom_packet_t)];
|
||||
} intercom_packet;
|
||||
|
||||
extern intercom_packet tx;
|
||||
extern intercom_packet rx;
|
||||
|
||||
// initialise serial subsystem
|
||||
void intercom_init(void);
|
||||
|
||||
|
|
@ -47,4 +75,6 @@ void start_send(void);
|
|||
#define FLAG_TX_FINISHED 8
|
||||
extern volatile uint8_t intercom_flags;
|
||||
|
||||
|
||||
|
||||
#endif /* _INTERCOM_H */
|
||||
|
|
|
|||
Loading…
Reference in New Issue