diff --git a/atsamd51j19/src/build_bootstrap.h b/atsamd51j19/src/build_bootstrap.h index 7d4683bb618eb22b242097bdbda69bd219d3c65c..f7356f0e4be31468feeb33734d5f51560311af28 100644 --- a/atsamd51j19/src/build_bootstrap.h +++ b/atsamd51j19/src/build_bootstrap.h @@ -181,18 +181,10 @@ Hunk* allocateHunkByType(String type){ if(type == "pins/pa12_output"){ ret = new PA12_Output(); } - #ifdef BUILD_INCLUDES_HUNK_STEPPER - hunklist[hlc++] = "driver/stepper"; - if (type == "driver/stepper"){ - ret = new Stepper(); - } - #endif - #ifdef BUILD_INCLUDES_HUNK_COBSERIALA - hunklist[hlc++] = "comm/COBSerial_A"; - if (type == "comm/COBSerial_A") { - ret = new COBSerial_A(); - } - #endif + hunklist[hlc++] = "comm/COBSerial_A"; + if (type == "comm/COBSerial_A") { + ret = new COBSerial_A(); + } #ifdef BUILD_INCLUDES_HUNK_COBSERIALB hunklist[hlc++] = "comm/COBSerial_B"; if (type == "comm/COBSerial_B"){ @@ -223,6 +215,12 @@ Hunk* allocateHunkByType(String type){ ret = new COBSerial_F(); } #endif + #ifdef BUILD_INCLUDES_HUNK_STEPPER + hunklist[hlc++] = "driver/stepper"; + if (type == "driver/stepper"){ + ret = new Stepper(); + } + #endif #ifdef BUILD_INCLUDES_HUNK_DRIVER_SPI_TLC5940 hunklist[hlc++] = "driver/spi_tlc5940"; if (type == "driver/spi_tlc5940"){ diff --git a/atsamd51j19/src/build_list.h b/atsamd51j19/src/build_list.h index 6c13181ad43e2d85b064acea200d472982a74547..7baef03757a4ab0558f51d62c65cdc52e455de70 100644 --- a/atsamd51j19/src/build_list.h +++ b/atsamd51j19/src/build_list.h @@ -33,23 +33,16 @@ this should be where we go to configure a system, #define USE_DEBUGPIN_A #define USE_DEBUGPIN_B -// doth it use the module? -#define IS_MODULE_V01 -#ifdef IS_MODULE_V01 - #define BUILD_INCLUDES_HUNK_COBSERIALA -#endif - // START: do bootstrap steppers -> connected, ok // then bootstrap router -> ok, hello all three, // now try stepping ... where borked ? #define BOOT_USB // pick 'yer board -//#define BOARD_IS_BASIC //#define BOARD_IS_STEPPER #define BOARD_IS_ROUTER -//#define BOARD_IS_DLPCORE //#define BOARD_IS_SPINDLE +//#define BOARD_IS_DLPCORE #ifdef BOARD_IS_STEPPER #define BUILD_INCLUDES_HUNK_STEPPER @@ -57,15 +50,11 @@ this should be where we go to configure a system, #endif #ifdef BOARD_IS_ROUTER - // it ain't - #undef IS_MODULE_V01 - #define BUILD_INCLUDES_HUNK_COBSERIALA // ok #define BUILD_INCLUDES_HUNK_COBSERIALB // ok #define BUILD_INCLUDES_HUNK_COBSERIALC // ok #define BUILD_INCLUDES_HUNK_COBSERIALD // ok #define BUILD_INCLUDES_HUNK_COBSERIALE // ok #define BUILD_INCLUDES_HUNK_COBSERIALF // ok - // also #define BUILD_INCLUDES_HUNK_MDTODMSEG #endif diff --git a/atsamd51j19/src/debugpins.h b/atsamd51j19/src/debugpins.h index 14d019535ec73146f6f7e1e04343134b3aedac0b..bfd490ff1f099796ee484487e674bc2353271e2f 100644 --- a/atsamd51j19/src/debugpins.h +++ b/atsamd51j19/src/debugpins.h @@ -1,7 +1,7 @@ /* debugpins.h -low level interface to debug outputs +low level interface to debug outputs Jake Read at the Center for Bits and Atoms (c) Massachusetts Institute of Technology 2019 @@ -41,19 +41,10 @@ no warranty is provided, and users accept all liability. // ---------------------- BASEBOARD ---------------------- // // ------------------------------------------------------- // -#ifdef IS_MODULE_V01 - #define CLKLIGHT_PIN 30 - #define CLKLIGHT_PORT PORT->Group[1] - #define ERRLIGHT_PIN 27 - #define ERRLIGHT_PORT PORT->Group[0] -#elif defined(BOARD_IS_ROUTER) - #define CLKLIGHT_PIN 21 - #define CLKLIGHT_PORT PORT->Group[0] - #define ERRLIGHT_PIN 23 - #define ERRLIGHT_PORT PORT->Group[1] -#else - #error which board is this? -#endif +#define CLKLIGHT_PIN 30 +#define CLKLIGHT_PORT PORT->Group[1] +#define ERRLIGHT_PIN 27 +#define ERRLIGHT_PORT PORT->Group[0] #define CLKLIGHT_BM (uint32_t)(1 << CLKLIGHT_PIN) #define CLKLIGHT_SETUP CLKLIGHT_PORT.DIRSET.reg = CLKLIGHT_BM diff --git a/atsamd51j19/src/hunks/comm/hunk_cobserial.cpp b/atsamd51j19/src/hunks/comm/hunk_cobserial.cpp index fe374c711e3c0d10b743fe2ffef2c5f49cf302bc..a76321231dc454abfe769d4d35fe65e82ece1aac 100644 --- a/atsamd51j19/src/hunks/comm/hunk_cobserial.cpp +++ b/atsamd51j19/src/hunks/comm/hunk_cobserial.cpp @@ -18,13 +18,13 @@ no warranty is provided, and users accept all liability. // for the uartport example from earlier work, // https://gitlab.cba.mit.edu/jakeread/atkstepper17/tree/master/embedded/mkstepper17 -#define SET_TXLIGHT_ON light_tx_port->OUTCLR.reg = light_tx_bm -#define SET_TXLIGHT_OFF light_tx_timesince = 0 -#define WRITE_TXLIGHT_OFF light_tx_port->OUTSET.reg = light_tx_bm +#define SET_LIGHT_ON light_port->OUTCLR.reg = light_bm +#define WRITE_LIGHT_OFF light_port->OUTSET.reg = light_bm -#define SET_RXLIGHT_ON light_rx_port->OUTCLR.reg = light_rx_bm -#define SET_RXLIGHT_OFF light_rx_timesince = 0 -#define WRITE_RXLIGHT_OFF light_rx_port->OUTSET.reg = light_rx_bm +#define SET_TXLIGHT_ON SET_LIGHT_ON +#define SET_TXLIGHT_OFF light_timesince_tx = 0 +#define SET_RXLIGHT_ON SET_LIGHT_ON +#define SET_RXLIGHT_OFF light_timesince_rx = 0 COBSerial::COBSerial(){ // children do this... @@ -32,12 +32,14 @@ COBSerial::COBSerial(){ void COBSerial::init(void){ // not the most important, but lights are first: - light_tx_bm = 1 << light_tx_pin; - light_rx_bm = 1 << light_rx_pin; - light_tx_port->DIRSET.reg = light_tx_bm; - light_tx_port->OUTSET.reg = light_tx_bm; - light_rx_port->DIRSET.reg = light_rx_bm; - light_rx_port->OUTSET.reg = light_rx_bm; + light_bm = 1 << light_pin; + te_bm = 1 << te_pin; + // turn the light *off* + light_port->DIRSET.reg = light_bm; + light_port->OUTSET.reg = light_bm; + // for now, all point to point, enable the termination resistor + te_port->DIRSET.reg = te_bm; + te_port->OUTSET.reg = te_bm; // our local business 1st, for(uint8_t i = 0; i < HCBSRJ45_NETBUFF_NUM; i ++){ netBufLen_[i] = 0; @@ -107,23 +109,14 @@ if the byte is a zero, that's a packet, memcpy that to ... an mmd ? void COBSerial::loop(void){ // turn off like apres 100 loops ? we have LOOP_TICKS_PER_BLINK - is in sys toplevel - if(light_tx_timesince > LOOP_TICKS_PER_BLINK){ + if((light_timesince_tx > LOOP_TICKS_PER_BLINK) && (light_timesince_rx > LOOP_TICKS_PER_BLINK)){ // noop } else { - light_tx_timesince ++; + light_timesince_tx ++; + light_timesince_rx ++; // catch on transitions, - if(light_tx_timesince > LOOP_TICKS_PER_BLINK) { - WRITE_TXLIGHT_OFF; - } - } - - if(light_rx_timesince > LOOP_TICKS_PER_BLINK){ - // noop - } else { - light_rx_timesince ++; - // catch on transitions, - if(light_rx_timesince > LOOP_TICKS_PER_BLINK) { - WRITE_RXLIGHT_OFF; + if((light_timesince_tx > LOOP_TICKS_PER_BLINK) && (light_timesince_rx > LOOP_TICKS_PER_BLINK)) { + WRITE_LIGHT_OFF; } } diff --git a/atsamd51j19/src/hunks/comm/hunk_cobserial.h b/atsamd51j19/src/hunks/comm/hunk_cobserial.h index a4375952eff53dea58af536a40fe6903f6f9e478..4e7eab829574f69b2f93738cbfe6ce9fbf0d08a6 100644 --- a/atsamd51j19/src/hunks/comm/hunk_cobserial.h +++ b/atsamd51j19/src/hunks/comm/hunk_cobserial.h @@ -59,18 +59,18 @@ public: // clock bs uint32_t gclknum_pick; uint32_t gclkid_core; - - uint32_t light_tx_timesince = LOOP_TICKS_PER_BLINK + 1; - uint32_t light_tx_pin = 4; - uint32_t light_tx_bm; - PortGroup* light_tx_port = &(PORT->Group[1]); - uint16_t light_tx_time = LOOP_TICKS_PER_BLINK; - - uint32_t light_rx_timesince = LOOP_TICKS_PER_BLINK + 1; - uint32_t light_rx_pin = 4; - uint32_t light_rx_bm; - PortGroup* light_rx_port = &(PORT->Group[1]); - boolean light_rx_off = false; + // status light: track time since TX and RX events, + uint32_t light_timesince_tx = LOOP_TICKS_PER_BLINK + 1; + uint32_t light_timesince_rx = LOOP_TICKS_PER_BLINK + 1; + // actuate one LED ... + uint32_t light_pin = 4; + uint32_t light_bm; + PortGroup* light_port = &(PORT->Group[1]); + uint16_t light_time = LOOP_TICKS_PER_BLINK; + // termination enable, sometimes software defined (for busses) + uint32_t te_pin = 4; + uint32_t te_bm; + PortGroup* te_port = &(PORT->Group[1]); // we keep contiguous chunks of 1kb, uint8_t netBuf_[HCBSRJ45_NETBUFF_NUM][HCBSRJ45_NETBUFF_PAD]; uint16_t netBufLen_[HCBSRJ45_NETBUFF_NUM]; diff --git a/atsamd51j19/src/hunks/comm/hunk_cobserial_a.cpp b/atsamd51j19/src/hunks/comm/hunk_cobserial_a.cpp index 986841675390f4d500f3288ea0bc8cd61b4b5886..dfb2b897d314fbae9dcb3df334f2b0fe54249135 100644 --- a/atsamd51j19/src/hunks/comm/hunk_cobserial_a.cpp +++ b/atsamd51j19/src/hunks/comm/hunk_cobserial_a.cpp @@ -11,38 +11,21 @@ no warranty is provided, and users accept all liability. */ #include "hunk_cobserial_a.h" - -#ifdef BUILD_INCLUDES_HUNK_COBSERIALA - #include "isrcpp.h" // TX: PA22, SER3-0 or SER5-1.. tx is always on -0, so 3-0, peripheral C // RX: PA20, SER3-2 or SER5-2.. rx can go anywhere, so its 3-2, peripheral D -#ifdef IS_MODULE_V01 - #define COBA_SERCOM SERCOM1 - #define COBA_SERCOM_CLK SERCOM1_GCLK_ID_CORE - #define COBA_COMPORT PORT->Group[0] - #define COBA_TXPIN 16 - #define COBA_RXPIN 18 - #define COBA_TXPERIPHERAL PERIPHERAL_C - #define COBA_RXPERIPHERAL PERIPHERAL_C - #define COBA_LIGHT_TX_PIN 19 // TX: green - #define COBA_LIGHT_TX_PORT PORT->Group[0] - #define COBA_LIGHT_RX_PIN 17 // RX: yellow - #define COBA_LIGHT_RX_PORT PORT->Group[0] -#else - #define COBA_SERCOM SERCOM3 - #define COBA_SERCOM_CLK SERCOM3_GCLK_ID_CORE - #define COBA_COMPORT PORT->Group[0] - #define COBA_TXPIN 22 - #define COBA_RXPIN 20 - #define COBA_TXPERIPHERAL PERIPHERAL_C - #define COBA_RXPERIPHERAL PERIPHERAL_D - #define COBA_LIGHT_TX_PIN 7 - #define COBA_LIGHT_TX_PORT PORT->Group[1] - #define COBA_LIGHT_RX_PIN 6 - #define COBA_LIGHT_RX_PORT PORT->Group[1] -#endif +#define COBA_SERCOM SERCOM1 +#define COBA_SERCOM_CLK SERCOM1_GCLK_ID_CORE +#define COBA_COMPORT PORT->Group[0] +#define COBA_TXPIN 16 // x-0 +#define COBA_RXPIN 18 // x-2 +#define COBA_TXPERIPHERAL PERIPHERAL_C +#define COBA_RXPERIPHERAL PERIPHERAL_C +#define COBA_LIGHT_PIN 19 // status, x-3 +#define COBA_LIGHT_PORT PORT->Group[0] +#define COBA_TE_PIN 17 // TE, x-1 +#define COBA_TE_PORT PORT->Group[0] COBSerial_A::COBSerial_A(){ // hunk stuff, @@ -63,34 +46,19 @@ COBSerial_A::COBSerial_A(){ gclknum_pick = 7; gclkid_core = COBA_SERCOM_CLK; // lights - light_tx_pin = COBA_LIGHT_TX_PIN; // green (good to go!) - light_tx_port = &(COBA_LIGHT_TX_PORT); - light_rx_pin = COBA_LIGHT_RX_PIN; // yellow (pls catch!) - light_rx_port = &(COBA_LIGHT_RX_PORT); + light_pin = COBA_LIGHT_PIN; // status + light_port = &(COBA_LIGHT_PORT); + te_pin = COBA_TE_PIN; // termination resitor en/disable + te_port = &(COBA_TE_PORT); } void COBSerial_A::register_for_interrupts(void){ - #ifdef IS_MODULE_V01 isrcpp->register_for_ser1_rx(indice_, HUNK_HANDLER_A); isrcpp->register_for_ser1_tx(indice_, HUNK_HANDLER_B); NVIC_EnableIRQ(SERCOM1_2_IRQn); NVIC_EnableIRQ(SERCOM1_0_IRQn); - #else - // sys -> interrupts - isrcpp->register_for_ser3_rx(indice_, HUNK_HANDLER_A); - isrcpp->register_for_ser3_tx(indice_, HUNK_HANDLER_B); - // and, - NVIC_EnableIRQ(SERCOM3_2_IRQn); - NVIC_EnableIRQ(SERCOM3_0_IRQn); - #endif } void COBSerial_A::unmask_clocks(void){ - #ifdef IS_MODULE_V01 MCLK->APBAMASK.bit.SERCOM1_ = 1; - #else - MCLK->APBBMASK.bit.SERCOM3_ = 1; - #endif } - -#endif diff --git a/atsamd51j19/src/hunks/comm/hunk_cobserial_a.h b/atsamd51j19/src/hunks/comm/hunk_cobserial_a.h index 3d728b9c080a4726674935f213a7b7374621729a..36518398689d14b49663da7fdd31c46c13253c2e 100644 --- a/atsamd51j19/src/hunks/comm/hunk_cobserial_a.h +++ b/atsamd51j19/src/hunks/comm/hunk_cobserial_a.h @@ -14,9 +14,6 @@ no warranty is provided, and users accept all liability. #define HUNK_COBSERIALRJ45_A_H_ #include "build_list.h" - -#ifdef BUILD_INCLUDES_HUNK_COBSERIALA - #include "hunk_cobserial.h" class COBSerial_A : public COBSerial { @@ -31,4 +28,3 @@ public: }; #endif -#endif diff --git a/atsamd51j19/src/hunks/comm/hunk_cobserial_b.cpp b/atsamd51j19/src/hunks/comm/hunk_cobserial_b.cpp index 72ec344b4c28e8aca270f14e9d8b1656791fa35c..8662984043eeb046dba44078e63d0766f54f7a68 100644 --- a/atsamd51j19/src/hunks/comm/hunk_cobserial_b.cpp +++ b/atsamd51j19/src/hunks/comm/hunk_cobserial_b.cpp @@ -16,17 +16,18 @@ no warranty is provided, and users accept all liability. #include "isrcpp.h" -#define COBB_SERCOM SERCOM4 -#define COBB_SERCOM_CLK SERCOM4_GCLK_ID_CORE -#define COBB_COMPORT PORT->Group[1] -#define COBB_TXPIN 12 -#define COBB_RXPIN 14 -#define COBB_TXPERIPHERAL PERIPHERAL_C -#define COBB_RXPERIPHERAL PERIPHERAL_C -#define COBB_LIGHT_TX_PIN 4 // TX: green -#define COBB_LIGHT_TX_PORT PORT->Group[0] -#define COBB_LIGHT_RX_PIN 9 // RX: yellow -#define COBB_LIGHT_RX_PORT PORT->Group[1] +// B: SER3 PA20 - +#define COBB_SERCOM SERCOM3 +#define COBB_SERCOM_CLK SERCOM3_GCLK_ID_CORE +#define COBB_COMPORT PORT->Group[0] +#define COBB_TXPIN 22 // x-0 +#define COBB_RXPIN 20 // x-2 +#define COBB_TXPERIPHERAL PERIPHERAL_D +#define COBB_RXPERIPHERAL PERIPHERAL_D +#define COBB_LIGHT_PIN 21 // x-3 +#define COBB_LIGHT_PORT PORT->Group[0] +#define COBB_TE_PIN 23 // x-1 +#define COBB_TE_PORT PORT->Group[0] COBSerial_B::COBSerial_B(){ // hunk stuff, @@ -47,21 +48,21 @@ COBSerial_B::COBSerial_B(){ gclknum_pick = 8; gclkid_core = COBB_SERCOM_CLK; // lights - light_tx_pin = COBB_LIGHT_TX_PIN; // green (good to go!) - light_tx_port = &(COBB_LIGHT_TX_PORT); - light_rx_pin = COBB_LIGHT_RX_PIN; // yellow (pls catch!) - light_rx_port = &(COBB_LIGHT_RX_PORT); + light_pin = COBB_LIGHT_PIN; // green (good to go!) + light_port = &(COBB_LIGHT_PORT); + te_pin = COBB_TE_PIN; // yellow (pls catch!) + te_port = &(COBB_TE_PORT); } void COBSerial_B::register_for_interrupts(void){ - isrcpp->register_for_ser4_rx(indice_, HUNK_HANDLER_A); - isrcpp->register_for_ser4_tx(indice_, HUNK_HANDLER_B); - NVIC_EnableIRQ(SERCOM4_2_IRQn); - NVIC_EnableIRQ(SERCOM4_0_IRQn); + isrcpp->register_for_ser3_rx(indice_, HUNK_HANDLER_A); + isrcpp->register_for_ser3_tx(indice_, HUNK_HANDLER_B); + NVIC_EnableIRQ(SERCOM3_2_IRQn); + NVIC_EnableIRQ(SERCOM3_0_IRQn); } void COBSerial_B::unmask_clocks(void){ - MCLK->APBDMASK.bit.SERCOM4_ = 1; + MCLK->APBBMASK.bit.SERCOM3_ = 1; } #endif @@ -89,10 +90,10 @@ COBSerial_B::COBSerial_B(){ gclknum_pick = 8; gclkid_core = SERCOM4_GCLK_ID_CORE; // lights - light_tx_pin = 4; // green (good to go!) - light_tx_port = &(PORT->Group[0]); - light_rx_pin = 9; // yellow (pls catch!) - light_rx_port = &(PORT->Group[1]); + light_pin = 4; // green (good to go!) + light_port = &(PORT->Group[0]); + te_pin = 9; // yellow (pls catch!) + te_port = &(PORT->Group[1]); } void COBSerial_B::register_for_interrupts(void){ diff --git a/atsamd51j19/src/hunks/comm/hunk_cobserial_c.cpp b/atsamd51j19/src/hunks/comm/hunk_cobserial_c.cpp index aa6d7ec386eb9ac48a92c4ec909640ba6b1da752..b44d3bd3587f8bdff09fa4ed0f0c688530aea818 100644 --- a/atsamd51j19/src/hunks/comm/hunk_cobserial_c.cpp +++ b/atsamd51j19/src/hunks/comm/hunk_cobserial_c.cpp @@ -16,17 +16,18 @@ no warranty is provided, and users accept all liability. #include "isrcpp.h" -#define COBC_SERCOM SERCOM0 -#define COBC_SERCOM_CLK SERCOM0_GCLK_ID_CORE +//C: SER2 PA08 - +#define COBC_SERCOM SERCOM2 +#define COBC_SERCOM_CLK SERCOM2_GCLK_ID_CORE #define COBC_COMPORT PORT->Group[0] -#define COBC_TXPIN 8 -#define COBC_RXPIN 10 -#define COBC_TXPERIPHERAL PERIPHERAL_C -#define COBC_RXPERIPHERAL PERIPHERAL_C -#define COBC_LIGHT_TX_PIN 6 // TX: green -#define COBC_LIGHT_TX_PORT PORT->Group[0] -#define COBC_LIGHT_RX_PIN 5 // RX: yellow -#define COBC_LIGHT_RX_PORT PORT->Group[0] +#define COBC_TXPIN 9 // x-0 +#define COBC_RXPIN 10 // x-2 +#define COBC_TXPERIPHERAL PERIPHERAL_D +#define COBC_RXPERIPHERAL PERIPHERAL_D +#define COBC_LIGHT_PIN 11 // x-3 +#define COBC_LIGHT_PORT PORT->Group[0] +#define COBC_TE_PIN 8 // x-1 +#define COBC_TE_PORT PORT->Group[0] COBSerial_C::COBSerial_C(){ // hunk stuff, @@ -47,21 +48,21 @@ COBSerial_C::COBSerial_C(){ gclknum_pick = 8; gclkid_core = COBC_SERCOM_CLK; // lights - light_tx_pin = COBC_LIGHT_TX_PIN; // green (good to go!) - light_tx_port = &(COBC_LIGHT_TX_PORT); - light_rx_pin = COBC_LIGHT_RX_PIN; // yellow (pls catch!) - light_rx_port = &(COBC_LIGHT_RX_PORT); + light_pin = COBC_LIGHT_PIN; // green (good to go!) + light_port = &(COBC_LIGHT_PORT); + te_pin = COBC_TE_PIN; // yellow (pls catch!) + te_port = &(COBC_TE_PORT); } void COBSerial_C::register_for_interrupts(void){ - isrcpp->register_for_ser0_rx(indice_, HUNK_HANDLER_A); - isrcpp->register_for_ser0_tx(indice_, HUNK_HANDLER_B); - NVIC_EnableIRQ(SERCOM0_2_IRQn); - NVIC_EnableIRQ(SERCOM0_0_IRQn); + isrcpp->register_for_ser2_rx(indice_, HUNK_HANDLER_A); + isrcpp->register_for_ser2_tx(indice_, HUNK_HANDLER_B); + NVIC_EnableIRQ(SERCOM2_2_IRQn); + NVIC_EnableIRQ(SERCOM2_0_IRQn); } void COBSerial_C::unmask_clocks(void){ - MCLK->APBAMASK.bit.SERCOM0_ = 1; + MCLK->APBBMASK.bit.SERCOM2_ = 1; } #endif @@ -90,10 +91,10 @@ COBSerial_C::COBSerial_C(){ gclknum_pick = 9; gclkid_core = SERCOM0_GCLK_ID_CORE; // lights - light_tx_pin = 6; // green (good to go!) - light_tx_port = &(PORT->Group[0]); - light_rx_pin = 5; // yellow (pls catch!) - light_rx_port = &(PORT->Group[0]); + light_pin = 6; // green (good to go!) + light_port = &(PORT->Group[0]); + te_pin = 5; // yellow (pls catch!) + te_port = &(PORT->Group[0]); } void COBSerial_C::register_for_interrupts(void){ diff --git a/atsamd51j19/src/hunks/comm/hunk_cobserial_d.cpp b/atsamd51j19/src/hunks/comm/hunk_cobserial_d.cpp index 12dbc027fd0146e94fe5c035d873dfa116afe604..48e11684c46e6fc675e6fa9935707b61edafe9ad 100644 --- a/atsamd51j19/src/hunks/comm/hunk_cobserial_d.cpp +++ b/atsamd51j19/src/hunks/comm/hunk_cobserial_d.cpp @@ -16,17 +16,18 @@ no warranty is provided, and users accept all liability. #include "isrcpp.h" -#define COBD_SERCOM SERCOM1 -#define COBD_SERCOM_CLK SERCOM1_GCLK_ID_CORE -#define COBD_COMPORT PORT->Group[0] -#define COBD_TXPIN 16 -#define COBD_RXPIN 18 +//D: SER4 PB12 - +#define COBD_SERCOM SERCOM4 +#define COBD_SERCOM_CLK SERCOM4_GCLK_ID_CORE +#define COBD_COMPORT PORT->Group[1] +#define COBD_TXPIN 12 +#define COBD_RXPIN 14 #define COBD_TXPERIPHERAL PERIPHERAL_C #define COBD_RXPERIPHERAL PERIPHERAL_C -#define COBD_LIGHT_TX_PIN 2 // TX: green -#define COBD_LIGHT_TX_PORT PORT->Group[0] -#define COBD_LIGHT_RX_PIN 3 // RX: yellow -#define COBD_LIGHT_RX_PORT PORT->Group[0] +#define COBD_LIGHT_PIN 4 // TX: green +#define COBD_LIGHT_PORT PORT->Group[1] +#define COBD_TE_PIN 9 // RX: yellow +#define COBD_TE_PORT PORT->Group[1] COBSerial_D::COBSerial_D(){ // hunk stuff, @@ -47,21 +48,21 @@ COBSerial_D::COBSerial_D(){ gclknum_pick = 8; gclkid_core = COBD_SERCOM_CLK; // lights - light_tx_pin = COBD_LIGHT_TX_PIN; // green (good to go!) - light_tx_port = &(COBD_LIGHT_TX_PORT); - light_rx_pin = COBD_LIGHT_RX_PIN; // yellow (pls catch!) - light_rx_port = &(COBD_LIGHT_RX_PORT); + light_pin = COBD_LIGHT_PIN; // green (good to go!) + light_port = &(COBD_LIGHT_PORT); + te_pin = COBD_TE_PIN; // yellow (pls catch!) + te_port = &(COBD_TE_PORT); } void COBSerial_D::register_for_interrupts(void){ - isrcpp->register_for_ser1_rx(indice_, HUNK_HANDLER_A); - isrcpp->register_for_ser1_tx(indice_, HUNK_HANDLER_B); - NVIC_EnableIRQ(SERCOM1_2_IRQn); - NVIC_EnableIRQ(SERCOM1_0_IRQn); + isrcpp->register_for_ser4_rx(indice_, HUNK_HANDLER_A); + isrcpp->register_for_ser4_tx(indice_, HUNK_HANDLER_B); + NVIC_EnableIRQ(SERCOM4_2_IRQn); + NVIC_EnableIRQ(SERCOM4_0_IRQn); } void COBSerial_D::unmask_clocks(void){ - MCLK->APBAMASK.bit.SERCOM1_ = 1; + MCLK->APBDMASK.bit.SERCOM4_ = 1; } #endif @@ -91,10 +92,10 @@ COBSerial_D::COBSerial_D(){ gclknum_pick = 10; gclkid_core = SERCOM1_GCLK_ID_CORE; // lights - light_tx_pin = 2; // green (good to go!) - light_tx_port = &(PORT->Group[0]); - light_rx_pin = 3; // yellow (pls catch!) - light_rx_port = &(PORT->Group[0]); + light_pin = 2; // green (good to go!) + light_port = &(PORT->Group[0]); + te_pin = 3; // yellow (pls catch!) + te_port = &(PORT->Group[0]); } void COBSerial_D::register_for_interrupts(void){ diff --git a/atsamd51j19/src/hunks/comm/hunk_cobserial_e.cpp b/atsamd51j19/src/hunks/comm/hunk_cobserial_e.cpp index ce387907d652c72f67003c4515074490c5344694..a71f9492376a7e78a57bd9fb2598e678fea4e549 100644 --- a/atsamd51j19/src/hunks/comm/hunk_cobserial_e.cpp +++ b/atsamd51j19/src/hunks/comm/hunk_cobserial_e.cpp @@ -16,17 +16,18 @@ no warranty is provided, and users accept all liability. #include "isrcpp.h" -#define COBE_SERCOM SERCOM5 -#define COBE_SERCOM_CLK SERCOM5_GCLK_ID_CORE -#define COBE_COMPORT PORT->Group[1] -#define COBE_TXPIN 2 -#define COBE_RXPIN 0 +//E: SER0 PA04 - +#define COBE_SERCOM SERCOM0 +#define COBE_SERCOM_CLK SERCOM0_GCLK_ID_CORE +#define COBE_COMPORT PORT->Group[0] +#define COBE_TXPIN 4 // x-0 +#define COBE_RXPIN 6 // x-2 #define COBE_TXPERIPHERAL PERIPHERAL_D #define COBE_RXPERIPHERAL PERIPHERAL_D -#define COBE_LIGHT_TX_PIN 5 // TX: green -#define COBE_LIGHT_TX_PORT PORT->Group[1] -#define COBE_LIGHT_RX_PIN 8 // RX: yellow -#define COBE_LIGHT_RX_PORT PORT->Group[1] +#define COBE_LIGHT_PIN 7 // x-3 +#define COBE_LIGHT_PORT PORT->Group[0] +#define COBE_TE_PIN 5 // x-1 +#define COBE_TE_PORT PORT->Group[0] COBSerial_E::COBSerial_E(){ // hunk stuff, @@ -47,21 +48,21 @@ COBSerial_E::COBSerial_E(){ gclknum_pick = 8; gclkid_core = COBE_SERCOM_CLK; // lights - light_tx_pin = COBE_LIGHT_TX_PIN; // green (good to go!) - light_tx_port = &(COBE_LIGHT_TX_PORT); - light_rx_pin = COBE_LIGHT_RX_PIN; // yellow (pls catch!) - light_rx_port = &(COBE_LIGHT_RX_PORT); + light_pin = COBE_LIGHT_PIN; // green (good to go!) + light_port = &(COBE_LIGHT_PORT); + te_pin = COBE_TE_PIN; // yellow (pls catch!) + te_port = &(COBE_TE_PORT); } void COBSerial_E::register_for_interrupts(void){ - isrcpp->register_for_ser5_rx(indice_, HUNK_HANDLER_A); - isrcpp->register_for_ser5_tx(indice_, HUNK_HANDLER_B); - NVIC_EnableIRQ(SERCOM5_2_IRQn); - NVIC_EnableIRQ(SERCOM5_0_IRQn); + isrcpp->register_for_ser0_rx(indice_, HUNK_HANDLER_A); + isrcpp->register_for_ser0_tx(indice_, HUNK_HANDLER_B); + NVIC_EnableIRQ(SERCOM0_2_IRQn); + NVIC_EnableIRQ(SERCOM0_0_IRQn); } void COBSerial_E::unmask_clocks(void){ - MCLK->APBDMASK.bit.SERCOM5_ = 1; + MCLK->APBAMASK.bit.SERCOM0_ = 1; } #endif @@ -91,10 +92,10 @@ COBSerial_E::COBSerial_E(){ gclknum_pick = 11; gclkid_core = SERCOM5_GCLK_ID_CORE; // lights - light_tx_pin = 8; // green (good to go!) - light_tx_port = &(PORT->Group[1]); - light_rx_pin = 5; // yellow (pls catch!) - light_rx_port = &(PORT->Group[1]); + light_pin = 8; // green (good to go!) + light_port = &(PORT->Group[1]); + te_pin = 5; // yellow (pls catch!) + te_port = &(PORT->Group[1]); } void COBSerial_E::register_for_interrupts(void){ diff --git a/atsamd51j19/src/hunks/comm/hunk_cobserial_f.cpp b/atsamd51j19/src/hunks/comm/hunk_cobserial_f.cpp index 0fbc3cf936c88296709268bbcacee6b11649f983..08551af72d50ca249a98a6346f6282babb58136c 100644 --- a/atsamd51j19/src/hunks/comm/hunk_cobserial_f.cpp +++ b/atsamd51j19/src/hunks/comm/hunk_cobserial_f.cpp @@ -16,18 +16,18 @@ no warranty is provided, and users accept all liability. #include "isrcpp.h" -#define COBF_SERCOM SERCOM2 -#define COBF_SERCOM_CLK SERCOM2_GCLK_ID_CORE -#define COBF_COMPORT PORT->Group[0] -#define COBF_TXPIN 12 -#define COBF_RXPIN 13 // the router's F-port puts RX on pad-1, not pad-2 as usual, -#define COBF_RXPO 1 -#define COBF_TXPERIPHERAL PERIPHERAL_C -#define COBF_RXPERIPHERAL PERIPHERAL_C -#define COBF_LIGHT_TX_PIN 9 // TX: green -#define COBF_LIGHT_TX_PORT PORT->Group[0] -#define COBF_LIGHT_RX_PIN 11 // RX: yellow -#define COBF_LIGHT_RX_PORT PORT->Group[0] +//E: SER5 PB00 - +#define COBF_SERCOM SERCOM5 +#define COBF_SERCOM_CLK SERCOM5_GCLK_ID_CORE +#define COBF_COMPORT PORT->Group[1] +#define COBF_TXPIN 2 // x-0 +#define COBF_RXPIN 0 // x-2 +#define COBF_TXPERIPHERAL PERIPHERAL_D +#define COBF_RXPERIPHERAL PERIPHERAL_D +#define COBF_LIGHT_PIN 1 // x-3 +#define COBF_LIGHT_PORT PORT->Group[1] +#define COBF_TE_PIN 3 // x-1 +#define COBF_TE_PORT PORT->Group[1] COBSerial_F::COBSerial_F(){ // hunk stuff, @@ -43,28 +43,27 @@ COBSerial_F::COBSerial_F(){ com_tx_pin = COBF_TXPIN; com_tx_peripheral = COBF_TXPERIPHERAL; com_rx_pin = COBF_RXPIN; - com_rx_po = COBF_RXPO; com_rx_peripheral = COBF_RXPERIPHERAL; // and gclknum_pick = 9; gclkid_core = COBF_SERCOM_CLK; // lights - light_tx_pin = COBF_LIGHT_TX_PIN; // green (good to go!) - light_tx_port = &(COBF_LIGHT_TX_PORT); - light_rx_pin = COBF_LIGHT_RX_PIN; // yellow (pls catch!) - light_rx_port = &(COBF_LIGHT_RX_PORT); + light_pin = COBF_LIGHT_PIN; // green (good to go!) + light_port = &(COBF_LIGHT_PORT); + te_pin = COBF_TE_PIN; // yellow (pls catch!) + te_port = &(COBF_TE_PORT); } void COBSerial_F::register_for_interrupts(void){ // are interrupts pin-registered ? - isrcpp->register_for_ser2_rx(indice_, HUNK_HANDLER_A); //_on_one - isrcpp->register_for_ser2_tx(indice_, HUNK_HANDLER_B); - NVIC_EnableIRQ(SERCOM2_2_IRQn); - NVIC_EnableIRQ(SERCOM2_0_IRQn); + isrcpp->register_for_ser5_rx(indice_, HUNK_HANDLER_A); //_on_one + isrcpp->register_for_ser5_tx(indice_, HUNK_HANDLER_B); + NVIC_EnableIRQ(SERCOM5_2_IRQn); + NVIC_EnableIRQ(SERCOM5_0_IRQn); } void COBSerial_F::unmask_clocks(void){ - MCLK->APBBMASK.bit.SERCOM2_ = 1; + MCLK->APBDMASK.bit.SERCOM5_ = 1; } #endif @@ -98,10 +97,10 @@ COBSerial_F::COBSerial_F(){ gclknum_pick = 12; gclkid_core = SERCOM0_GCLK_ID_CORE; // lights - light_tx_pin = 9; // green (good to go!) - light_tx_port = &(PORT->Group[0]); - light_rx_pin = 11; // yellow (pls catch!) - light_rx_port = &(PORT->Group[0]); + light_pin = 9; // green (good to go!) + light_port = &(PORT->Group[0]); + te_pin = 11; // yellow (pls catch!) + te_port = &(PORT->Group[0]); } void COBSerial_F::register_for_interrupts(void){