From 3f749a62f88fa4468eaff4680ab7eb15951f6379 Mon Sep 17 00:00:00 2001 From: Jake <jake.read@cba.mit.edu> Date: Tue, 24 Jul 2018 19:25:00 -0400 Subject: [PATCH] xmega eventsys clock propagation --- README.md | 2 + circuit/README.md | 4 +- circuit/atkrouter-v01/eagle.epf | 8 +-- embedded/README.md | 7 ++- embedded/atkrouter/.vs/atkrouter/v14/.atsuo | Bin 72704 -> 45056 bytes embedded/atkrouter/atkrouter/atkrouter.cproj | 4 +- embedded/atkrouter/atkrouter/main.c | 58 ++++++++++++++++++- 7 files changed, 74 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index c7644b9..65d840a 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,8 @@ This is a message passing device and USB link for the [automatakit](https://gitl  +The board includes one USB-to-UART Bridge, a CP2102n, *which is treated as the router's 6th port*. + ## Development Notes See [circuit chatter](/circuit) and [firmware chatter](/embedded). diff --git a/circuit/README.md b/circuit/README.md index 63d6b45..77e1921 100644 --- a/circuit/README.md +++ b/circuit/README.md @@ -8,4 +8,6 @@ The circuit uses an ATxmega256A3U microcontroller and it's UART modules to chatt # Notes - - 0.1uF cap near CP2102n is too close, can't place \ No newline at end of file + - 0.1uF cap near CP2102n is too close, can't place + - silk port labels are under ports + - clkout has to be pin7 on C, E or D \ No newline at end of file diff --git a/circuit/atkrouter-v01/eagle.epf b/circuit/atkrouter-v01/eagle.epf index f414bc7..07d789a 100644 --- a/circuit/atkrouter-v01/eagle.epf +++ b/circuit/atkrouter-v01/eagle.epf @@ -40,7 +40,7 @@ UsedLibrary="C:/EAGLE 8.3.2/lbr/ltspice/sym.lbr" Type="Board Editor" Number=3 File="atkrouter-v01.brd" -View="-5.94496 21.7574 107.847 82.1959" +View="34.5202 60.3024 52.8983 70.0636" WireWidths=" 0.0762 0.1016 0.127 0.15 0.2 0.2032 0.4064 0.6096 0.8128 1.27 2.54 0.508 0.254 0.3048 1.016 0.1524" PadDiameters=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 6.4516 0" PadDrills=" 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.65 0.7 0.75 0.8 0.85 0.9 1 0.6" @@ -78,13 +78,13 @@ SwapLevel=0 ArcDirection=0 AddLevel=2 PadsSameType=0 -Layer=48 +Layer=47 [Win_2] Type="Schematic Editor" Number=1 File="atkrouter-v01.sch" -View="-58.1526 -5.84485 208.12 165.332" +View="13.2075 13.1224 141.618 95.6731" WireWidths=" 0.0762 0.1016 0.127 0.15 0.2 0.2032 0.254 0.3048 0.4064 0.508 0.6096 0.8128 1.016 1.27 2.54 0.1524" PadDiameters=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 6.4516 0" PadDrills=" 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.65 0.7 0.75 0.8 0.85 0.9 1 0.6" @@ -123,7 +123,7 @@ ArcDirection=0 AddLevel=2 PadsSameType=0 Layer=91 -Views=" 1: -58.1526 -5.84485 208.12 165.332" +Views=" 1: 13.2075 13.1224 141.618 95.6731" Sheet="1" [Win_3] diff --git a/embedded/README.md b/embedded/README.md index 70ba3df..ca9a0ac 100644 --- a/embedded/README.md +++ b/embedded/README.md @@ -4,4 +4,9 @@ Firmware for the board follows the [automatakit](https://gitlab.cba.mit.edu/jake Communication is handled asynchronously: bytes received on the UART are loaded into a ringbuffer, where they are later parsed in to packets. Parsing happens as oven as possible. -... \ No newline at end of file +Now, to start with clocking. + +## 0th port: + +This is kind of confusing, and I think it's worthwhile to re-write this so that the router is actually the head. + diff --git a/embedded/atkrouter/.vs/atkrouter/v14/.atsuo b/embedded/atkrouter/.vs/atkrouter/v14/.atsuo index dda766cbda3e1df81cbb5ab604dddf255fa0b9bf..d7252afd6d4a60bedfb0a03b0c97348ed6780001 100644 GIT binary patch delta 4003 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 literal 72704 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 TGUPHOF{Co2Fr<J<Y;`>VeD617 diff --git a/embedded/atkrouter/atkrouter/atkrouter.cproj b/embedded/atkrouter/atkrouter/atkrouter.cproj index 93c010b..a88c72e 100644 --- a/embedded/atkrouter/atkrouter/atkrouter.cproj +++ b/embedded/atkrouter/atkrouter/atkrouter.cproj @@ -41,7 +41,7 @@ </framework-data> </AsfFrameworkConfig> <avrtool>com.atmel.avrdbg.tool.atmelice</avrtool> - <avrtoolserialnumber>J41800087098</avrtoolserialnumber> + <avrtoolserialnumber>J41800086407</avrtoolserialnumber> <avrdeviceexpectedsignature>0x1E9842</avrdeviceexpectedsignature> <com_atmel_avrdbg_tool_atmelice> <ToolOptions> @@ -51,7 +51,7 @@ <InterfaceName>PDI</InterfaceName> </ToolOptions> <ToolType>com.atmel.avrdbg.tool.atmelice</ToolType> - <ToolNumber>J41800087098</ToolNumber> + <ToolNumber>J41800086407</ToolNumber> <ToolName>Atmel-ICE</ToolName> </com_atmel_avrdbg_tool_atmelice> <avrtoolinterface>PDI</avrtoolinterface> diff --git a/embedded/atkrouter/atkrouter/main.c b/embedded/atkrouter/atkrouter/main.c index 3a3190e..69a7cad 100644 --- a/embedded/atkrouter/atkrouter/main.c +++ b/embedded/atkrouter/atkrouter/main.c @@ -18,14 +18,69 @@ // do cp2102n void clock_init(void){ + OSC.XOSCCTRL = OSC_XOSCSEL_XTAL_256CLK_gc | OSC_FRQRANGE_12TO16_gc; // select external source OSC.CTRL = OSC_XOSCEN_bm; // enable external source while(!(OSC.STATUS & OSC_XOSCRDY_bm)); // wait for external - OSC.PLLCTRL = OSC_PLLSRC_XOSC_gc | OSC_PLLFAC0_bm | OSC_PLLFAC1_bm; // select external osc for pll, do pll = source * 3 + OSC.PLLCTRL = OSC_PLLSRC_XOSC_gc | 3; // select external osc for pll, do pll = source * 3 OSC.CTRL |= OSC_PLLEN_bm; // enable PLL while (!(OSC.STATUS & OSC_PLLRDY_bm)); // wait for PLL to be ready CCP = CCP_IOREG_gc; // enable protected register change CLK.CTRL = CLK_SCLKSEL_PLL_gc; // switch to PLL for main clock + /* + OSC.PLLCTRL = OSC_PLLFAC4_bm | OSC_PLLFAC3_bm; // 2 MHz * 24 = 48 MHz + OSC.CTRL = OSC_PLLEN_bm; // enable PLL + while (!(OSC.STATUS & OSC_PLLRDY_bm)); // wait for PLL to be ready + CCP = CCP_IOREG_gc; // enable protected register change + CLK.CTRL = CLK_SCLKSEL_PLL_gc; // switch to PLL + */ +} + +#define ATKTIMER_MODE_MASTER 1 +#define ATKTIMER_MODE_SLAVE 0 +#define ATKTIMER_MODE_RING 2 + +void atktimer_init(uint8_t mode){ + /* + in this test, + tx: pin F0 outputs a 1MHz clock on all output lines + rx: pin F4 (atk1-clkin) listens to both edges, outputs that event to PE7 (ATK1-tx) + */ + PORTF.DIRSET = PIN0_bm; // this is our clk output pin + PORTF.PIN0CTRL = PORT_SRLEN_bm; // slew rate limit to decrease noise (a little bit) + + if(mode == ATKTIMER_MODE_MASTER){ + // put a 1MHz timer on the clock out lines + // clkout pin is PF0, TCF0.CCA + TCF0.CTRLA = TC_CLKSEL_DIV1_gc; // one tick is 48MHz + + uint16_t pera = 47; // going for 1MHz + uint8_t peral = (uint8_t) pera; + uint8_t perah = (uint8_t)(pera >> 8); + + TCF0.CTRLB = TC_WGMODE_FRQ_gc | (1 << 4); // frequency wave mode, and enable CCA channel output + // need to set CCA, + TCF0.CCABUFL = peral; + TCF0.CCABUFH = perah; + } else if(mode == ATKTIMER_MODE_SLAVE) { + // listen for clock on a port, let's say ATK1 for now, and mirror that on our clock outputs + PORTF.DIRCLR = PIN4_bm; // this is ATK1-CLKIN + PORTF.PIN4CTRL = PORT_ISC_BOTHEDGES_gc; // sense when falling + + // setup event channel 0 to have EVSYS_CHMUX_PORTD_PIN4_gc as input + EVSYS_CH0MUX = EVSYS_CHMUX_PORTF_PIN4_gc; + // it seems we can only output events directly on pin7 of ports c, d or e :| (or pin 4 on the same ports) + // so output event 0 on port E, pin 7 + // this will put event channel 0 on a pin, directly - only for as many clock cycles as the event is active. i.e. one + //PORTCFG_CLKEVOUT = PORTCFG_EVOUT_PE7_gc; + + TCF0.CTRLA = TC_CLKSEL_EVCH0_gc; + + TCF0.CTRLB = TC_WGMODE_FRQ_gc | (1 << 4); // frequency wave mode, and enable CCA channel output + // need to set CCA, + TCF0.CCABUFL = 0; + TCF0.CCABUFH = 0; + } } void uarts_init(void){ @@ -98,6 +153,7 @@ void atkps_init(void){ int main(void) { clock_init(); + atktimer_init(ATKTIMER_MODE_MASTER); uarts_init(); atkps_init(); -- GitLab