From c86d22d689f392d9daff0c5934db55925141711a Mon Sep 17 00:00:00 2001 From: Michael Dryden Date: Fri, 11 Apr 2014 14:30:50 -0400 Subject: [PATCH] Prevent going out of bounds with DAC offset. --- DSTAT-temp/src/max5443.c | 11 +- DSTAT1.atsuo | Bin 47616 -> 47616 bytes DSTAT1/DSTAT1.cproj | 564 +++++++++++++++++++-------------------- 3 files changed, 290 insertions(+), 285 deletions(-) diff --git a/DSTAT-temp/src/max5443.c b/DSTAT-temp/src/max5443.c index f5a9ee5..21efade 100644 --- a/DSTAT-temp/src/max5443.c +++ b/DSTAT-temp/src/max5443.c @@ -7,7 +7,7 @@ #include -volatile uint16_t max5443_offset = 105; +volatile int16_t max5443_offset = 105; struct usart_spi_device spi_device_conf_c = { .id = IOPORT_CREATE_PIN(PORTC, 4) @@ -31,8 +31,13 @@ void max5443_set_voltage1(uint16_t dacindex){ // if (buffer.ui16 == dacindex) // return; - - buffer.ui16 = dacindex+max5443_offset; + + if (65535-dacindex < max5443_offset) + buffer.ui16 = 65535; + else if (dacindex < -1*max5443_offset) + buffer.ui16 = 0; + else + buffer.ui16 = dacindex+max5443_offset; irqflags_t flags; flags = cpu_irq_save(); diff --git a/DSTAT1.atsuo b/DSTAT1.atsuo index 8486ac1b10a7c166a918e4afc2d20a93653c87f2..24000e0c2147ce95fc226e40e7a827288f7f30d1 100644 GIT binary patch delta 1480 zcmbu9Uu@e%9LIgG($*0XmLWFvPnx8Is)Ipi zrj{nFK|)9@NYLK{LI`PVK?1Z@(@sM00E$%cfCAsqEI z1Xvdu?>cRhf!>&O6N}c{C^Z|m>)gbJXrB#(*_`I?vjg3eaved?X@k`CBw07pji|?l zL2pZQVH==k+fAoyKaxHh1#@4r62IP!j@Jh06EmekFQwEJ3 zFV{n6dWgG5v@k@TEaL<#;LQj_Um&Q&6i^gF2%uA<;`j5C;um>EkX2ri{X!@am4eZz zQmh6tc{d*LObf92YEu^m7865)B81|+ro?4lQWG&=NyHNTM&vZRsw5OGD9dsn6!jMi zLLi{z^7&bQPMuTufRGdTtTLPB&-g=XP?*cB`B{-L1QW7S<|FsI?W_ND-`$LMuS@;s zNtq_s6rWswp)Ik&!$KEQt z?H5JTLl{AHLp(1Dm6Jk5AQ=_aQ%1cAK^LYV0_~f{h0}RBm*4mQ{^vV$&S-|98N%cV z(Lyeqo}b+Vz2Yk?UBMPZ2!W3+ZrCJBpk<0M5bJ|Ev6LCHHB?+i1(Zqm#Bz$VFVb6k z!r#lU1Gh7ly+t$6en0teOM)N$DVIVP_F3LYsfF3&wg|EtO(ot~wfU{Y+|I&LX4qcF zSc!~iEr-EK3W`-cQ0)OZ5rK_^%&_|fE6qeCau`%cP|V=~GaL(&oPZ>SqhPG{Lw!Oi zsM%OpGDbXHlo{Ekw^?rnhe34(&*eQ!T~zO z{uI6ttRxHd0-s|PN6yLAlHIYOm22V3H2G;?$G2%)PmFnUYl=w+vG|OFK&X$zjq<`p5z7RdkAsEUof*l9YkR zm&hbE`-Wlhjt%mB?;+@OPBc>Z)D?p7;}+=NRYLEh;Ml}&gyX3QEU?s?4|khdVC3LN zm}#q;+M`jaVr#?Z;h}ky4u%6dxW?1r(ZSkCZUIx8bqn}I3Ml(@*#0038oKfmDWUjc zBkicd7m-J0Xm72#sq7bk9#K~7u&|}pcLJ=mmd9E#$qKH}DX2Rmqt`X2hfYTSghMyz z@}*`Ub9J;+m~E<~oj3JP3O)DB@O*i2vDayzitbA?_2)QGhQ*#|&MT|M5R$8(!+CXN z4elm4Q;sNcpq2.11.1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ATxmega256A3U xmegaa @@ -128,7 +128,7 @@ Native true false - + exception_table 0 PDI com.atmel.avrdbg.tool.avrdragon @@ -190,7 +190,7 @@ true true - + 0x20000000 2 @@ -202,133 +202,133 @@ True - True - True - True - True - False - - - BOARD=USER_BOARD - - - - - ../src - ../src/asf/common/applications/user_application/user_board - ../src/asf/common/boards - ../src/asf/common/boards/user_board - ../src/asf/common/utils - ../src/asf/xmega/utils - ../src/asf/xmega/utils/preprocessor - ../src/config - ../src/asf/common/services/usb/class/cdc/device - ../src/asf/xmega/drivers/cpu - ../src/asf/xmega/drivers/ioport - ../src/asf/xmega/drivers/nvm - ../src/asf/xmega/drivers/sleep - ../src/asf/common/services/clock - ../src/asf/common/services/delay - ../src/asf/common/services/sleepmgr - ../src/asf/common/services/usb - ../src/asf/common/services/usb/class/cdc - ../src/asf/common/services/usb/udc - ../src/asf/xmega/drivers/usb - ../src/asf/common/utils/stdio/stdio_usb - ../src/asf/xmega/drivers/spi - ../src/asf/common/services/spi/xmega_spi - ../src/asf/common/services/spi - ../src/asf/xmega/drivers/pmic - ../src/asf/xmega/drivers/tc - ../src/asf/xmega/drivers/rtc - ../src/asf/xmega/drivers/usart - - - Optimize more (-O2) - -fdata-sections - True - -Werror-implicit-function-declaration -Wmissing-prototypes -Wpointer-arith -Wstrict-prototypes -mrelax -std=gnu99 - - - BOARD=USER_BOARD - - - - - ../src - ../src/asf/common/applications/user_application/user_board - ../src/asf/common/boards - ../src/asf/common/boards/user_board - ../src/asf/common/utils - ../src/asf/xmega/utils - ../src/asf/xmega/utils/preprocessor - ../src/config - ../src/asf/common/services/usb/class/cdc/device - ../src/asf/xmega/drivers/cpu - ../src/asf/xmega/drivers/ioport - ../src/asf/xmega/drivers/nvm - ../src/asf/xmega/drivers/sleep - ../src/asf/common/services/clock - ../src/asf/common/services/delay - ../src/asf/common/services/sleepmgr - ../src/asf/common/services/usb - ../src/asf/common/services/usb/class/cdc - ../src/asf/common/services/usb/udc - ../src/asf/xmega/drivers/usb - ../src/asf/common/utils/stdio/stdio_usb - ../src/asf/xmega/drivers/spi - ../src/asf/common/services/spi/xmega_spi - ../src/asf/common/services/spi - ../src/asf/xmega/drivers/pmic - ../src/asf/xmega/drivers/tc - ../src/asf/xmega/drivers/rtc - ../src/avr-stl/include - ../src/asf/xmega/drivers/usart - - - Optimize more (-O2) - - - libprintf_flt.a - libc.a - libm - - - -Wl,-u,vfprintf -lm - - - ../src - ../src/asf/common/applications/user_application/user_board - ../src/asf/common/boards - ../src/asf/common/boards/user_board - ../src/asf/common/utils - ../src/asf/xmega/utils - ../src/asf/xmega/utils/preprocessor - ../src/config - ../src/asf/common/services/usb/class/cdc/device - ../src/asf/xmega/drivers/cpu - ../src/asf/xmega/drivers/ioport - ../src/asf/xmega/drivers/nvm - ../src/asf/xmega/drivers/sleep - ../src/asf/common/services/clock - ../src/asf/common/services/delay - ../src/asf/common/services/sleepmgr - ../src/asf/common/services/usb - ../src/asf/common/services/usb/class/cdc - ../src/asf/common/services/usb/udc - ../src/asf/xmega/drivers/usb - ../src/asf/common/utils/stdio/stdio_usb - ../src/asf/xmega/drivers/spi - ../src/asf/common/services/spi/xmega_spi - ../src/asf/common/services/spi - ../src/asf/xmega/drivers/pmic - ../src/asf/xmega/drivers/tc - ../src/asf/xmega/drivers/rtc - ../src/avr-stl/include - ../src/asf/xmega/drivers/usart - - - + True + True + True + True + False + + + BOARD=USER_BOARD + + + + + ../src + ../src/asf/common/applications/user_application/user_board + ../src/asf/common/boards + ../src/asf/common/boards/user_board + ../src/asf/common/utils + ../src/asf/xmega/utils + ../src/asf/xmega/utils/preprocessor + ../src/config + ../src/asf/common/services/usb/class/cdc/device + ../src/asf/xmega/drivers/cpu + ../src/asf/xmega/drivers/ioport + ../src/asf/xmega/drivers/nvm + ../src/asf/xmega/drivers/sleep + ../src/asf/common/services/clock + ../src/asf/common/services/delay + ../src/asf/common/services/sleepmgr + ../src/asf/common/services/usb + ../src/asf/common/services/usb/class/cdc + ../src/asf/common/services/usb/udc + ../src/asf/xmega/drivers/usb + ../src/asf/common/utils/stdio/stdio_usb + ../src/asf/xmega/drivers/spi + ../src/asf/common/services/spi/xmega_spi + ../src/asf/common/services/spi + ../src/asf/xmega/drivers/pmic + ../src/asf/xmega/drivers/tc + ../src/asf/xmega/drivers/rtc + ../src/asf/xmega/drivers/usart + + + Optimize more (-O2) + -fdata-sections + True + -Werror-implicit-function-declaration -Wmissing-prototypes -Wpointer-arith -Wstrict-prototypes -mrelax -std=gnu99 + + + BOARD=USER_BOARD + + + + + ../src + ../src/asf/common/applications/user_application/user_board + ../src/asf/common/boards + ../src/asf/common/boards/user_board + ../src/asf/common/utils + ../src/asf/xmega/utils + ../src/asf/xmega/utils/preprocessor + ../src/config + ../src/asf/common/services/usb/class/cdc/device + ../src/asf/xmega/drivers/cpu + ../src/asf/xmega/drivers/ioport + ../src/asf/xmega/drivers/nvm + ../src/asf/xmega/drivers/sleep + ../src/asf/common/services/clock + ../src/asf/common/services/delay + ../src/asf/common/services/sleepmgr + ../src/asf/common/services/usb + ../src/asf/common/services/usb/class/cdc + ../src/asf/common/services/usb/udc + ../src/asf/xmega/drivers/usb + ../src/asf/common/utils/stdio/stdio_usb + ../src/asf/xmega/drivers/spi + ../src/asf/common/services/spi/xmega_spi + ../src/asf/common/services/spi + ../src/asf/xmega/drivers/pmic + ../src/asf/xmega/drivers/tc + ../src/asf/xmega/drivers/rtc + ../src/avr-stl/include + ../src/asf/xmega/drivers/usart + + + Optimize more (-O2) + + + libprintf_flt.a + libc.a + libm + + + -Wl,-u,vfprintf -lm + + + ../src + ../src/asf/common/applications/user_application/user_board + ../src/asf/common/boards + ../src/asf/common/boards/user_board + ../src/asf/common/utils + ../src/asf/xmega/utils + ../src/asf/xmega/utils/preprocessor + ../src/config + ../src/asf/common/services/usb/class/cdc/device + ../src/asf/xmega/drivers/cpu + ../src/asf/xmega/drivers/ioport + ../src/asf/xmega/drivers/nvm + ../src/asf/xmega/drivers/sleep + ../src/asf/common/services/clock + ../src/asf/common/services/delay + ../src/asf/common/services/sleepmgr + ../src/asf/common/services/usb + ../src/asf/common/services/usb/class/cdc + ../src/asf/common/services/usb/udc + ../src/asf/xmega/drivers/usb + ../src/asf/common/utils/stdio/stdio_usb + ../src/asf/xmega/drivers/spi + ../src/asf/common/services/spi/xmega_spi + ../src/asf/common/services/spi + ../src/asf/xmega/drivers/pmic + ../src/asf/xmega/drivers/tc + ../src/asf/xmega/drivers/rtc + ../src/avr-stl/include + ../src/asf/xmega/drivers/usart + + + @@ -339,54 +339,54 @@ True - True - True - True - True - False - - - BOARD=USER_BOARD - - - - - ../src - ../src/asf/common/applications/user_application/user_board - ../src/asf/common/boards - ../src/asf/common/boards/user_board - ../src/asf/common/utils - ../src/asf/xmega/utils - ../src/asf/xmega/utils/preprocessor - ../src/config - ../src/asf/common/services/usb/class/cdc/device - ../src/asf/xmega/drivers/cpu - ../src/asf/xmega/drivers/ioport - ../src/asf/xmega/drivers/nvm - ../src/asf/xmega/drivers/sleep - ../src/asf/common/services/clock - ../src/asf/common/services/delay - ../src/asf/common/services/sleepmgr - ../src/asf/common/services/usb - ../src/asf/common/services/usb/class/cdc - ../src/asf/common/services/usb/udc - ../src/asf/xmega/drivers/usb - ../src/asf/common/utils/stdio/stdio_usb - ../src/asf/xmega/drivers/spi - ../src/asf/common/services/spi/xmega_spi - ../src/asf/common/services/spi - ../src/asf/xmega/drivers/pmic - ../src/asf/xmega/drivers/tc - ../src/asf/xmega/drivers/rtc - ../src/asf/xmega/drivers/usart - - - Optimize (-O1) - -fdata-sections - Maximum (-g3) - True - -Werror-implicit-function-declaration -Wmissing-prototypes -Wpointer-arith -Wstrict-prototypes -mrelax -std=gnu99 - + True + True + True + True + False + + + BOARD=USER_BOARD + + + + + ../src + ../src/asf/common/applications/user_application/user_board + ../src/asf/common/boards + ../src/asf/common/boards/user_board + ../src/asf/common/utils + ../src/asf/xmega/utils + ../src/asf/xmega/utils/preprocessor + ../src/config + ../src/asf/common/services/usb/class/cdc/device + ../src/asf/xmega/drivers/cpu + ../src/asf/xmega/drivers/ioport + ../src/asf/xmega/drivers/nvm + ../src/asf/xmega/drivers/sleep + ../src/asf/common/services/clock + ../src/asf/common/services/delay + ../src/asf/common/services/sleepmgr + ../src/asf/common/services/usb + ../src/asf/common/services/usb/class/cdc + ../src/asf/common/services/usb/udc + ../src/asf/xmega/drivers/usb + ../src/asf/common/utils/stdio/stdio_usb + ../src/asf/xmega/drivers/spi + ../src/asf/common/services/spi/xmega_spi + ../src/asf/common/services/spi + ../src/asf/xmega/drivers/pmic + ../src/asf/xmega/drivers/tc + ../src/asf/xmega/drivers/rtc + ../src/asf/xmega/drivers/usart + + + Optimize (-O1) + -fdata-sections + Maximum (-g3) + True + -Werror-implicit-function-declaration -Wmissing-prototypes -Wpointer-arith -Wstrict-prototypes -mrelax -std=gnu99 + -- GitLab