From 6f04232d32639cee1533afe4bfc84e683e0fdc8f Mon Sep 17 00:00:00 2001 From: skarg Date: Fri, 23 Mar 2007 17:07:13 +0000 Subject: [PATCH] Updated for running the PIC demo. --- bacnet-stack/config.h | 4 +-- bacnet-stack/demo/object/lc.ide | Bin 35986 -> 35986 bytes bacnet-stack/ports/pic18/readme.txt | 24 ++++++++++++++---- .../ports/pic18f6720/BACnet-Server.mcw | Bin 54272 -> 54272 bytes 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/bacnet-stack/config.h b/bacnet-stack/config.h index 4cb16690..1c0233f3 100644 --- a/bacnet-stack/config.h +++ b/bacnet-stack/config.h @@ -12,8 +12,8 @@ /* This is used in constructing messages and to tell others our limits */ /* 50 is the minimum; adjust to your memory and physical layer constraints */ /* Lon=206, MS/TP=480, ARCNET=480, Ethernet=1476 */ -/* #define MAX_APDU 50 */ -#define MAX_APDU 480 +#define MAX_APDU 50 +/* #define MAX_APDU 480 */ /* #define MAX_APDU 1476 */ /* for confirmed messages, this is the number of transactions */ diff --git a/bacnet-stack/demo/object/lc.ide b/bacnet-stack/demo/object/lc.ide index 59b0bcbb8d052e1c3502fa2425de828c8b7fb825..3b03717d1abff20656241c351ca4bb0dfd0d120c 100644 GIT binary patch delta 2448 zcmZ8iYfw~W80H*sLE8jJ1T$_f7l|BqCpTq~**0BV1O()&qRAj2a!1$YzJS4+Ge*Rl zrV}z|W{S&2mzv3#sm#c%9JR$u0X4IxRL)dR!=z(Q-}k=f>@uAnyw7=_=Y78SJNunO z_YtxCh}fm~zFOe$IJRWstnu0`L1}+Ru}=`*u)pi=^cFgx!#7lDhxdKM+25~yGlh10 zu%Gd1@oIs+IJi&g<-snye@v`GXtuA{s6`>r-u%Lu*-VF+_++unVXuw?oiHrS+J2h;kwFr+t$rqdAhvRNED4ZWEI zX3?h~I$1IFgJPXoZ0!dNDtI!UGf0@NGs z;VFYf8PVRKo%-Ix!$%FD=LAB2Mv|w78TvCS$Pkjb1?FZb6!Yj@STheJ|DGyKAVXBP zhQMYSbY@2@$15BxGn|?(WNYvYY>-EJk{zZjd3b|4BFPbx6H6h*Ine~VbE3tF(=d`# zN%zZg3ke*O!INA{RmrJw8@tGIWg`s_cHmv>4%E&Q z`6u1QlxT68kv1n3m8|6Xy(Ku(R7pO+OWH|u-0F71(Vdx`dayGcdrBC!t`tW*S&B`nZY%GO&JFFmBsV+DJoIrcvn~+@A7?6z6!Blj1zt>&qZuw*jTX!V^0J@ zR|Rfql*;1@dTjTDU`3^dhnG|mqYZ}R#5gLkV@{O;Gn#@Ss|u~ws(55B2E!#{9#x@L zQ=Ni>G6eQkqjk8N_LUU^52`h;d7rCUj>eu4D5#<5$bYV*HOpO=n>E|`Sh2e>xsu8W zDnIO^)H@-taJM@(ZTCyOrE53sWN9c|o}mgRTGJE?aVGbgdra;%2TevCYa|pNo9Gbo zu~zLdy2jc+1K-@EM!Q!SD9sv#DPgeMOcT8oHVO4+Jkfn-T5p_DzYrBrOaHqf7Ei*~ zT6A?vR5_!@YU$jMKktO6>X!3u>FX$Dn8}TGY9D^;`32|dmf?7hnQ*TTqZZba*Pxn& z%zBFA*8TM;pRcFQ9bodq8M3;8tPaK(Ntn02)36d(xESGt+cS9IMtXM2NOqnZF}k6V zqO%zFaie?XKN@ip5lu8$50kewx#fdRC|_>kzjk*sneH&ts%E#TrWuzwF3C%yoG>v% zo^L_fV4-dklUpqA?hh?S{urNF@IYx>u#{3c)bb+d&+}SogXJ5>AX&oc z?6cI-N}j*xJKz%u`}sTIF9~1rnuH~7QVzpg+bAb`fdk%_uz}%gZG78y#ol7U|B)_t zg}{GMcD*!P@OZs$&Wq6cs?A>?RX3367OdpI$nZ)l@yb94)JXW0|0JBT;`BdT&&~P|Apt|b delta 2468 zcmY*bZA_C_6z+YgrP9}dvr{yFU{Tf)C(R_YMS`88t$>K2_yJCa1rZTMv3$1`6*X~; zd4Oq#M4fX)-KN%UsBC^D!;cY%+75@Cb%m*OWMjq{XPnu2&wb4tKYE_`d7k^+b8k;u zcJ3B-?iT9Jf!bvrg>in*G0W9KOzj@2+RE6w?tOv1fov0O2_DC4;N#$Me7zK$#%kPS zLM%fB?J{@nm_wrSqG)7pZKP4fD&2DpQ35l&tKT?078K`DkUm(6=uynRAU~%zQ{)h=iqP=_VO z0jfE6VTS`8SS~u?5f-x(3KQ%?l@snHSjG02Oe}^HE-;8m)Cp})cstQ9JaobjiB|DQ zu!+Tye2GD1l1?zVAUVk@P6#nEGx3)h>_@)91s%vYBR_-q?--1ls}ovX5I5H@^ts?m zESVc&a4_&Pd&GxAEPBn8o!5p6DwSkgv`YG3@C3m&o0)W55-q9EzYAk>G9;=ZCt4~;dAXBA0b#jB zrt`8Rm&lG>%22N)Ep8<}xmJ>PijxEUDKambw(->ZAt!IDl;4s^E#1q@lAaP)@jeVg zJ+Nn0nnXQVl|pOIhIn93KDBl*pSHM{Z=_=k1VO~=crrcJ_d@Y%3O=+tR$6|Kmxuy- zvK7RVud}WfJ}H<+I85({-wGBHZbxicGm~OP4b-opBX#idbPc~Yy$0SaG)Uojg`A1k zz<$nn3TZ`9Q9Na2X<$JSS!;`8iK)`SMb11aBCBC-5(&FBP_ve-C)V7_T^h(P=J(jQuM_qZPa#WNQ!jKEFPGXfuA}5aUJmfmvyP{RiV(VSSsgQr=QN_l8J6Xv(HY$1<1kkS>%f%c9iM)Q?VO433vgruIU|d*N;w zMTM4gZx&K%9<8u#Q zcyJ}ZyBj(`%&Da4ib@_G7Vd|Wl{~I&Me^k;>D}I0 z%}qzqG_9JOGSO6AOcya=e4DHc#+_)4^Bw_xs@shef)^XAT;u zXeX6?UiLcqnr*n|rjxG`Z9Op5#SfUNz6FUgzA@hmTU^}p6u+WQ%lJ0>|B|s%>xEZ0 za!(lIWgB@;sNjPSWIQS87F^vZ9owy{$z@vnZ$rVP7yO$(m?Lm)I`Tgu@ws5$%%?1N zun$T%^K>gF9+Poah!1|3u?_i&TX;8{NBAH^#xCUFmvQS@A6(eNbDEK7wcOu1(Fap& WIp2nSv5XsVln>WZ_qS`05Be9x$|KqU diff --git a/bacnet-stack/ports/pic18/readme.txt b/bacnet-stack/ports/pic18/readme.txt index 184eea76..3b024559 100644 --- a/bacnet-stack/ports/pic18/readme.txt +++ b/bacnet-stack/ports/pic18/readme.txt @@ -6,13 +6,16 @@ the BACnet Stack using MPLAB IDE and MCC18 Compiler, 1. Add the files to the project that you need: abort.c, apdu.c, bacapp.c, bacdcode.c, bacerror.c, -bacstr.c, bigend.c, crc.c, datalink.c, dcc.c, dlmstp.c, -ima.c, mstp.c, npdu.c, rd.c, reject.c, reject.c, -ringbuf.c, rp.c, whois.c, wp.c +bacstr.c, crc.c, datetime.c, dcc.c, iam.c, +npdu.c, rd.c, reject.c, rp.c, whois.c, wp.c -From demo/object/: device.c or dev_tiny.c, ai.c, ao.c, etc. +From ports/picxx: isr.c, main.c, rs485.c, mstp.c, dlmstp.c -From demo/handler/: h_dcc.c, h_rd.c, h_rp.c, h_wp.c +From demo/object/: device.c or dev_tiny.c +objects as needed: ai.c, ao.c, etc. + +From demo/handler/: txbuf.c, h_dcc.c, h_rd.c, h_rp.c or h_rp_tiny.c +Additional handlers as needed: h_wp.c 2. Project->Options->Project @@ -27,4 +30,15 @@ Stack: Multi-bank Model MPLAB C18 Tab: General: Macro Definitions: PRINT_ENABLED=0 BACDL_MSTP=1 +TSN_ENABLED=0 BIG_ENDIAN=0 + +3. The linker script must reserve some extra stack space. + +//DATABANK NAME=gpr12 START=0xC00 END=0xCFF +//DATABANK NAME=gpr13 START=0xD00 END=0xDFF +DATABANK NAME=stackreg START=0xC00 END=0xDFF PROTECTED + +//STACK SIZE=0x100 RAM=gpr13 +STACK SIZE=0x200 RAM=stackreg + diff --git a/bacnet-stack/ports/pic18f6720/BACnet-Server.mcw b/bacnet-stack/ports/pic18f6720/BACnet-Server.mcw index 825a749ee61b35029237a7ab652ea8c63d160527..05ae9cdeac3f8c661f66a837d696dc79ace52ac8 100644 GIT binary patch literal 54272 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 K7Rmc@#{YkcUPT}P