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
 
 ![board](/images/fab-back.jpg)
 
+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