11,34 → 11,34 |
// FromMainQueueToLow: Writer is main(), Reader is a low priority interrupt |
// FromMainQueueToHigh: Writer is main(), Reader is a high priority interrupt |
|
//#pragma udata msgqueue1_1 |
//static msg MQ_ToMainFromLow_1; |
//#pragma udata msgqueue1_2 |
//static msg MQ_ToMainFromLow_2; |
#pragma udata msgqueue1_1 |
static msg MQ_ToMainFromLow_1; |
#pragma udata msgqueue1_2 |
static msg MQ_ToMainFromLow_2; |
|
#pragma udata msgqueue2_1 |
static msg MQ_ToMainFromHigh_1; |
#pragma udata msgqueue2_2 |
static msg MQ_ToMainFromHigh_2; |
#pragma udata msgqueue2_3 |
static msg MQ_ToMainFromHigh_3; |
//#pragma udata msgqueue2_3 |
//static msg MQ_ToMainFromHigh_3; |
|
//#pragma udata msgqueue3_1 |
//static msg MQ_FromMainToLow_1; |
//#pragma udata msgqueue3_2 |
//static msg MQ_FromMainToLow_2; |
#pragma udata msgqueue3_1 |
static msg MQ_FromMainToLow_1; |
#pragma udata msgqueue3_2 |
static msg MQ_FromMainToLow_2; |
|
#pragma udata msgqueue4_1 |
static msg MQ_FromMainToHigh_1; |
#pragma udata msgqueue4_2 |
static msg MQ_FromMainToHigh_2; |
#pragma udata msgqueue4_3 |
static msg MQ_FromMainToHigh_3; |
//#pragma udata msgqueue4_3 |
//static msg MQ_FromMainToHigh_3; |
|
#pragma udata |
//static msg_queue MQ_ToMainFromLow; |
static msg_queue MQ_ToMainFromLow; |
static msg_queue MQ_ToMainFromHigh; |
//static msg_queue MQ_FromMainToLow; |
static msg_queue MQ_FromMainToLow; |
static msg_queue MQ_FromMainToHigh; |
|
static unsigned char MQ_Main_Willing_To_Block; |
56,23 → 56,23 |
void MQ_init() { |
MQ_Main_Willing_To_Block = 0; |
|
// MQ_ToMainFromLow.queue[0] = &MQ_ToMainFromLow_1; |
// MQ_ToMainFromLow.queue[1] = &MQ_ToMainFromLow_2; |
MQ_ToMainFromLow.queue[0] = &MQ_ToMainFromLow_1; |
MQ_ToMainFromLow.queue[1] = &MQ_ToMainFromLow_2; |
|
MQ_ToMainFromHigh.queue[0] = &MQ_ToMainFromHigh_1; |
MQ_ToMainFromHigh.queue[1] = &MQ_ToMainFromHigh_2; |
MQ_ToMainFromHigh.queue[2] = &MQ_ToMainFromHigh_3; |
// MQ_ToMainFromHigh.queue[2] = &MQ_ToMainFromHigh_3; |
|
// MQ_FromMainToLow.queue[0] = &MQ_FromMainToLow_1; |
// MQ_FromMainToLow.queue[1] = &MQ_FromMainToLow_2; |
MQ_FromMainToLow.queue[0] = &MQ_FromMainToLow_1; |
MQ_FromMainToLow.queue[1] = &MQ_FromMainToLow_2; |
|
MQ_FromMainToHigh.queue[0] = &MQ_FromMainToHigh_1; |
MQ_FromMainToHigh.queue[1] = &MQ_FromMainToHigh_2; |
MQ_FromMainToHigh.queue[2] = &MQ_FromMainToHigh_3; |
// MQ_FromMainToHigh.queue[2] = &MQ_FromMainToHigh_3; |
|
// MQ_init_queue(&MQ_ToMainFromLow); |
MQ_init_queue(&MQ_ToMainFromLow); |
MQ_init_queue(&MQ_ToMainFromHigh); |
// MQ_init_queue(&MQ_FromMainToLow); |
MQ_init_queue(&MQ_FromMainToLow); |
MQ_init_queue(&MQ_FromMainToHigh); |
} |
|
191,29 → 191,29 |
_endasm |
} |
|
///* Message Queue 1 - Low Interrupt -> Main */ |
//signed char MQ_sendmsg_ToMainFromLow(unsigned char length, unsigned char msgtype, void *data) { |
//#ifdef DEBUG |
// if (!interrupt_in_low_interrupt_routine()) { |
// return (MSG_NOT_IN_LOW); |
// } |
//#endif |
// return (MQ_send_msg(&MQ_ToMainFromLow, length, msgtype, data)); |
//} |
// |
//signed char MQ_recvmsg_ToMainFromLow(unsigned char maxlength, unsigned char *msgtype, void *data) { |
//#ifdef DEBUG |
// if (!interrupt_in_main_routine()) { |
// return (MSG_NOT_IN_MAIN); |
// } |
//#endif |
// return (MQ_recv_msg(&MQ_ToMainFromLow, maxlength, msgtype, data)); |
//} |
// |
//unsigned char MQ_peek_ToMainFromLow() { |
// return (MQ_peek_msg(&MQ_ToMainFromLow)); |
//} |
/* Message Queue 1 - Low Interrupt -> Main */ |
signed char MQ_sendmsg_ToMainFromLow(unsigned char length, unsigned char msgtype, void *data) { |
#ifdef DEBUG |
if (!interrupt_in_low_interrupt_routine()) { |
return (MSG_NOT_IN_LOW); |
} |
#endif |
return (MQ_send_msg(&MQ_ToMainFromLow, length, msgtype, data)); |
} |
|
signed char MQ_recvmsg_ToMainFromLow(unsigned char maxlength, unsigned char *msgtype, void *data) { |
#ifdef DEBUG |
if (!interrupt_in_main_routine()) { |
return (MSG_NOT_IN_MAIN); |
} |
#endif |
return (MQ_recv_msg(&MQ_ToMainFromLow, maxlength, msgtype, data)); |
} |
|
unsigned char MQ_peek_ToMainFromLow() { |
return (MQ_peek_msg(&MQ_ToMainFromLow)); |
} |
|
/* Message Queue 2 - High Interrupt -> Main */ |
signed char MQ_sendmsg_ToMainFromHigh(unsigned char length, unsigned char msgtype, void *data) { |
#ifdef DEBUG |
237,29 → 237,29 |
return (MQ_peek_msg(&MQ_ToMainFromHigh)); |
} |
|
///* Message Queue 3 - Main -> Low Interrupt */ |
//signed char MQ_sendmsg_FromMainToLow(unsigned char length, unsigned char msgtype, void *data) { |
//#ifdef DEBUG |
// if (!interrupt_in_main_routine()) { |
// return (MSG_NOT_IN_MAIN); |
// } |
//#endif |
// return (MQ_send_msg(&MQ_FromMainToLow, length, msgtype, data)); |
//} |
// |
//signed char MQ_recvmsg_FromMainToLow(unsigned char maxlength, unsigned char *msgtype, void *data) { |
//#ifdef DEBUG |
// if (!interrupt_in_low_interrupt_routine()) { |
// return (MSG_NOT_IN_LOW); |
// } |
//#endif |
// return (MQ_recv_msg(&MQ_FromMainToLow, maxlength, msgtype, data)); |
//} |
// |
//unsigned char MQ_peek_FromMainToLow() { |
// return (MQ_peek_msg(&MQ_FromMainToLow)); |
//} |
/* Message Queue 3 - Main -> Low Interrupt */ |
signed char MQ_sendmsg_FromMainToLow(unsigned char length, unsigned char msgtype, void *data) { |
#ifdef DEBUG |
if (!interrupt_in_main_routine()) { |
return (MSG_NOT_IN_MAIN); |
} |
#endif |
return (MQ_send_msg(&MQ_FromMainToLow, length, msgtype, data)); |
} |
|
signed char MQ_recvmsg_FromMainToLow(unsigned char maxlength, unsigned char *msgtype, void *data) { |
#ifdef DEBUG |
if (!interrupt_in_low_interrupt_routine()) { |
return (MSG_NOT_IN_LOW); |
} |
#endif |
return (MQ_recv_msg(&MQ_FromMainToLow, maxlength, msgtype, data)); |
} |
|
unsigned char MQ_peek_FromMainToLow() { |
return (MQ_peek_msg(&MQ_FromMainToLow)); |
} |
|
/* Message Queue 4 - Main -> High Interrupt */ |
signed char MQ_sendmsg_FromMainToHigh(unsigned char length, unsigned char msgtype, void *data) { |
#ifdef DEBUG |
307,9 → 307,9 |
if (MQ_check_msg_queue_unread(&MQ_ToMainFromHigh)) { |
return; |
} |
// if (MQ_check_msg_queue_unread(&MQ_ToMainFromLow)) { |
// return; |
// } |
if (MQ_check_msg_queue_unread(&MQ_ToMainFromLow)) { |
return; |
} |
|
// If everything checks out, go to sleep |
MQ_enter_sleep_mode(); |
329,10 → 329,10 |
MQ_Main_Willing_To_Block = 0; |
return; |
} |
// if (MQ_check_msg_queue_unread(&MQ_ToMainFromLow)) { |
// MQ_Main_Willing_To_Block = 0; |
// return; |
// } |
if (MQ_check_msg_queue_unread(&MQ_ToMainFromLow)) { |
MQ_Main_Willing_To_Block = 0; |
return; |
} |
// Sleep for a period of time before checking again |
Delay1KTCYx(10); |
} |