From c3e44f363eda5559eff2c097896b8d51d4b0de19 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Fri, 24 Aug 2012 22:15:23 +0200 Subject: [PATCH] Added some utility functions in libsam for TC. (Neil H.) --- .../arduino/sam/system/libsam/include/tc.h | 4 ++ .../arduino/sam/system/libsam/source/tc.c | 49 +++++++++++++++ .../arduino_due_x/libsam_sam3x8e_gcc_rel.a | Bin 86056 -> 86338 bytes .../libsam_sam3x8e_gcc_rel.a.txt | 56 +++++++++--------- 4 files changed, 82 insertions(+), 27 deletions(-) diff --git a/hardware/arduino/sam/system/libsam/include/tc.h b/hardware/arduino/sam/system/libsam/include/tc.h index e19388648..2923a9855 100644 --- a/hardware/arduino/sam/system/libsam/include/tc.h +++ b/hardware/arduino/sam/system/libsam/include/tc.h @@ -68,6 +68,10 @@ extern void TC_Stop( Tc *pTc, uint32_t dwChannel ) ; extern uint32_t TC_FindMckDivisor( uint32_t dwFreq, uint32_t dwMCk, uint32_t *dwDiv, uint32_t *dwTcClks, uint32_t dwBoardMCK ) ; +extern uint32_t TC_ReadCV(Tc *p_tc, uint32_t ul_channel); + +extern uint32_t TC_GetStatus(Tc *p_tc, uint32_t ul_channel); + extern void TC_SetRA(Tc *tc, uint32_t chan, uint32_t v) ; extern void TC_SetRB(Tc *tc, uint32_t chan, uint32_t v) ; diff --git a/hardware/arduino/sam/system/libsam/source/tc.c b/hardware/arduino/sam/system/libsam/source/tc.c index 94b5caf79..24bdcb161 100644 --- a/hardware/arduino/sam/system/libsam/source/tc.c +++ b/hardware/arduino/sam/system/libsam/source/tc.c @@ -173,14 +173,63 @@ extern uint32_t TC_FindMckDivisor( uint32_t dwFreq, uint32_t dwMCk, uint32_t *dw return 1 ; } +/** + * \brief Read Timer Counter Counter Value on the selected TC & channel. + * + * \param p_tc Pointer to a TC instance. + * \param ul_channel Channel to configure. + * + * \return RC value. + */ +uint32_t TC_ReadCV(Tc *p_tc, uint32_t ul_channel){ + return p_tc->TC_CHANNEL[ul_channel].TC_CV; +} + +/** + * \brief Get current status on the selected channel. + * + * \param p_tc Pointer to a TC instance. + * \param ul_channel Channel to configure. + * + * \return The current TC status. + */ +uint32_t TC_GetStatus(Tc *p_tc, uint32_t ul_channel) +{ + TcChannel *tc_channel; + + tc_channel = p_tc->TC_CHANNEL + ul_channel; + return tc_channel->TC_SR; +} + +/** + * \brief Set RA on the selected channel. + * + * \param tc Pointer to a TC instance. + * \param chan Channel to configure. + * \param v New value for RA. + */ void TC_SetRA(Tc *tc, uint32_t chan, uint32_t v) { tc->TC_CHANNEL[chan].TC_RA = v; } +/** + * \brief Set RB on the selected channel. + * + * \param tc Pointer to a TC instance. + * \param chan Channel to configure. + * \param v New value for RB. + */ void TC_SetRB(Tc *tc, uint32_t chan, uint32_t v) { tc->TC_CHANNEL[chan].TC_RB = v; } +/** + * \brief Set RC on the selected channel. + * + * \param tc Pointer to a TC instance. + * \param chan Channel to configure. + * \param v New value for RC. + */ void TC_SetRC(Tc *tc, uint32_t chan, uint32_t v) { tc->TC_CHANNEL[chan].TC_RC = v; } diff --git a/hardware/arduino/sam/variants/arduino_due_x/libsam_sam3x8e_gcc_rel.a b/hardware/arduino/sam/variants/arduino_due_x/libsam_sam3x8e_gcc_rel.a index 8488d4ee5e60c4cffafb4b6aaf6a382661762bf9..d2c99e8b02d7f386895c57b55f5c1ec30a8bf119 100644 GIT binary patch delta 4667 zcmcIneN0=|6+idcPWUny+xS5Yu}N7WEH(asXFJPM@}UqKv;m=OGo=^`owaKv{f|hO)^yz5;b(HwrC;yW2y4T(r(kVt)15WQFVVz?asZv zhG(}OWLmC#-tq5z-0ySFdl#onZ=ExpDvyT(p`h3Ac6;5d>7Q=55^hkq*xi)}K(+%^ zy|a3%y8*Bw#aCl=A8q0*&QJ`#uLa;fP&}j4k!Jz!g^uCmvgza^z-s7B7r>dWID33K zoxcWxO1hYxEH6;_$GcBg7sgBex{hqXoLZAm*{>Ewc-*Gm_j4((3WU-Fm%!`IHq+TFUI zjcL5-l(opd7mZqF=M6$XdZL_u7-^(!s!S_~E9k8}d2BdGd#dXtgHiFK`}?ytgU=VB zmuENFeZDYwVuQWiYPV;HC+rFOLn#BV-%s1d?X>f#9ld-$?&bA|nNSKfB&HOyBQa$r zBMFO(*tN0fX;ZErQf-vR`(^6^16BeQNJ84ahI;!Q)}vYCp*8f1T&rM5eBoiLaD$}Sm0dN=AUmf7KJiSQK9QkUQD~Oi2uV$HAjaH{!jyb z|JX)bFUABmQ$1%jPzDZd_KblPs z$;oQ#&(WKOJw_mJj}U4(;7HiR#3Hrx|HbTfFq3q?_%{8=q-?z_q!M=nm_g&?j^dBA z#Bb7v&&nnF=+C-H8!sTp;Q?P-AFW&c4IlPYy(z zRbf0hL_3RQt@-sj3DYmHUx84VRXszXp5YP_z^7gE1yf3e6*+`{t_v}t6j11Uvn7&0 zRsRA(rn4CWAzyX@d_)Twsr9&>{y1qN!!(|h>3lM0sU-f0y5{hTi>sNwwdk^#bXY&m z61N!H&9~;G8M_N<>wVmscFtK$Pa6SjsroiLXCcqf!8w`E;J*{}>Rh!nVWf>`9rRPQ zynvReN~k^fhTBNYwCRfLQM@SFwHu$y%>b3l0RI_a1D3^9vm+yj_00eeKu`$GOi$mu z;v{x@`-%&T@+bH#q>)21^~~=k4pvmP6Y~d1Jg6+EJp~U$kLvZhdau4j*875bOGTH0 zm3p6Fr>pns5~~tW8uU7Uh29a*Q>VmJ)yA%wNIU@0g$t7K;`cI+_<-O8jPDUKfpT8B zHUsd&g}71ZS^i*tJZ4bn78t{X`(sVx`u&XW6yu>i8!x^zAP&R_L**-8&IP$p!?shq#In%QCG;MxqjJ8=-+1ZtbQf9^j>^ejrlyw0sjm=v9&-u z_>L;&r6Y5musAMxg`@&DUDtk#xH3VoxM;P%t}&Qd)Un2+DbdCf|7%|-mc(hy{@U1Y zoP-3mnVV&#xLU00E8^U$>AQ>TO*~i9tN2D?yY*dDDp&foQ@=YX@@8tG>wbT+Fr{N3 z4)~$);e~QtUQJHrl6NJ&;B*1Gvn0Szi{uMM#A#ga!jXK-Mq=V)#K$%>*(#Ir(v$@s SH2G{D`IklSGSNtm7ySpr3Gwg% delta 4520 zcmcIneQZa{iqnl^HNiNo z{{UVybyTC(_&A-y2BZ+^Hqn+QebGWtmyi~1>DH~;Dy`GBs!JqGJ{PRIxAv{*6~i^lx^ke^+~yWg*-A}SaAJF5wy z&4e_ZSvWPFCFFBSTZqw3w9!7-L$UaSK|*cc=Aq$}+t%MwD z)!6N78u}R_m2~DlLT;4ac$koDl6F0XK|b>VA(iy!#|bggdmj;UBc$EPpf7NY_L*M) z3*&op3FH3-EkNzxCY)S{303?HByFLF6?RQq2wf;OXR&u(ht%sSK3fj6!BhIb<#vnS zQR}zqJxlsbGVi1?d)cSUbr&RkYS|LgEnF5JIMG7A`lk(-s>=jdnliVS33fkt*bIAX z>OkxA>h|yaj>0GDJE5=72|alQ?&-8ceP5OS!_J?Y%<)tz2F{Gj6b>aAhdVMga9gH^ z#$j#7XZcz%6--1D5mdRQu*z645+%W0Po^v16-=ie>3eKjIvtFs)a13KiPS*~JBicVA&>~oy ztEWzQ2=9u%C+CrRSPaPgt5h)(Mih=3P$(29rI;ASVbzE*Li5w{$QV!}rPIDPN&7k> zS#(L-NJuZ^*p%}E7Z~3{$TtM;V0<$n_~Z7d;(ROP2!;h7WxSP;a{|96_yxw%?xMic z$Tha`TS71+_!`Em2x%6$jq&w_;EylJ9m0u{0(1LsR@kGy%yIPo8jgRJd(TWoi@nS_8l3wr7)>kc66(oT&tdvp;A3P2`{ay(dYKBHQOV`*^?nyXA8i059~2c`Rc*E#fZ%j zH559$e6=ft^@5ii<7_oih+BXAh>7YS{A34(-lOf3nt-9BLHIE9dl)^|V4b!S;zwf- z%pSYjdTAbokKb*zRF`!9$J3Dc!~t{1eRL44gR5Z8Z!OkR5pRS;g9@}g>yQVr>TSIE zvd>zqrSg9fW(O6|C0xbW6h;wPcvJX~(1eh)>oo{JuQ;nvkGttD$_V)x4X z%gVBVT^1NQsen7^0N+sO{d-Wt+_fMrA~j@R8OHhY+k)FjL!LBbjPX(p#g5rfR=J53 zTpntLj#^*3n0n}XBTg$Rgs{C!h*{tyKQ>Z<@sUW2@#|V(p0X$`(=Vyi!^A1CF+cRV zQwOWc1jk-1n5sAByK?yla@+IWhliKL(vhl~%@1ry-}PA6!`bc)c?i5R4&S#gvN2)X z_FY2yhbbR44%eDD<$HR;{)(b!hgV8cG73)J1NZKAnbl}4#Lu8;DuJiYa#JiEN2OZ| zv2({|ipB+G=MRIaB2S1>Dwj*q1pGZSqi05wX1I9H4a4Ug@)MX4Zk98i8H^1JPbtTq znb-WILi0Rocusn*2u&$(Uqa0&EDN|ix8gL$**eXoL!>b7ppV1IxB@4}9r9Bsck%q5 zM)?4j&*9SxK+ms|&!U#Eq&J`Uo2ebTChDmh`X?0I?dU4I+(;DYPM0;oF&i*4p$wds zsKa`f5P9Ka99Rp^$$IL7@MN0W^h1*x)slvEQe)xp{}PYAb0bO_(hw~T4NHxM3=Kxb zU>L^5LdJs!BV*7-6HCjMP|HjcaRSZ}H%v{(>B*Qr3?+Kn|9M3AA<|yZ_ zANxLU{fL`|-Y4vNnxoJ!a0BBw9!~{6?^ed!#CkZMt*6Z|SUMC@!P*FumrdMy^~5Yd z^LBVda0hUlpUH8)PNC-;YpU2-aUG2t=7nKF@ZF4eh=NB$UhwgXH-Yjs%nldgjiF?B z$Mx;XHnfg8itn23p!BNBb`TbF)bmb)3zg}USL^$BVUq~a42c|sq z4Sn~UPfE5@B~D=RE#sAV9G~zvU)S#=;1#d8y|vl|mLZ4Dj%s!lYpK7-r5}4cKxtT? zo>@%eUlu!BDPo40zX?pnCo;x;RPMy9H~y(07n>yCnpeN@?iSHC#a`p@|Gc*NL9fqV z{#Bi^qmG@grhk#jBxh~(ujP`{4q9g}{Uc~l#{TA}Iq`3xxa8QQK3eB9Ix#jBqMtg% On3DzH*jNjF#{OSUv+ryG diff --git a/hardware/arduino/sam/variants/arduino_due_x/libsam_sam3x8e_gcc_rel.a.txt b/hardware/arduino/sam/variants/arduino_due_x/libsam_sam3x8e_gcc_rel.a.txt index d9b649544..6ded8fa2f 100644 --- a/hardware/arduino/sam/variants/arduino_due_x/libsam_sam3x8e_gcc_rel.a.txt +++ b/hardware/arduino/sam/variants/arduino_due_x/libsam_sam3x8e_gcc_rel.a.txt @@ -72,7 +72,7 @@ pmc.o: 00000000 T pmc_switch_udpck_to_upllck pwmc.o: -00000000 r C.9.7272 +00000000 r C.9.7280 00000000 t FindClockConfiguration 00000000 T PWMC_ConfigureChannel 00000000 T PWMC_ConfigureChannelExt @@ -100,14 +100,14 @@ pwmc.o: 00000000 T PWMC_SetSyncChannelUpdateUnlock 00000000 T PWMC_WriteBuffer U __assert_func -00000000 r __func__.5968 -00000000 r __func__.5979 -00000000 r __func__.5994 -00000000 r __func__.6005 -00000000 r __func__.6016 -00000000 r __func__.6023 -00000000 r __func__.6107 +00000000 r __func__.5974 +00000000 r __func__.5985 +00000000 r __func__.6000 +00000000 r __func__.6011 +00000000 r __func__.6022 +00000000 r __func__.6029 00000000 r __func__.6113 +00000000 r __func__.6119 rtc.o: 00000000 T RTC_ClearSCCR @@ -123,9 +123,9 @@ rtc.o: 00000000 T RTC_SetTime 00000000 T RTC_SetTimeAlarm U __assert_func -00000000 r __func__.5965 -00000000 r __func__.5974 -00000000 r __func__.5979 +00000000 r __func__.5971 +00000000 r __func__.5980 +00000000 r __func__.5985 rtt.o: 00000000 T RTT_EnableIT @@ -134,8 +134,8 @@ rtt.o: 00000000 T RTT_SetAlarm 00000000 T RTT_SetPrescaler U __assert_func -00000000 r __func__.5972 -00000000 r __func__.5980 +00000000 r __func__.5978 +00000000 r __func__.5986 spi.o: 00000000 T SPI_Configure @@ -153,15 +153,17 @@ spi.o: tc.o: 00000000 T TC_Configure 00000000 T TC_FindMckDivisor +00000000 T TC_GetStatus +00000000 T TC_ReadCV 00000000 T TC_SetRA 00000000 T TC_SetRB 00000000 T TC_SetRC 00000000 T TC_Start 00000000 T TC_Stop U __assert_func -00000000 r __func__.5967 00000000 r __func__.5973 00000000 r __func__.5979 +00000000 r __func__.5985 timetick.o: 00000000 T GetTickCount @@ -188,18 +190,18 @@ twi.o: 00000000 T TWI_TransferComplete 00000000 T TWI_WriteByte U __assert_func -00000000 r __func__.6340 -00000000 r __func__.6355 -00000000 r __func__.6359 -00000000 r __func__.6366 -00000000 r __func__.6370 -00000000 r __func__.6375 -00000000 r __func__.6383 -00000000 r __func__.6397 -00000000 r __func__.6402 -00000000 r __func__.6406 -00000000 r __func__.6411 -00000000 r __func__.6415 +00000000 r __func__.6346 +00000000 r __func__.6361 +00000000 r __func__.6365 +00000000 r __func__.6372 +00000000 r __func__.6376 +00000000 r __func__.6381 +00000000 r __func__.6389 +00000000 r __func__.6403 +00000000 r __func__.6408 +00000000 r __func__.6412 +00000000 r __func__.6417 +00000000 r __func__.6421 usart.o: 00000000 T USART_Configure @@ -218,7 +220,7 @@ usart.o: 00000000 T USART_Write 00000000 T USART_WriteBuffer U __assert_func -00000000 r __func__.6261 +00000000 r __func__.6267 wdt.o: 00000000 T WDT_Disable