From 35abaa84b074478f6d5ebd2f632ce38f968fc074 Mon Sep 17 00:00:00 2001 From: Jake <jake.read@cba.mit.edu> Date: Fri, 23 Feb 2018 08:48:37 -0500 Subject: [PATCH] unit test all uart lines --- circuit/mkrouter/eagle.epf | 60 ++++++------ .../mkrouter-v04/.vs/mkrouter-v04/v14/.atsuo | Bin 50688 -> 78336 bytes .../mkrouter-v04/mkrouter-v04/src/hardware.h | 13 +++ embedded/mkrouter-v04/mkrouter-v04/src/main.c | 89 +++++++++++++++--- .../mkrouter-v04/mkrouter-v04/src/uartport.c | 12 ++- .../mkrouter-v04/mkrouter-v04/src/uartport.h | 10 +- 6 files changed, 133 insertions(+), 51 deletions(-) diff --git a/circuit/mkrouter/eagle.epf b/circuit/mkrouter/eagle.epf index 5b80877..f5771b3 100644 --- a/circuit/mkrouter/eagle.epf +++ b/circuit/mkrouter/eagle.epf @@ -18,19 +18,19 @@ UsedLibrary="D:/Dropbox (Personal)/CBA/doc/libraries_jake/eagle/sparkfun/SparkFu UsedLibrary="D:/Dropbox (Personal)/CBA/doc/libraries_jake/eagle/marekr/borkedlabs-passives.lbr" [Win_1] -Type="Board Editor" -Loc="0 0 1919 1016" +Type="Schematic Editor" +Loc="-1928 -8 -9 1008" State=1 -Number=2 -File="mkrouter.brd" -View="2.78266 15.3697 62.859 48.8939" -WireWidths=" 0.0762 0.1016 0.127 0.15 0.2 0.4064 0.508 0.6096 0.8128 1.016 1.27 2.54 0.254 0.3048 0.2032 0.1524" +Number=1 +File="mkrouter.sch" +View="32.8807 29.5621 186.974 128.623" +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.35 0.4 0.45 0.5 0.55 0.65 0.7 0.75 0.8 0.85 0.9 1 0.6 0.3" +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" ViaDiameters=" 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1 1.05 1.1 1.15 1.2 1.3 0" -ViaDrills=" 0.2 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 1 0.35 0.25 0.3" -HoleDrills=" 0.2 0.25 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 1 0.35 0.3" -TextSizes=" 0.254 0.3048 0.4064 0.8128 1.27 1.9304 2.1844 2.54 3.81 5.08 6.4516 1.778 1.016 0.6096 1.4224 1.6764" +ViaDrills=" 0.2 0.25 0.3 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 1 0.35" +HoleDrills=" 0.2 0.25 0.3 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 1 0.35" +TextSizes=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.9304 2.1844 2.54 3.81 5.08 6.4516 1.778" PolygonSpacings=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 5.08 6.4516 1.27" PolygonIsolates=" 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" MiterRadiuss=" 0.254 0.3175 0.635 1.27 2.54 1 2 2.5 5 7.5 10 0" @@ -39,14 +39,14 @@ DimensionExtWidths=" 0.127 0.254 0.1 0.13 0.26 0" DimensionExtLengths=" 1.27 2.54 1 2 3 0" DimensionExtOffsets=" 1.27 2.54 1 2 3 0" SmdSizes=" 0.3048 0.1524 0.4064 0.2032 0.6096 0.3048 0.8128 0.4064 1.016 0.508 1.27 0.6604 1.4224 0.7112 1.6764 0.8128 1.778 0.9144 1.9304 0.9652 2.1844 1.0668 2.54 1.27 3.81 1.9304 5.08 2.54 6.4516 3.2512 1.27 0.635" -WireBend=4 -WireBendSet=0 +WireBend=0 +WireBendSet=31 WireCap=1 MiterStyle=0 PadShape=0 ViaShape=1 PolygonPour=0 -PolygonRank=1 +PolygonRank=0 PolygonThermals=1 PolygonOrphans=0 TextRatio=8 @@ -61,22 +61,24 @@ SwapLevel=0 ArcDirection=0 AddLevel=2 PadsSameType=0 -Layer=48 +Layer=91 +Views=" 1: 32.8807 29.5621 186.974 128.623" +Sheet="1" [Win_2] -Type="Schematic Editor" -Loc="-8 -8 1911 1008" +Type="Board Editor" +Loc="0 0 1919 1016" State=1 -Number=1 -File="mkrouter.sch" -View="-38.8736 18.8994 146.038 137.772" -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" +Number=2 +File="mkrouter.brd" +View="-18.1943 -5.95386 106.38 63.5619" +WireWidths=" 0.0762 0.1016 0.127 0.15 0.2 0.4064 0.508 0.6096 0.8128 1.016 1.27 2.54 0.254 0.3048 0.2032 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" +PadDrills=" 0.2 0.25 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 0.3" ViaDiameters=" 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 0.95 1 1.05 1.1 1.15 1.2 1.3 0" -ViaDrills=" 0.2 0.25 0.3 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 1 0.35" -HoleDrills=" 0.2 0.25 0.3 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 1 0.35" -TextSizes=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.27 1.4224 1.6764 1.9304 2.1844 2.54 3.81 5.08 6.4516 1.778" +ViaDrills=" 0.2 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 1 0.35 0.25 0.3" +HoleDrills=" 0.2 0.25 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.85 0.9 1 0.35 0.3" +TextSizes=" 0.254 0.3048 0.4064 0.8128 1.27 1.9304 2.1844 2.54 3.81 5.08 6.4516 1.778 1.016 0.6096 1.4224 1.6764" PolygonSpacings=" 0.254 0.3048 0.4064 0.6096 0.8128 1.016 1.4224 1.6764 1.778 1.9304 2.1844 2.54 3.81 5.08 6.4516 1.27" PolygonIsolates=" 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" MiterRadiuss=" 0.254 0.3175 0.635 1.27 2.54 1 2 2.5 5 7.5 10 0" @@ -85,14 +87,14 @@ DimensionExtWidths=" 0.127 0.254 0.1 0.13 0.26 0" DimensionExtLengths=" 1.27 2.54 1 2 3 0" DimensionExtOffsets=" 1.27 2.54 1 2 3 0" SmdSizes=" 0.3048 0.1524 0.4064 0.2032 0.6096 0.3048 0.8128 0.4064 1.016 0.508 1.27 0.6604 1.4224 0.7112 1.6764 0.8128 1.778 0.9144 1.9304 0.9652 2.1844 1.0668 2.54 1.27 3.81 1.9304 5.08 2.54 6.4516 3.2512 1.27 0.635" -WireBend=0 -WireBendSet=31 +WireBend=4 +WireBendSet=0 WireCap=1 MiterStyle=0 PadShape=0 ViaShape=1 PolygonPour=0 -PolygonRank=0 +PolygonRank=1 PolygonThermals=1 PolygonOrphans=0 TextRatio=8 @@ -107,9 +109,7 @@ SwapLevel=0 ArcDirection=0 AddLevel=2 PadsSameType=0 -Layer=91 -Views=" 1: -38.8736 18.8994 146.038 137.772" -Sheet="1" +Layer=48 [Win_3] Type="Control Panel" diff --git a/embedded/mkrouter-v04/.vs/mkrouter-v04/v14/.atsuo b/embedded/mkrouter-v04/.vs/mkrouter-v04/v14/.atsuo index 07adfb5871f44f430c24eb74dfa487801033f9c2..702c75e579fec4c716f781747136091ed6bb2d83 100644 GIT binary patch delta 2953 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 delta 2181 zcmZp8!qU*gJV8g1kpT$^Ffgz&Fff3`{{8>|A0)%LF>pQO!~&K{Og@aNlNFid`6e7* zR?N8OGNT3q1A~Ly<SM2r#)`>bnf!Sa7#J9o85kJ;|NsAg@<la`$ra2#lU;-i7|kYs zWmfm)hf0B@L8gOf5Eg@q3o|e<a4|42h%zuRNH8!kC^0ZFNHQ=m2r)1)2rw`(s53Ay zh%hiPNHH)l{F|64&C1Kbz#u*`P*_%xfq_Ajfq_Abfq_Arfq_AXfq_Anfq_Affq@}m z@=h*k0W$^$26F}m1`7rT21^D8hRIL3Tw=W$7#MsQ7#MsR7#RE*7#RE+7#IQ=7#IQ> z7#M;W7#M;<7XAPKKa_!iA&h~6A)JAMA%cN{A(DZCA&P;4A)0}KA%=m0A(nxGA&!B8 zAs(tek%56haAIIJBFG*rS%e5OS#Xe*5DYSQd6XdIh6VvB$Uwmd3LXxqjXcmGgasW) z4Ieb<Kx_~enHZ=H4l>Tc9AsQ`L_nScVdU7Hyn#z%@)a%t9<)ew-~g!v;mJDOOBnx6 zOw^ymQ^9nOX>t{h7Z1qWEYP5td{Iq>F=X;ro?s4HWFgbZrM!N;44||GN@yT0Af=op z3=9mQ;ANQnmvcV(ZrTEJlRS0Y#Aq`4tKd0aMkWRZ23V#6xs?@^FrQ5RDda!dLr8}e zlq^3@u9WrWQG@0Sn5S4lDfHUppORj@jGR#a!Q>{FNCohKGCwRWflQwKMJj*?l<z?K z5}{H$VDb?rgUMf{btWs=DNjDkWVpG+u7`1xf-@tCGr2^*Z!(jJ6OTLt0|O`-!gMlf zOfD7i<7EW#S&<@P@)wZ{laGklOj2^;0VQE}BsoUo&7}tZj69&^u7V`a3CgWcKqb`V z0{;oq?<+A1PhMb>An+{TK+@Q#-qa(dWJh3rYS83~z7dl%j3Xu=P&45MB@~brPzmtg z+=Z7>25KV6MPLt?SOoBZ3L=mI2!jOK^g$(^$K+oYejK0z2qr$c#4>;fR2qRwCzv1` zs33}Cn*2-tBrhW<=s*P$OmgxUx%0f>VhUCmg3RYBU|?W)0Cm^&iK2{2(>p~Og(jD% z`AjbM?}hj+L03lb-KB$kyLwY^O<$>>aDQXCKf}a8;mHd$PfV`aA|d$CENS1Q<vZ)c zlD+Hh%uCn?m6VyJePD8f3ZI}>d`P{}yIIo{ez!2}{25>cmFJs$K-FQAhzlu^b)J_I zRK$XO1;QXdO#Wh8GP&k}#^woH?-+$L7(SUy(YbkBI(2ezz7NNfN~g&abPO0bO+Kiy zd~${jk4o{UrDt|s={|Y6SpIOM*ZjjE&x4Et;d9Ik3_VN?43lT*YB27be9$(2vVzcJ zVw1fvB-w*1Cy-$vw~?3ZLGg$!*>i(ZD7a)`V3<Bpi7|0=g3$tI%yj4ICo;KURm9}D ztzw%eZOP+Z<iavZ%9)gm2TCKLQXl4z$t94C#|n1A<e$Rcq(mB?95%UBseAHGHJ8ap o?DkBua3(ohc=3RWBebmH&kL@pk@E%*C`{u(#TNqu!=ivP0E=1WCjbBd diff --git a/embedded/mkrouter-v04/mkrouter-v04/src/hardware.h b/embedded/mkrouter-v04/mkrouter-v04/src/hardware.h index f35e5f0..e1c1883 100644 --- a/embedded/mkrouter-v04/mkrouter-v04/src/hardware.h +++ b/embedded/mkrouter-v04/mkrouter-v04/src/hardware.h @@ -29,10 +29,23 @@ pin_t *lights[] = {&np1stlr, &np1stlb, &np2stlr, &np2stlb, &np3stlr, &np3stlb, & // ringbuffers ringbuffer_t np1rbrx; ringbuffer_t np1rbtx; +ringbuffer_t np2rbrx; +ringbuffer_t np2rbtx; +ringbuffer_t np3rbrx; +ringbuffer_t np3rbtx; +ringbuffer_t np4rbrx; +ringbuffer_t np4rbtx; +ringbuffer_t np5rbrx; +ringbuffer_t np5rbtx; // uartports uartport_t up1; uartport_t up2; +uartport_t up3; +uartport_t up4; +uartport_t up5; + +uartport_t *ups[] = {&up1, &up2, &up3, &up4, &up5}; #endif /* HARDWARE_H_ */ \ No newline at end of file diff --git a/embedded/mkrouter-v04/mkrouter-v04/src/main.c b/embedded/mkrouter-v04/mkrouter-v04/src/main.c index 9bd0594..aa9957c 100644 --- a/embedded/mkrouter-v04/mkrouter-v04/src/main.c +++ b/embedded/mkrouter-v04/mkrouter-v04/src/main.c @@ -42,8 +42,10 @@ void setupperipherals(void){ // start uart clocks PMC->PMC_PCER0 = 1 << ID_UART0; - //PMC->PMC_PCER0 = 1 << ID_UART1; - //PMC->PMC_PCER1 = 1 << (ID_UART2 - 32); + PMC->PMC_PCER0 = 1 << ID_UART1; + PMC->PMC_PCER1 = 1 << (ID_UART2 - 32); + PMC->PMC_PCER1 = 1 << (ID_UART3 - 32); + PMC->PMC_PCER1 = 1 << (ID_UART4 - 32); } void setupinterrupts(void){ @@ -51,6 +53,26 @@ void setupinterrupts(void){ NVIC_ClearPendingIRQ(UART0_IRQn); NVIC_SetPriority(UART0_IRQn, 8); NVIC_EnableIRQ(UART0_IRQn); + + NVIC_DisableIRQ(UART1_IRQn); + NVIC_ClearPendingIRQ(UART1_IRQn); + NVIC_SetPriority(UART1_IRQn, 8); + NVIC_EnableIRQ(UART1_IRQn); + + NVIC_DisableIRQ(UART2_IRQn); + NVIC_ClearPendingIRQ(UART2_IRQn); + NVIC_SetPriority(UART2_IRQn, 8); + NVIC_EnableIRQ(UART2_IRQn); + + NVIC_DisableIRQ(UART3_IRQn); + NVIC_ClearPendingIRQ(UART3_IRQn); + NVIC_SetPriority(UART3_IRQn, 8); + NVIC_EnableIRQ(UART3_IRQn); + + NVIC_DisableIRQ(UART4_IRQn); + NVIC_ClearPendingIRQ(UART4_IRQn); + NVIC_SetPriority(UART4_IRQn, 8); + NVIC_EnableIRQ(UART4_IRQn); } void lightsetup(void){ @@ -98,28 +120,52 @@ int main (void) lightsetup(); + // RBs 1 rb_init(&np1rbrx); - rb_init(&np1rbtx); - + rb_init(&np1rbtx); // UP1 on UART0, RX 9 TX 10 on PIOA up1 = uart_new(UART0, PIOA, 9, 10, &np1rbrx, &np1rbtx); - uart_init(&up1, 81); + uart_init(&up1, 81, UART_IS_PERIPHERAL_A); - /* + // RBs 2 + rb_init(&np2rbrx); + rb_init(&np2rbtx); // UP2 on UART1, RX 5 TX 4 on PIOA - up2 = uart_new(UART1, PIOA, 5, 4, &np1rbrx, &np1rbtx); - uart_init(&up2, 81); // 81 for FTDI 115200 :| - */ + up2 = uart_new(UART1, PIOA, 5, 4, &np2rbrx, &np2rbtx); + uart_init(&up2, 81, UART_IS_PERIPHERAL_C); // 81 for FTDI 115200 :| + + // RBs 3 + rb_init(&np3rbrx); + rb_init(&np3rbtx); + // UP3 on UART2, RX 25 TX 26 on PIOD + up3 = uart_new(UART2, PIOD, 25, 26, &np3rbrx, &np3rbtx); + uart_init(&up3, 81, UART_IS_PERIPHERAL_C); + + // RBs 4 + rb_init(&np4rbrx); + rb_init(&np4rbtx); + // UP4 on UART3, RX 28 TX 30 on PIOD + up4 = uart_new(UART3, PIOD, 28, 30, &np4rbrx, &np4rbtx); + uart_init(&up4, 81, UART_IS_PERIPHERAL_A); + + // RBs 5 + rb_init(&np5rbrx); + rb_init(&np5rbtx); + // UP5 on UART4, RX 18 TX 19 on PIOD + up5 = uart_new(UART4, PIOD, 18, 19, &np5rbrx, &np5rbtx); + uart_init(&up5, 81, UART_IS_PERIPHERAL_C); + + // currently: unit test, setup ABCDSR registers for uarts, do the main while loop below while(1){ lightstoggle(); - /* uint8_t hello[] = {'h', 'e', 'l', 'l', 'o'}; - if(!rb_empty(up1.rbrx)){ - uart_sendchars_buffered(&up1, hello, 5); - uart_sendchar_buffered(&up1, rb_get(up1.rbrx)); + for(int i = 0; i < 5; i ++){ + if(!rb_empty(ups[i]->rbrx)){ + uart_sendchars_buffered(ups[i], hello, 5); + uart_sendchar_buffered(ups[i], rb_get(ups[i]->rbrx)); + } } - */ delay_ms(75); } } @@ -128,3 +174,18 @@ void UART0_Handler(void){ uart_handler(&up1); } +void UART1_Handler(void){ + uart_handler(&up2); +} + +void UART2_Handler(void){ + uart_handler(&up3); +} + +void UART3_Handler(void){ + uart_handler(&up4); +} + +void UART4_Handler(void){ + uart_handler(&up5); +} \ No newline at end of file diff --git a/embedded/mkrouter-v04/mkrouter-v04/src/uartport.c b/embedded/mkrouter-v04/mkrouter-v04/src/uartport.c index 2582891..e67fe54 100644 --- a/embedded/mkrouter-v04/mkrouter-v04/src/uartport.c +++ b/embedded/mkrouter-v04/mkrouter-v04/src/uartport.c @@ -24,11 +24,19 @@ uartport_t uart_new(Uart *com, Pio *port, uint32_t pinrx, uint32_t pintx, ringbu return uart; } -void uart_init(uartport_t *uart, uint32_t baud){ +void uart_init(uartport_t *uart, uint32_t baud, uint32_t abcdsr){ // PIO disable uart->port->PIO_PDR = uart->pinrx_bm | uart->pintx_bm; - // abcdsr (global, do later) + // abcdsr A[0,0], B[1,0], C[0,1], D[1,1] + if(abcdsr == UART_IS_PERIPHERAL_B){ + uart->port->PIO_ABCDSR[0] |= uart->pinrx_bm | uart->pintx_bm; + } else if (abcdsr == UART_IS_PERIPHERAL_C || abcdsr == UART_IS_PERIPHERAL_D){ + uart->port->PIO_ABCDSR[1] |= uart->pinrx_bm | uart->pintx_bm; + } + if (abcdsr == UART_IS_PERIPHERAL_D){ + uart->port->PIO_ABCDSR[0] |= uart->pinrx_bm | uart->pintx_bm; + } // UART Registers // mode register diff --git a/embedded/mkrouter-v04/mkrouter-v04/src/uartport.h b/embedded/mkrouter-v04/mkrouter-v04/src/uartport.h index d38ecd0..c4c81e2 100644 --- a/embedded/mkrouter-v04/mkrouter-v04/src/uartport.h +++ b/embedded/mkrouter-v04/mkrouter-v04/src/uartport.h @@ -12,10 +12,10 @@ #include <asf.h> #include "ringbuffer.h" -#define UART_IS_PERIPHERAL_A 0x01 -#define UART_IS_PERIPHERAL_B 0x02 -#define UART_IS_PERIPHERAL_C 0x03 -#define UART_IS_PERIPHERAL_D 0x04 +#define UART_IS_PERIPHERAL_A 0x00 +#define UART_IS_PERIPHERAL_B 0x01 +#define UART_IS_PERIPHERAL_C 0x02 +#define UART_IS_PERIPHERAL_D 0x03 typedef struct{ Uart *com; @@ -32,7 +32,7 @@ typedef struct{ uartport_t uart_new(Uart *uart, Pio *port, uint32_t pinrx, uint32_t pintx, ringbuffer_t *rbrx, ringbuffer_t *rbtx); -void uart_init(uartport_t *uart, uint32_t baud); +void uart_init(uartport_t *uart, uint32_t baud, uint32_t abcdsr); void uart_sendchar_polled(uartport_t *uart, uint8_t data); void uart_sendchar_buffered(uartport_t *uart, uint8_t data); -- GitLab