Added a function to set the multiplexer input line.
This commit is contained in:
parent
46a5668818
commit
728e2af5bf
4 changed files with 98 additions and 0 deletions
|
@ -24,24 +24,28 @@
|
||||||
|
|
||||||
void cc_setBaudrate(void);
|
void cc_setBaudrate(void);
|
||||||
void cc_getBaudrate(void);
|
void cc_getBaudrate(void);
|
||||||
|
void cc_setMuxLine(void);
|
||||||
void cc_startBootloader(void);
|
void cc_startBootloader(void);
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define CC_CMD_SET_BAUDRATE 0x0A
|
#define CC_CMD_SET_BAUDRATE 0x0A
|
||||||
#define CC_CMD_GET_BAUDRATE 0x14
|
#define CC_CMD_GET_BAUDRATE 0x14
|
||||||
|
#define CC_CMD_SET_MUX_LINE 0x1E
|
||||||
#define CC_CMD_START_BTLDR 0x32
|
#define CC_CMD_START_BTLDR 0x32
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define CC_CMD_SET_BAUDRATE_FUNC &cc_setBaudrate
|
#define CC_CMD_SET_BAUDRATE_FUNC &cc_setBaudrate
|
||||||
#define CC_CMD_GET_BAUDRATE_FUNC &cc_getBaudrate
|
#define CC_CMD_GET_BAUDRATE_FUNC &cc_getBaudrate
|
||||||
|
#define CC_CMD_SET_MUX_LINE_FUNC &cc_setMuxLine
|
||||||
#define CC_CMD_START_BTLDR_FUNC &cc_startBootloader
|
#define CC_CMD_START_BTLDR_FUNC &cc_startBootloader
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
#define CC_CMD_SET_BAUDRATE_DATA_TO_READ 4 // set baudrate
|
#define CC_CMD_SET_BAUDRATE_DATA_TO_READ 4 // set baudrate
|
||||||
#define CC_CMD_GET_BAUDRATE_DATA_TO_READ 0 // get baudrate
|
#define CC_CMD_GET_BAUDRATE_DATA_TO_READ 0 // get baudrate
|
||||||
|
#define CC_CMD_SET_MUX_LINE_DATA_TO_READ 1 // set mux line
|
||||||
#define CC_CMD_START_BTLDR_DATA_TO_READ 0 // start bootloader
|
#define CC_CMD_START_BTLDR_DATA_TO_READ 0 // start bootloader
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
@ -53,18 +57,21 @@ void cc_startBootloader(void);
|
||||||
uint8_t cc_commands[] = {
|
uint8_t cc_commands[] = {
|
||||||
CC_CMD_SET_BAUDRATE,
|
CC_CMD_SET_BAUDRATE,
|
||||||
CC_CMD_GET_BAUDRATE,
|
CC_CMD_GET_BAUDRATE,
|
||||||
|
CC_CMD_SET_MUX_LINE,
|
||||||
CC_CMD_START_BTLDR,
|
CC_CMD_START_BTLDR,
|
||||||
};
|
};
|
||||||
|
|
||||||
void (*cc_cmd_functions[])() = {
|
void (*cc_cmd_functions[])() = {
|
||||||
CC_CMD_SET_BAUDRATE_FUNC,
|
CC_CMD_SET_BAUDRATE_FUNC,
|
||||||
CC_CMD_GET_BAUDRATE_FUNC,
|
CC_CMD_GET_BAUDRATE_FUNC,
|
||||||
|
CC_CMD_SET_MUX_LINE_FUNC,
|
||||||
CC_CMD_START_BTLDR_FUNC,
|
CC_CMD_START_BTLDR_FUNC,
|
||||||
};
|
};
|
||||||
|
|
||||||
uint8_t cc_cmd_data_to_read[] = {
|
uint8_t cc_cmd_data_to_read[] = {
|
||||||
CC_CMD_SET_BAUDRATE_DATA_TO_READ,
|
CC_CMD_SET_BAUDRATE_DATA_TO_READ,
|
||||||
CC_CMD_GET_BAUDRATE_DATA_TO_READ,
|
CC_CMD_GET_BAUDRATE_DATA_TO_READ,
|
||||||
|
CC_CMD_SET_MUX_LINE_DATA_TO_READ,
|
||||||
CC_CMD_START_BTLDR_DATA_TO_READ,
|
CC_CMD_START_BTLDR_DATA_TO_READ,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -60,3 +60,47 @@ void cc_startBootloader()
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
void cc_setMuxLine()
|
||||||
|
{
|
||||||
|
switch(cc_read_data[0])
|
||||||
|
{
|
||||||
|
case 0:;
|
||||||
|
EN_MUX_LINE0;
|
||||||
|
break;
|
||||||
|
case 1:;
|
||||||
|
EN_MUX_LINE1;
|
||||||
|
break;
|
||||||
|
case 2:;
|
||||||
|
EN_MUX_LINE2;
|
||||||
|
break;
|
||||||
|
case 3:;
|
||||||
|
EN_MUX_LINE3;
|
||||||
|
break;
|
||||||
|
case 4:;
|
||||||
|
EN_MUX_LINE4;
|
||||||
|
break;
|
||||||
|
case 5:;
|
||||||
|
EN_MUX_LINE5;
|
||||||
|
break;
|
||||||
|
case 6:;
|
||||||
|
EN_MUX_LINE6;
|
||||||
|
break;
|
||||||
|
case 7:;
|
||||||
|
EN_MUX_LINE7;
|
||||||
|
break;
|
||||||
|
default:;
|
||||||
|
EN_MUX_LINE0;
|
||||||
|
char* sBody = " ";
|
||||||
|
sprintf(sBody, "%c%c%c%c%c", MSG_SOM1, MSG_SOM2, MSG_TYPE_ANSWER_NOK, MSG_EOM1, MSG_EOM2);
|
||||||
|
USB_serialStreamWriteC(sBody, strlen(sBody));
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
char* sBody = " ";
|
||||||
|
sprintf(sBody, "%c%c%c%c%c", MSG_SOM1, MSG_SOM2, MSG_TYPE_ANSWER_OK, MSG_EOM1, MSG_EOM2);
|
||||||
|
USB_serialStreamWriteC(sBody, strlen(sBody));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
|
|
@ -11,5 +11,47 @@
|
||||||
#define MSG_TYPE_ANSWER_NOK 0x02
|
#define MSG_TYPE_ANSWER_NOK 0x02
|
||||||
#define MSG_TYPE_BAUDRATE 0x03
|
#define MSG_TYPE_BAUDRATE 0x03
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
#define EN_MUX_LINE0 \
|
||||||
|
PORTB &= ~(1 << PIN4); \
|
||||||
|
PORTB &= ~(1 << PIN5); \
|
||||||
|
PORTB &= ~(1 << PIN6); \
|
||||||
|
|
||||||
|
#define EN_MUX_LINE1 \
|
||||||
|
PORTB &= ~(1 << PIN4); \
|
||||||
|
PORTB &= ~(1 << PIN5); \
|
||||||
|
PORTB |= (1 << PIN6); \
|
||||||
|
|
||||||
|
#define EN_MUX_LINE2 \
|
||||||
|
PORTB &= ~(1 << PIN4); \
|
||||||
|
PORTB |= (1 << PIN5); \
|
||||||
|
PORTB &= ~(1 << PIN6); \
|
||||||
|
|
||||||
|
#define EN_MUX_LINE3 \
|
||||||
|
PORTB &= ~(1 << PIN4); \
|
||||||
|
PORTB |= (1 << PIN5); \
|
||||||
|
PORTB |= (1 << PIN6); \
|
||||||
|
|
||||||
|
#define EN_MUX_LINE4 \
|
||||||
|
PORTB |= (1 << PIN4); \
|
||||||
|
PORTB &= ~(1 << PIN5); \
|
||||||
|
PORTB &= ~(1 << PIN6); \
|
||||||
|
|
||||||
|
#define EN_MUX_LINE5 \
|
||||||
|
PORTB |= (1 << PIN4); \
|
||||||
|
PORTB &= ~(1 << PIN5); \
|
||||||
|
PORTB |= (1 << PIN6); \
|
||||||
|
|
||||||
|
#define EN_MUX_LINE6 \
|
||||||
|
PORTB |= (1 << PIN4); \
|
||||||
|
PORTB |= (1 << PIN5); \
|
||||||
|
PORTB &= ~(1 << PIN6); \
|
||||||
|
|
||||||
|
#define EN_MUX_LINE7 \
|
||||||
|
PORTB |= (1 << PIN4); \
|
||||||
|
PORTB |= (1 << PIN5); \
|
||||||
|
PORTB |= (1 << PIN6); \
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
|
|
@ -126,6 +126,11 @@ void SetupHardware(void)
|
||||||
PMIC.CTRL = PMIC_LOLVLEN_bm | PMIC_MEDLVLEN_bm | PMIC_HILVLEN_bm;
|
PMIC.CTRL = PMIC_LOLVLEN_bm | PMIC_MEDLVLEN_bm | PMIC_HILVLEN_bm;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// set the three MUX control lines to output
|
||||||
|
DDRB |= (1 << PIN4) | (1 << PIN5) | (1 << PIN6);
|
||||||
|
// set every pin to low
|
||||||
|
EN_MUX_LINE0;
|
||||||
|
|
||||||
/* UART Hardware Initialization */
|
/* UART Hardware Initialization */
|
||||||
uart_init( UART_BAUD_SELECT(baudrate, F_CPU) );
|
uart_init( UART_BAUD_SELECT(baudrate, F_CPU) );
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue