|
From: <ak...@us...> - 2008-02-28 14:17:12
|
Revision: 862
http://can.svn.sourceforge.net/can/?rev=862&view=rev
Author: akhe
Date: 2008-02-28 06:17:02 -0800 (Thu, 28 Feb 2008)
Log Message:
-----------
Fixed real life str75x CAN example for the IAR compiler
Modified Paths:
--------------
trunk/firmware/arm/str/cantest_str73x_iar/cantest.dep
trunk/firmware/arm/str/cantest_str73x_iar/settings/cantest.dbgdt
trunk/firmware/arm/str/cantest_str73x_iar/settings/cantest.dni
trunk/firmware/arm/str/cantest_str73x_iar/settings/cantest.wsdt
trunk/firmware/arm/str/cantest_str75x_iar/cantest.dep
trunk/firmware/arm/str/cantest_str75x_iar/cantest.ewd
trunk/firmware/arm/str/cantest_str75x_iar/cantest.ewp
trunk/firmware/arm/str/cantest_str75x_iar/main.c
trunk/firmware/arm/str/cantest_str75x_iar/settings/cantest.cspy.bat
trunk/firmware/arm/str/cantest_str75x_iar/settings/cantest.dbgdt
trunk/firmware/arm/str/cantest_str75x_iar/settings/cantest.dni
trunk/firmware/arm/str/cantest_str75x_iar/settings/cantest.wsdt
trunk/firmware/arm/str/cantest_str75x_iar/str75x_lib/src/75x_can.c
Added Paths:
-----------
trunk/LPC2_CANFull_V110/
trunk/LPC2_CANFull_V110/Flash/
trunk/LPC2_CANFull_V110/Flash/LPC_FullCAN_SW.elf
trunk/LPC2_CANFull_V110/Flash/LPC_FullCAN_SW.hex
trunk/LPC2_CANFull_V110/Flash.ld
trunk/LPC2_CANFull_V110/LPC21XX.H
trunk/LPC2_CANFull_V110/LPC_FullCAN_SW.Opt
trunk/LPC2_CANFull_V110/LPC_FullCAN_SW.Uv2
trunk/LPC2_CANFull_V110/LPC_FullCAN_SW.c
trunk/LPC2_CANFull_V110/LPC_FullCAN_SW.h
trunk/LPC2_CANFull_V110/Startup.s
trunk/LPC2_CANFull_V110/main_FullCAN.c
trunk/LPC2_CANFull_V110/readme.txt
trunk/firmware/arm/str/cantest_str75x_iar/75x_conf.h
trunk/firmware/arm/str/cantest_str75x_iar/75x_it.c
Removed Paths:
-------------
trunk/firmware/arm/str/cantest_str75x_iar/73x_conf.h
trunk/firmware/arm/str/cantest_str75x_iar/73x_it.c
trunk/firmware/arm/str/cantest_str75x_iar/73x_lcd.c
trunk/firmware/arm/str/cantest_str75x_iar/73x_lcd.h
trunk/firmware/arm/str/cantest_str75x_iar/Startup/73x_init.s
trunk/firmware/arm/str/cantest_str75x_iar/Startup/73x_vect.s
trunk/firmware/arm/str/cantest_str75x_iar/linker/STR73x_FLASH.icf
trunk/firmware/arm/str/cantest_str75x_iar/linker/STR73x_RAM.icf
Property Changed:
----------------
trunk/firmware/arm/str/
trunk/firmware/arm/str/cantest_str75x_iar/
trunk/firmware/arm/str/vcp_str75x_iar/project/
Added: trunk/LPC2_CANFull_V110/Flash/LPC_FullCAN_SW.elf
===================================================================
(Binary files differ)
Property changes on: trunk/LPC2_CANFull_V110/Flash/LPC_FullCAN_SW.elf
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/LPC2_CANFull_V110/Flash/LPC_FullCAN_SW.hex
===================================================================
--- trunk/LPC2_CANFull_V110/Flash/LPC_FullCAN_SW.hex (rev 0)
+++ trunk/LPC2_CANFull_V110/Flash/LPC_FullCAN_SW.hex 2008-02-28 14:17:02 UTC (rev 862)
@@ -0,0 +1,301 @@
+:1000000018F09FE518F09FE518F09FE518F09FE5C0
+:1000100018F09FE50000A0E1F0FF1FE518F09FE554
+:1000200058000000400000004400000048000000AC
+:100030004C000000000000005000000054000000D0
+:10004000FEFFFFEAFEFFFFEAFEFFFFEAFEFFFFEA18
+:10005000FEFFFFEAFEFFFFEADC009FE5AA10A0E337
+:100060005520A0E32430A0E3043080E50130A0E374
+:10007000003080E50C1080E50C2080E5083090E52C
+:10008000013B13E2FCFFFF0A0330A0E3003080E5F0
+:100090000C1080E50C2080E5A0009FE50410A0E393
+:1000A000041080E50210A0E3001080E590009FE5B9
+:1000B000DBF021E300D0A0E1040040E2D7F021E32F
+:1000C00000D0A0E1040040E2D1F021E300D0A0E1A3
+:1000D000040040E2D2F021E300D0A0E1800040E241
+:1000E000D3F021E300D0A0E1040040E210F021E3CE
+:1000F00000D0A0E101AB4DE248109FE548209FE50C
+:1001000048309FE5030052E104009134040082343A
+:10011000FBFFFF3A0000A0E334109FE534209FE589
+:10012000020051E104008134FCFFFF3A04E08FE259
+:1001300024009FE510FF2FE1FEFFFFEA80C01FE0D3
+:1001400000C01FE000400040C0120000000000405E
+:100150000000004000000040240100407C0F00002F
+:100160000DC0A0E100D82DE904B04CE220D04DE252
+:100170000030A0E114200BE5BE304BE1B0114BE1A3
+:10018000B0315BE10F0053E30200009A0030A0E3BE
+:1001900024300BE58D0000EABE305BE128300BE532
+:1001A00028301BE5010053E30300000A28301BE55B
+:1001B000020053E30A00000A130000EA4E22A0E303
+:1001C0000B2982E24E32A0E30B3983E2003093E543
+:1001D000013783E3003082E50030A0E320300BE5F7
+:1001E0000C0000EA4E22A0E30B2982E24E32A0E38B
+:1001F0000B3983E2003093E5053983E3003082E573
+:10020000013AA0E320300BE5020000EA0030A0E351
+:1002100024300BE56D0000EAB8219FE50030A0E333
+:10022000B030C2E10E32A0E30F3983E20120A0E337
+:10023000002083E520301BE50331A0E10E3283E28C
+:10024000113983E218300BE518201BE50130A0E3DB
+:10025000003082E520301BE50331A0E10E3283E25D
+:10026000113983E2103083E218300BE518201BE5CA
+:100270000030A0E3003082E520301BE50331A0E12F
+:100280008E3283E2113983E218300BE518201BE52A
+:100290000030A0E3003082E520301BE50331A0E10F
+:1002A0000E3283E2113983E2143083E218300BE519
+:1002B00018201BE514301BE5003082E52233A0E353
+:1002C000C339A0E118300BE5B0315BE10321A0E1B7
+:1002D00018301BE5023083E018300BE50932A0E34B
+:1002E000C339A0E11C300BE5B0315BE10321A0E193
+:1002F0001C301BE5023083E01C300BE5BE305BE1B7
+:100300002C300BE52C301BE5010053E30300000A01
+:100310002C301BE5020053E30B00000A150000EA35
+:1003200018201BE5B0309FE5003082E51C201BE55E
+:100330003A30A0E3003082E5FE3EE0E30F3043E2D6
+:100340000123A0E3002083E50D0000EA18201BE54F
+:1003500088309FE5003082E51C201BE53B30A0E3A0
+:10036000003082E5FE3EE0E30F3043E20223A0E3EB
+:10037000002083E5020000EA0030A0E324300BE512
+:10038000120000EA20301BE50331A0E10E3283E2C7
+:10039000113983E2103083E218300BE518201BE599
+:1003A0000130A0E3003082E520301BE50331A0E1FD
+:1003B0000E3283E2113983E218300BE518201BE579
+:1003C0000030A0E3003082E50130A0E324300BE5EB
+:1003D00024001BE500A81BE900000040540B0000AE
+:1003E000C40C00000DC0A0E100D82DE904B04CE21F
+:1003F0002CD04DE20030A0E114100BE5BE304BE1F3
+:10040000BE305BE1000053E30300000ABE305BE155
+:10041000020053E30000008A020000EA0030A0E37B
+:1004200038300BE5D40000EA0E32A0E30F3983E246
+:100430000120A0E3002083E544339FE5B030D3E101
+:100440000338A0E14338A0E1000053E30300001AA1
+:1004500030239FE5DF3DA0E33F3083E2003082E5BB
+:100460001C339FE5B030D3E10338A0E14338A0E16D
+:10047000130053E3020000DA0030A0E338300BE54C
+:10048000BD0000EA14301BE5833AA0E1A33AA0E1E5
+:1004900014300BE5BE305BE18326A0E114301BE590
+:1004A000023083E114300BE50030A0E318300BE597
+:1004B000CC329FE5B030D3E10338A0E14328A0E17E
+:1004C00018301BE5020053E10000003A110000EA79
+:1004D000B0129FE518201BE50230A0E18330A0E1B7
+:1004E000023083E00331A0E1013083E0003093E586
+:1004F0000338A0E12338A0E114201BE5020053E1FA
+:100500000000009A030000EA18301BE5013083E286
+:1005100018300BE5E5FFFFEA68129FE518201BE5A0
+:100520000230A0E18330A0E1023083E00331A0E19A
+:10053000013083E0003093E520300BE544129FE565
+:1005400018201BE50230A0E18330A0E1023083E0F7
+:100550000331A0E1012083E014301BE5003082E587
+:100560001C229FE518329FE5B030D3E1013083E2D1
+:10057000B030C2E108329FE5B030D3E10338A0E1EA
+:100580004328A0E118301BE5020053E10000003AC7
+:10059000170000EA18301BE5013083E218300BE544
+:1005A000E0119FE518201BE50230A0E18330A0E1B7
+:1005B000023083E00331A0E1013083E0003093E5B5
+:1005C00024300BE5BC119FE518201BE50230A0E1AB
+:1005D0008330A0E1023083E00331A0E1012083E019
+:1005E00020301BE5003082E524301BE520300BE590
+:1005F000DFFFFFEA0030A0E318300BE54E32A0E346
+:100600000F3983E218201BE5002083E50E32A0E3BA
+:100610000E3983E234300BE50030A0E31C300BE5EB
+:100620005C319FE5B030D3E10338A0E14338A0E16D
+:10063000012083E2C23FA0E1A33FA0E1033082E0BA
+:10064000C320A0E11C301BE5020053E10000003A8A
+:10065000290000EA2C119FE51C201BE50230A0E1D7
+:100660008330A0E1023083E08331A0E1013083E0F8
+:10067000003093E50338A0E12338A0E128300BE5F2
+:1006800000019FE51C201BE50C10A0E30230A0E157
+:100690008330A0E1023083E08331A0E1003083E0C9
+:1006A000013083E0003093E50338A0E12338A0E176
+:1006B0002C300BE528301BE50328A0E12C301BE58E
+:1006C000033082E030300BE534201BE530301BE591
+:1006D000003082E518301BE5043083E218300BE56A
+:1006E00034301BE5043083E234300BE51C301BE56D
+:1006F000013083E21C300BE5C8FFFFEA34201BE524
+:10070000F73CA0E3FF3083E2033883E1003082E569
+:1007100018301BE5043083E218300BE58E32A0E37D
+:100720000F3983E218201BE5002083E5CE32A0E3D9
+:100730000F3983E218201BE5002083E50E32A0E389
+:100740000F3983E2103083E218201BE5002083E597
+:100750000E32A0E30F3983E2143083E218201BE548
+:10076000002083E50E32A0E30F3983E20020A0E3EE
+:10077000002083E50130A0E338300BE538001BE5AD
+:1007800000A81BE900000040200000400DC0A0E1CF
+:1007900000D82DE904B04CE20CD04DE20030A0E1CD
+:1007A000BE304BE1BE305BE10F0053E30200009A24
+:1007B0000030A0E318300BE51B0000EA2233A0E371
+:1007C000C339A0E114300BE5BE305BE10321A0E1A9
+:1007D00014301BE5023083E014300BE514201BE5D8
+:1007E0004C309FE5003082E50932A0E3C339A0E137
+:1007F00014300BE5BE305BE10321A0E114301BE5B2
+:10080000023083E014300BE514201BE53330A0E305
+:10081000003082E5FE3EE0E30F3043E20227A0E332
+:10082000002083E50130A0E318300BE518001BE53C
+:1008300000A81BE93C0B00000DC0A0E100D82DE989
+:1008400004B04CE21CD04DE20030A0E114100BE5E6
+:10085000BE304BE1BE305BE128300BE528301BE5B4
+:10086000010053E30300000A28301BE5020053E3B4
+:100870000300000A050000EA0030A0E320300BE589
+:10088000050000EA013AA0E320300BE5020000EA8F
+:100890000030A0E324300BE53F0000EA20301BE5E8
+:1008A0000331A0E10E3283E2113983E21C3083E28E
+:1008B00018300BE518301BE5003093E5043003E2F7
+:1008C000000053E30200001A0030A0E324300BE5DF
+:1008D000310000EA20301BE50331A0E10E3283E253
+:1008E000113983E2303083E218300BE518201BE524
+:1008F00014301BE5003093E50F3803E2003082E549
+:1009000018301BE5043083E218300BE518201BE596
+:1009100014301BE5003093E5833AA0E1A33AA0E14F
+:10092000003082E514301BE5043083E21C300BE517
+:1009300018301BE5043083E218300BE518201BE566
+:100940001C301BE5003093E5003082E51C301BE5D0
+:10095000043083E21C300BE518301BE5043083E2E1
+:1009600018300BE518201BE51C301BE5003093E523
+:10097000003082E520301BE50331A0E14E3283E2F6
+:10098000113983E218300BE518201BE53030A0E365
+:10099000003082E50130A0E324300BE524001BE5A4
+:1009A00000A81BE90DC0A0E100D82DE904B04CE27D
+:1009B0001CD04DE20030A0E114100BE5BE304BE13D
+:1009C000BE305BE1000053E30300000ABE305BE190
+:1009D000020053E30000008A020000EA0030A0E3B6
+:1009E00028300BE5500000EA44319FE51C300BE550
+:1009F00014301BE520300BE5BE305BE18336A0E10F
+:100A000024300BE524301BE5033483E324300BE56D
+:100A10000030A0E3B6314BE1B6215BE114319FE534
+:100A2000B030D3E10338A0E14338A0E1030052E144
+:100A3000000000BA3A0000EA1C301BE5003093E5E4
+:100A40003F33C3E3FF38C3E37F3DC3E33F30C3E33A
+:100A500024201BE5020053E12A00001A1C201BE59C
+:100A60001C301BE5003093E50334C3E3003082E51E
+:100A700020201BE51C301BE5003093E5003082E5AB
+:100A80001C301BE5043083E21C300BE520301BE5F5
+:100A9000043083E220300BE520201BE51C301BE5F1
+:100AA000003093E5003082E51C301BE5043083E222
+:100AB0001C300BE520301BE5043083E220300BE5D1
+:100AC00020201BE51C301BE5003093E5003082E55B
+:100AD0001C301BE5083043E21C300BE520301BE5E1
+:100AE000083043E220300BE51C301BE5003093E575
+:100AF000033403E2000053E30200001A0130A0E3D4
+:100B000028300BE5080000EAB6315BE1013083E2F2
+:100B1000B6314BE11C301BE50C3083E21C300BE599
+:100B2000BCFFFFEA0030A0E328300BE528001BE5FE
+:100B300000A81BE9200000400000004004C02DE593
+:100B40000DC0A0E100D82DE904B04CE20000A0E106
+:100B5000FEFFFFEA04C02DE50DC0A0E10CD82DE991
+:100B600004B04CE208D04DE20E32A0E3113983E22A
+:100B7000203083E2003093E5FF35C3E3FF39C3E360
+:100B8000EF3DC3E33F30C3E3000053E34000001AEE
+:100B90000E32A0E3113983E2203083E2003093E586
+:100BA000032BA0E1222BA0E10230A0E18330A0E1E1
+:100BB000023083E00321A0E100319FE5023083E0B1
+:100BC00020300BE50E32A0E3113983E2203083E2BE
+:100BD000003093E5FF35C3E30336C3E32338A0E1D8
+:100BE0000338A0E11C300BE51C301BE5013483E326
+:100BF000023A83E31C300BE50E32A0E3113983E2A5
+:100C0000243083E2003093E5833AA0E1A33AA0E1E7
+:100C10001C201BE5033082E11C300BE520201BE586
+:100C20001C301BE5003082E520301BE5043083E2F8
+:100C300020300BE520201BE50E32A0E3113983E2C2
+:100C4000283083E2003093E5003082E520301BE558
+:100C5000043083E220300BE520201BE50E32A0E3B8
+:100C6000113983E22C3083E2003093E5003082E5D5
+:100C70001C301BE5033483E31C300BE520301BE5FF
+:100C8000083043E220300BE520201BE51C301BE53B
+:100C9000003082E54E32A0E3113983E20420A0E364
+:100CA000002083E53F3DE0E30F3043E20020E0E336
+:100CB000002083E50C681BE90010BDE804F05EE24B
+:100CC0002000004004C02DE50DC0A0E10CD82DE9A6
+:100CD00004B04CE208D04DE20E32A0E3123983E2B8
+:100CE000203083E2003093E5FF35C3E3FF39C3E3EF
+:100CF000EF3DC3E33F30C3E3000053E34000001A7D
+:100D00000E32A0E3123983E2203083E2003093E513
+:100D1000032BA0E1222BA0E10230A0E18330A0E16F
+:100D2000023083E00321A0E100319FE5023083E03F
+:100D300020300BE50E32A0E3123983E2203083E24B
+:100D4000003093E5FF35C3E30336C3E32338A0E166
+:100D50000338A0E11C300BE51C301BE5013483E3B4
+:100D6000013983E31C300BE50E32A0E3123983E234
+:100D7000243083E2003093E5833AA0E1A33AA0E176
+:100D80001C201BE5033082E11C300BE520201BE515
+:100D90001C301BE5003082E520301BE5043083E287
+:100DA00020300BE520201BE50E32A0E3123983E250
+:100DB000283083E2003093E5003082E520301BE5E7
+:100DC000043083E220300BE520201BE50E32A0E347
+:100DD000123983E22C3083E2003093E5003082E563
+:100DE0001C301BE5033483E31C300BE520301BE58E
+:100DF000083043E220300BE520201BE51C301BE5CA
+:100E0000003082E54E32A0E3123983E20420A0E3F1
+:100E1000002083E53F3DE0E30F3043E20020E0E3C4
+:100E2000002083E50C681BE90010BDE804F05EE2D9
+:100E30002000004004C02DE50DC0A0E100D82DE940
+:100E400004B04CE20000A0E1FEFFFFEA04C02DE583
+:100E50000DC0A0E10CD82DE904B04CE238209FE58C
+:100E600034309FE5003093E5013083E2003082E5C5
+:100E70000E32A0E3013983E20120A0E3002083E5E4
+:100E80003F3DE0E30F3043E20020E0E3002083E554
+:100E90000C681BE90010BDE804F05EE22001004090
+:100EA0000DC0A0E100D82DE904B04CE20CD04DE219
+:100EB00010000BE570309FE5003093E514300BE532
+:100EC00014201BE510301BE5030052E10A00009AD4
+:100ED00014301BE510201BE5033062E0000053E3F3
+:100EE000020000BA0130A0E318300BE50C0000EA64
+:100EF0000030A0E318300BE5090000EA10301BE5D4
+:100F000014201BE5033062E0020153E30200009A63
+:100F10000130A0E318300BE5010000EA0030A0E347
+:100F200018300BE518001BE500A81BE92001004064
+:100F30000DC0A0E100D82DE904B04CE204D04DE290
+:100F400010000BE52C309FE510201BE5003093E5E9
+:100F5000033082E010300BE510001BE5CFFFFFEB04
+:100F60000030A0E10338A0E14338A0E1000053E3E2
+:100F7000F8FFFF0A00A81BE9200100400DC0A0E116
+:100F800000D82DE904B04CE210D04DE20132A0E3CC
+:100F90001C300BE50E32A0E37F3983E2013C83E293
+:100FA0000120A0E30020C3E50E32A0E30A3983E26A
+:100FB000183083E2FF28A0E3002083E5FE3EE0E353
+:100FC0000B3043E20020E0E3002083E5FF3EE0E356
+:100FD000033043E20020A0E3002083E53F3DE0E34F
+:100FE0000B3043E2CC229FE5002083E50100A0E323
+:100FF0000010A0E30727A0E31D2082E257FCFFEBCF
+:101000000200A0E30110A0E30727A0E31D2082E275
+:1010100052FCFFEB0200A0E3DBFDFFEB0E22A0E39E
+:10102000012982E2182082E25D3DA0E32F3083E2B5
+:10103000003082E50E32A0E3013983E2143083E20E
+:101040000320A0E3002083E50139A0E34E3283E2D0
+:101050000120A0E3002083E5EF3EE0E3033043E21C
+:1010600054229FE5002083E5DF3EE0E3033043E2C6
+:101070002420A0E3002083E5FE3EE0E30F3043E2BE
+:101080001020A0E3002083E50200A0E3011CA0E300
+:10109000011081E2D2FCFFEB0200A0E3021CA0E3FE
+:1010A000011081E2CEFCFFEB0100A0E3011CA0E3F4
+:1010B000021081E2CAFCFFEB0100A0E3021CA0E3E6
+:1010C000021081E2C6FCFFEB6400A0E397FFFFEB98
+:1010D0000237A0E3013C83E2023083E218300BE5E3
+:1010E0000030A0E314300BE50030A0E310300BE536
+:1010F00018304BE20200A0E30310A0E1CDFDFFEBAE
+:101100001C301BE58330A0E11C300BE51C301BE5D7
+:10111000020553E30100009A0138A0E31C300BE5FF
+:101120000E32A0E30A3983E2143083E21C201BE56F
+:10113000002083E518304BE20100A0E30310A0E19A
+:1011400017FEFFEB0030A0E10338A0E14338A0E137
+:10115000000053E32300000A18301BE5832AA0E1B6
+:10116000A22AA0E1013CA0E3023083E2030052E1A5
+:101170000A00001A18301BE5FF3083E218300BE537
+:1011800014301BE5023083E214300BE518304BE2DB
+:101190000100A0E30310A0E1A6FDFFEB110000EAAF
+:1011A00018301BE5832AA0E1A22AA0E1023CA0E3BB
+:1011B000023083E2030052E10A00001A18301BE5F6
+:1011C000013C43E2013043E218300BE514301BE5EB
+:1011D000013043E214300BE518304BE20100A0E38C
+:1011E0000310A0E193FDFFEB18304BE20200A0E3F7
+:1011F0000310A0E1EAFDFFEB0030A0E10338A0E11D
+:101200004338A0E1000053E32200000A18301BE538
+:10121000832AA0E1A22AA0E1013CA0E3013083E2FD
+:10122000030052E10A00001A18301BE5013083E286
+:1012300018300BE510301BE5023083E210300BE56F
+:1012400018304BE20200A0E30310A0E179FDFFEBB0
+:10125000100000EA18301BE5832AA0E1A22AA0E1D1
+:10126000023CA0E3013083E2030052E10900001ACE
+:1012700018301BE5013083E218300BE510301BE518
+:10128000013043E210300BE518304BE20200A0E3DE
+:101290000310A0E167FDFFEBFA0FA0E323FFFFEBD4
+:1012A0000E32A0E30A3983E21C3083E21C201BE5E6
+:1012B000002083E591FFFFEA340E00004C0E000091
+:00000001FF
Added: trunk/LPC2_CANFull_V110/Flash.ld
===================================================================
--- trunk/LPC2_CANFull_V110/Flash.ld (rev 0)
+++ trunk/LPC2_CANFull_V110/Flash.ld 2008-02-28 14:17:02 UTC (rev 862)
@@ -0,0 +1,130 @@
+/***********************************************************************/
+/* This file is part of the ARM Compiler package */
+/* Copyright KEIL ELEKTRONIK GmbH 1992-2004 */
+/***********************************************************************/
+/* */
+/* TARGET.LD: Linker Script File */
+/* */
+/***********************************************************************/
+
+
+/*
+//*** <<< Use Configuration Wizard in Context Menu >>> ***
+*/
+
+
+/*
+// <h> Memory Configuration
+// <h> Code (Read Only)
+// <o> Start <0x0-0xFFFFFFFF>
+// <o1> Size <0x0-0xFFFFFFFF>
+// </h>
+// <h> Data (Read/Write)
+// <o2> Start <0x0-0xFFFFFFFF>
+// <o3> Size <0x0-0xFFFFFFFF>
+// </h>
+// </h>
+*/
+
+/* Memory Definitions */
+
+MEMORY
+{
+ CODE (rx) : ORIGIN = 0x00000000, LENGTH = 0x0003E000
+ DATA (rw) : ORIGIN = 0x40000000, LENGTH = 0x00004000
+}
+
+
+/* Section Definitions */
+
+SECTIONS
+{
+
+ /* first section is .text which is used for code */
+
+ .text :
+ {
+ *startup.o (.text) /* Startup code */
+ *(.text) /* remaining code */
+
+ *(.glue_7t) *(.glue_7)
+
+ } >CODE =0
+
+ . = ALIGN(4);
+
+ /* .rodata section which is used for read-only data (constants) */
+
+ .rodata :
+ {
+ *(.rodata)
+ } >CODE
+
+ . = ALIGN(4);
+
+ _etext = . ;
+ PROVIDE (etext = .);
+
+ /* .data section which is used for initialized data */
+
+ .data : AT (_etext)
+ {
+ _data = . ;
+ *(.data)
+ SORT(CONSTRUCTORS)
+ } >DATA
+ . = ALIGN(4);
+
+ _edata = . ;
+ PROVIDE (edata = .);
+
+ /* .bss section which is used for uninitialized data */
+
+ .bss :
+ {
+ __bss_start = . ;
+ __bss_start__ = . ;
+ *(.bss)
+ *(COMMON)
+ } >DATA
+ . = ALIGN(4);
+ __bss_end__ = . ;
+ __bss_end__ = . ;
+
+ _end = .;
+ PROVIDE (end = .);
+
+ /* Stabs debugging sections. */
+ .stab 0 : { *(.stab) }
+ .stabstr 0 : { *(.stabstr) }
+ .stab.excl 0 : { *(.stab.excl) }
+ .stab.exclstr 0 : { *(.stab.exclstr) }
+ .stab.index 0 : { *(.stab.index) }
+ .stab.indexstr 0 : { *(.stab.indexstr) }
+ .comment 0 : { *(.comment) }
+ /* DWARF debug sections.
+ Symbols in the DWARF debugging sections are relative to the beginning
+ of the section so we begin them at 0. */
+ /* DWARF 1 */
+ .debug 0 : { *(.debug) }
+ .line 0 : { *(.line) }
+ /* GNU DWARF 1 extensions */
+ .debug_srcinfo 0 : { *(.debug_srcinfo) }
+ .debug_sfnames 0 : { *(.debug_sfnames) }
+ /* DWARF 1.1 and DWARF 2 */
+ .debug_aranges 0 : { *(.debug_aranges) }
+ .debug_pubnames 0 : { *(.debug_pubnames) }
+ /* DWARF 2 */
+ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
+ .debug_abbrev 0 : { *(.debug_abbrev) }
+ .debug_line 0 : { *(.debug_line) }
+ .debug_frame 0 : { *(.debug_frame) }
+ .debug_str 0 : { *(.debug_str) }
+ .debug_loc 0 : { *(.debug_loc) }
+ .debug_macinfo 0 : { *(.debug_macinfo) }
+ /* SGI/MIPS DWARF 2 extensions */
+ .debug_weaknames 0 : { *(.debug_weaknames) }
+ .debug_funcnames 0 : { *(.debug_funcnames) }
+ .debug_typenames 0 : { *(.debug_typenames) }
+ .debug_varnames 0 : { *(.debug_varnames) }
+}
Added: trunk/LPC2_CANFull_V110/LPC21XX.H
===================================================================
--- trunk/LPC2_CANFull_V110/LPC21XX.H (rev 0)
+++ trunk/LPC2_CANFull_V110/LPC21XX.H 2008-02-28 14:17:02 UTC (rev 862)
@@ -0,0 +1,377 @@
+/***********************************************************************/
+/* This file is part of the uVision/ARM development tools */
+/* Copyright KEIL ELEKTRONIK GmbH 2002-2004 */
+/***********************************************************************/
+/* */
+/* LPC21XX.H: Header file for Philips LPC2114 / LPC2119 */
+/* LPC2124 / LPC2129 */
+/* LPC2194 */
+/* */
+/***********************************************************************/
+
+#ifndef __LPC21xx_H
+#define __LPC21xx_H
+
+/* Vectored Interrupt Controller (VIC) */
+#define VICIRQStatus (*((volatile unsigned long *) 0xFFFFF000))
+#define VICFIQStatus (*((volatile unsigned long *) 0xFFFFF004))
+#define VICRawIntr (*((volatile unsigned long *) 0xFFFFF008))
+#define VICIntSelect (*((volatile unsigned long *) 0xFFFFF00C))
+#define VICIntEnable (*((volatile unsigned long *) 0xFFFFF010))
+#define VICIntEnClr (*((volatile unsigned long *) 0xFFFFF014))
+#define VICSoftInt (*((volatile unsigned long *) 0xFFFFF018))
+#define VICSoftIntClr (*((volatile unsigned long *) 0xFFFFF01C))
+#define VICProtection (*((volatile unsigned long *) 0xFFFFF020))
+#define VICVectAddr (*((volatile unsigned long *) 0xFFFFF030))
+#define VICDefVectAddr (*((volatile unsigned long *) 0xFFFFF034))
+#define VICVectAddr0 (*((volatile unsigned long *) 0xFFFFF100))
+#define VICVectAddr1 (*((volatile unsigned long *) 0xFFFFF104))
+#define VICVectAddr2 (*((volatile unsigned long *) 0xFFFFF108))
+#define VICVectAddr3 (*((volatile unsigned long *) 0xFFFFF10C))
+#define VICVectAddr4 (*((volatile unsigned long *) 0xFFFFF110))
+#define VICVectAddr5 (*((volatile unsigned long *) 0xFFFFF114))
+#define VICVectAddr6 (*((volatile unsigned long *) 0xFFFFF118))
+#define VICVectAddr7 (*((volatile unsigned long *) 0xFFFFF11C))
+#define VICVectAddr8 (*((volatile unsigned long *) 0xFFFFF120))
+#define VICVectAddr9 (*((volatile unsigned long *) 0xFFFFF124))
+#define VICVectAddr10 (*((volatile unsigned long *) 0xFFFFF128))
+#define VICVectAddr11 (*((volatile unsigned long *) 0xFFFFF12C))
+#define VICVectAddr12 (*((volatile unsigned long *) 0xFFFFF130))
+#define VICVectAddr13 (*((volatile unsigned long *) 0xFFFFF134))
+#define VICVectAddr14 (*((volatile unsigned long *) 0xFFFFF138))
+#define VICVectAddr15 (*((volatile unsigned long *) 0xFFFFF13C))
+#define VICVectCntl0 (*((volatile unsigned long *) 0xFFFFF200))
+#define VICVectCntl1 (*((volatile unsigned long *) 0xFFFFF204))
+#define VICVectCntl2 (*((volatile unsigned long *) 0xFFFFF208))
+#define VICVectCntl3 (*((volatile unsigned long *) 0xFFFFF20C))
+#define VICVectCntl4 (*((volatile unsigned long *) 0xFFFFF210))
+#define VICVectCntl5 (*((volatile unsigned long *) 0xFFFFF214))
+#define VICVectCntl6 (*((volatile unsigned long *) 0xFFFFF218))
+#define VICVectCntl7 (*((volatile unsigned long *) 0xFFFFF21C))
+#define VICVectCntl8 (*((volatile unsigned long *) 0xFFFFF220))
+#define VICVectCntl9 (*((volatile unsigned long *) 0xFFFFF224))
+#define VICVectCntl10 (*((volatile unsigned long *) 0xFFFFF228))
+#define VICVectCntl11 (*((volatile unsigned long *) 0xFFFFF22C))
+#define VICVectCntl12 (*((volatile unsigned long *) 0xFFFFF230))
+#define VICVectCntl13 (*((volatile unsigned long *) 0xFFFFF234))
+#define VICVectCntl14 (*((volatile unsigned long *) 0xFFFFF238))
+#define VICVectCntl15 (*((volatile unsigned long *) 0xFFFFF23C))
+
+/* Pin Connect Block */
+#define PINSEL0 (*((volatile unsigned long *) 0xE002C000))
+#define PINSEL1 (*((volatile unsigned long *) 0xE002C004))
+#define PINSEL2 (*((volatile unsigned long *) 0xE002C014))
+
+/* General Purpose Input/Output (GPIO) */
+#define IOPIN0 (*((volatile unsigned long *) 0xE0028000))
+#define IOSET0 (*((volatile unsigned long *) 0xE0028004))
+#define IODIR0 (*((volatile unsigned long *) 0xE0028008))
+#define IOCLR0 (*((volatile unsigned long *) 0xE002800C))
+#define IOPIN1 (*((volatile unsigned long *) 0xE0028010))
+#define IOSET1 (*((volatile unsigned long *) 0xE0028014))
+#define IODIR1 (*((volatile unsigned long *) 0xE0028018))
+#define IOCLR1 (*((volatile unsigned long *) 0xE002801C))
+
+/* Memory Accelerator Module (MAM) */
+#define MAMCR (*((volatile unsigned char *) 0xE01FC000))
+#define MAMTIM (*((volatile unsigned char *) 0xE01FC004))
+#define MEMMAP (*((volatile unsigned char *) 0xE01FC040))
+
+/* Phase Locked Loop (PLL) */
+#define PLLCON (*((volatile unsigned char *) 0xE01FC080))
+#define PLLCFG (*((volatile unsigned char *) 0xE01FC084))
+#define PLLSTAT (*((volatile unsigned short*) 0xE01FC088))
+#define PLLFEED (*((volatile unsigned char *) 0xE01FC08C))
+
+/* VPB Divider */
+#define VPBDIV (*((volatile unsigned char *) 0xE01FC100))
+
+/* Power Control */
+#define PCON (*((volatile unsigned char *) 0xE01FC0C0))
+#define PCONP (*((volatile unsigned long *) 0xE01FC0C4))
+
+/* External Interrupts */
+#define EXTINT (*((volatile unsigned char *) 0xE01FC140))
+#define EXTWAKE (*((volatile unsigned char *) 0xE01FC144))
+#define EXTMODE (*((volatile unsigned char *) 0xE01FC148))
+#define EXTPOLAR (*((volatile unsigned char *) 0xE01FC14C))
+
+/* Timer 0 */
+#define T0IR (*((volatile unsigned long *) 0xE0004000))
+#define T0TCR (*((volatile unsigned long *) 0xE0004004))
+#define T0TC (*((volatile unsigned long *) 0xE0004008))
+#define T0PR (*((volatile unsigned long *) 0xE000400C))
+#define T0PC (*((volatile unsigned long *) 0xE0004010))
+#define T0MCR (*((volatile unsigned long *) 0xE0004014))
+#define T0MR0 (*((volatile unsigned long *) 0xE0004018))
+#define T0MR1 (*((volatile unsigned long *) 0xE000401C))
+#define T0MR2 (*((volatile unsigned long *) 0xE0004020))
+#define T0MR3 (*((volatile unsigned long *) 0xE0004024))
+#define T0CCR (*((volatile unsigned long *) 0xE0004028))
+#define T0CR0 (*((volatile unsigned long *) 0xE000402C))
+#define T0CR1 (*((volatile unsigned long *) 0xE0004030))
+#define T0CR2 (*((volatile unsigned long *) 0xE0004034))
+#define T0CR3 (*((volatile unsigned long *) 0xE0004038))
+#define T0EMR (*((volatile unsigned long *) 0xE000403C))
+
+/* Timer 1 */
+#define T1IR (*((volatile unsigned long *) 0xE0008000))
+#define T1TCR (*((volatile unsigned long *) 0xE0008004))
+#define T1TC (*((volatile unsigned long *) 0xE0008008))
+#define T1PR (*((volatile unsigned long *) 0xE000800C))
+#define T1PC (*((volatile unsigned long *) 0xE0008010))
+#define T1MCR (*((volatile unsigned long *) 0xE0008014))
+#define T1MR0 (*((volatile unsigned long *) 0xE0008018))
+#define T1MR1 (*((volatile unsigned long *) 0xE000801C))
+#define T1MR2 (*((volatile unsigned long *) 0xE0008020))
+#define T1MR3 (*((volatile unsigned long *) 0xE0008024))
+#define T1CCR (*((volatile unsigned long *) 0xE0008028))
+#define T1CR0 (*((volatile unsigned long *) 0xE000802C))
+#define T1CR1 (*((volatile unsigned long *) 0xE0008030))
+#define T1CR2 (*((volatile unsigned long *) 0xE0008034))
+#define T1CR3 (*((volatile unsigned long *) 0xE0008038))
+#define T1EMR (*((volatile unsigned long *) 0xE000803C))
+
+/* Pulse Width Modulator (PWM) */
+#define PWMIR (*((volatile unsigned long *) 0xE0014000))
+#define PWMTCR (*((volatile unsigned long *) 0xE0014004))
+#define PWMTC (*((volatile unsigned long *) 0xE0014008))
+#define PWMPR (*((volatile unsigned long *) 0xE001400C))
+#define PWMPC (*((volatile unsigned long *) 0xE0014010))
+#define PWMMCR (*((volatile unsigned long *) 0xE0014014))
+#define PWMMR0 (*((volatile unsigned long *) 0xE0014018))
+#define PWMMR1 (*((volatile unsigned long *) 0xE001401C))
+#define PWMMR2 (*((volatile unsigned long *) 0xE0014020))
+#define PWMMR3 (*((volatile unsigned long *) 0xE0014024))
+#define PWMMR4 (*((volatile unsigned long *) 0xE0014040))
+#define PWMMR5 (*((volatile unsigned long *) 0xE0014044))
+#define PWMMR6 (*((volatile unsigned long *) 0xE0014048))
+#define PWMCCR (*((volatile unsigned long *) 0xE0014028))
+#define PWMCR0 (*((volatile unsigned long *) 0xE001402C))
+#define PWMCR1 (*((volatile unsigned long *) 0xE0014030))
+#define PWMCR2 (*((volatile unsigned long *) 0xE0014034))
+#define PWMCR3 (*((volatile unsigned long *) 0xE0014038))
+#define PWMEMR (*((volatile unsigned long *) 0xE001403C))
+#define PWMPCR (*((volatile unsigned long *) 0xE001404C))
+#define PWMLER (*((volatile unsigned long *) 0xE0014050))
+
+/* Universal Asynchronous Receiver Transmitter 0 (UART0) */
+#define U0RBR (*((volatile unsigned char *) 0xE000C000))
+#define U0THR (*((volatile unsigned char *) 0xE000C000))
+#define U0IER (*((volatile unsigned char *) 0xE000C004))
+#define U0IIR (*((volatile unsigned char *) 0xE000C008))
+#define U0FCR (*((volatile unsigned char *) 0xE000C008))
+#define U0LCR (*((volatile unsigned char *) 0xE000C00C))
+#define U0MCR (*((volatile unsigned char *) 0xE000C010))
+#define U0LSR (*((volatile unsigned char *) 0xE000C014))
+#define U0MSR (*((volatile unsigned char *) 0xE000C018))
+#define U0SCR (*((volatile unsigned char *) 0xE000C01C))
+#define U0DLL (*((volatile unsigned char *) 0xE000C000))
+#define U0DLM (*((volatile unsigned char *) 0xE000C004))
+
+/* Universal Asynchronous Receiver Transmitter 1 (UART1) */
+#define U1RBR (*((volatile unsigned char *) 0xE0010000))
+#define U1THR (*((volatile unsigned char *) 0xE0010000))
+#define U1IER (*((volatile unsigned char *) 0xE0010004))
+#define U1IIR (*((volatile unsigned char *) 0xE0010008))
+#define U1FCR (*((volatile unsigned char *) 0xE0010008))
+#define U1LCR (*((volatile unsigned char *) 0xE001000C))
+#define U1MCR (*((volatile unsigned char *) 0xE0010010))
+#define U1LSR (*((volatile unsigned char *) 0xE0010014))
+#define U1MSR (*((volatile unsigned char *) 0xE0010018))
+#define U1SCR (*((volatile unsigned char *) 0xE001001C))
+#define U1DLL (*((volatile unsigned char *) 0xE0010000))
+#define U1DLM (*((volatile unsigned char *) 0xE0010004))
+
+/* I2C Interface */
+#define I2CONSET (*((volatile unsigned char *) 0xE001C000))
+#define I2STAT (*((volatile unsigned char *) 0xE001C004))
+#define I2DAT (*((volatile unsigned char *) 0xE001C008))
+#define I2ADR (*((volatile unsigned char *) 0xE001C00C))
+#define I2SCLH (*((volatile unsigned short*) 0xE001C010))
+#define I2SCLL (*((volatile unsigned short*) 0xE001C014))
+#define I2CONCLR (*((volatile unsigned char *) 0xE001C018))
+
+/* SPI0 (Serial Peripheral Interface 0) */
+#define S0SPCR (*((volatile unsigned char *) 0xE0020000))
+#define S0SPSR (*((volatile unsigned char *) 0xE0020004))
+#define S0SPDR (*((volatile unsigned char *) 0xE0020008))
+#define S0SPCCR (*((volatile unsigned char *) 0xE002000C))
+#define S0SPTCR (*((volatile unsigned char *) 0xE0020010))
+#define S0SPTSR (*((volatile unsigned char *) 0xE0020014))
+#define S0SPTOR (*((volatile unsigned char *) 0xE0020018))
+#define S0SPINT (*((volatile unsigned char *) 0xE002001C))
+
+/* SPI1 (Serial Peripheral Interface 1) */
+#define S1SPCR (*((volatile unsigned char *) 0xE0030000))
+#define S1SPSR (*((volatile unsigned char *) 0xE0030004))
+#define S1SPDR (*((volatile unsigned char *) 0xE0030008))
+#define S1SPCCR (*((volatile unsigned char *) 0xE003000C))
+#define S1SPTCR (*((volatile unsigned char *) 0xE0030010))
+#define S1SPTSR (*((volatile unsigned char *) 0xE0030014))
+#define S1SPTOR (*((volatile unsigned char *) 0xE0030018))
+#define S1SPINT (*((volatile unsigned char *) 0xE003001C))
+
+/* Real Time Clock */
+#define ILR (*((volatile unsigned char *) 0xE0024000))
+#define CTC (*((volatile unsigned short*) 0xE0024004))
+#define CCR (*((volatile unsigned char *) 0xE0024008))
+#define CIIR (*((volatile unsigned char *) 0xE002400C))
+#define AMR (*((volatile unsigned char *) 0xE0024010))
+#define CTIME0 (*((volatile unsigned long *) 0xE0024014))
+#define CTIME1 (*((volatile unsigned long *) 0xE0024018))
+#define CTIME2 (*((volatile unsigned long *) 0xE002401C))
+#define SEC (*((volatile unsigned char *) 0xE0024020))
+#define MIN (*((volatile unsigned char *) 0xE0024024))
+#define HOUR (*((volatile unsigned char *) 0xE0024028))
+#define DOM (*((volatile unsigned char *) 0xE002402C))
+#define DOW (*((volatile unsigned char *) 0xE0024030))
+#define DOY (*((volatile unsigned short*) 0xE0024034))
+#define MONTH (*((volatile unsigned char *) 0xE0024038))
+#define YEAR (*((volatile unsigned short*) 0xE002403C))
+#define ALSEC (*((volatile unsigned char *) 0xE0024060))
+#define ALMIN (*((volatile unsigned char *) 0xE0024064))
+#define ALHOUR (*((volatile unsigned char *) 0xE0024068))
+#define ALDOM (*((volatile unsigned char *) 0xE002406C))
+#define ALDOW (*((volatile unsigned char *) 0xE0024070))
+#define ALDOY (*((volatile unsigned short*) 0xE0024074))
+#define ALMON (*((volatile unsigned char *) 0xE0024078))
+#define ALYEAR (*((volatile unsigned short*) 0xE002407C))
+#define PREINT (*((volatile unsigned short*) 0xE0024080))
+#define PREFRAC (*((volatile unsigned short*) 0xE0024084))
+
+/* A/D Converter */
+#define ADCR (*((volatile unsigned long *) 0xE0034000))
+#define ADDR (*((volatile unsigned long *) 0xE0034004))
+
+/* CAN Acceptance Filter RAM */
+#define AFRAM (*((volatile unsigned long *) 0xE0038000))
+
+/* CAN Acceptance Filter */
+#define AFMR (*((volatile unsigned long *) 0xE003C000))
+#define SFF_sa (*((volatile unsigned long *) 0xE003C004))
+#define SFF_GRP_sa (*((volatile unsigned long *) 0xE003C008))
+#define EFF_sa (*((volatile unsigned long *) 0xE003C00C))
+#define EFF_GRP_sa (*((volatile unsigned long *) 0xE003C010))
+#define ENDofTable (*((volatile unsigned long *) 0xE003C014))
+#define LUTerrAd (*((volatile unsigned long *) 0xE003C018))
+#define LUTerr (*((volatile unsigned long *) 0xE003C01C))
+
+/* CAN Central Registers */
+#define CANTxSR (*((volatile unsigned long *) 0xE0040000))
+#define CANRxSR (*((volatile unsigned long *) 0xE0040004))
+#define CANMSR (*((volatile unsigned long *) 0xE0040008))
+
+/* CAN Controller 1 (CAN1) */
+#define C1MOD (*((volatile unsigned long *) 0xE0044000))
+#define C1CMR (*((volatile unsigned long *) 0xE0044004))
+#define C1GSR (*((volatile unsigned long *) 0xE0044008))
+#define C1ICR (*((volatile unsigned long *) 0xE004400C))
+#define C1IER (*((volatile unsigned long *) 0xE0044010))
+#define C1BTR (*((volatile unsigned long *) 0xE0044014))
+#define C1EWL (*((volatile unsigned long *) 0xE0044018))
+#define C1SR (*((volatile unsigned long *) 0xE004401C))
+#define C1RFS (*((volatile unsigned long *) 0xE0044020))
+#define C1RID (*((volatile unsigned long *) 0xE0044024))
+#define C1RDA (*((volatile unsigned long *) 0xE0044028))
+#define C1RDB (*((volatile unsigned long *) 0xE004402C))
+#define C1TFI1 (*((volatile unsigned long *) 0xE0044030))
+#define C1TID1 (*((volatile unsigned long *) 0xE0044034))
+#define C1TDA1 (*((volatile unsigned long *) 0xE0044038))
+#define C1TDB1 (*((volatile unsigned long *) 0xE004403C))
+#define C1TFI2 (*((volatile unsigned long *) 0xE0044040))
+#define C1TID2 (*((volatile unsigned long *) 0xE0044044))
+#define C1TDA2 (*((volatile unsigned long *) 0xE0044048))
+#define C1TDB2 (*((volatile unsigned long *) 0xE004404C))
+#define C1TFI3 (*((volatile unsigned long *) 0xE0044050))
+#define C1TID3 (*((volatile unsigned long *) 0xE0044054))
+#define C1TDA3 (*((volatile unsigned long *) 0xE0044058))
+#define C1TDB3 (*((volatile unsigned long *) 0xE004405C))
+
+/* CAN Controller 2 (CAN2) */
+#define C2MOD (*((volatile unsigned long *) 0xE0048000))
+#define C2CMR (*((volatile unsigned long *) 0xE0048004))
+#define C2GSR (*((volatile unsigned long *) 0xE0048008))
+#define C2ICR (*((volatile unsigned long *) 0xE004800C))
+#define C2IER (*((volatile unsigned long *) 0xE0048010))
+#define C2BTR (*((volatile unsigned long *) 0xE0048014))
+#define C2EWL (*((volatile unsigned long *) 0xE0048018))
+#define C2SR (*((volatile unsigned long *) 0xE004801C))
+#define C2RFS (*((volatile unsigned long *) 0xE0048020))
+#define C2RID (*((volatile unsigned long *) 0xE0048024))
+#define C2RDA (*((volatile unsigned long *) 0xE0048028))
+#define C2RDB (*((volatile unsigned long *) 0xE004802C))
+#define C2TFI1 (*((volatile unsigned long *) 0xE0048030))
+#define C2TID1 (*((volatile unsigned long *) 0xE0048034))
+#define C2TDA1 (*((volatile unsigned long *) 0xE0048038))
+#define C2TDB1 (*((volatile unsigned long *) 0xE004803C))
+#define C2TFI2 (*((volatile unsigned long *) 0xE0048040))
+#define C2TID2 (*((volatile unsigned long *) 0xE0048044))
+#define C2TDA2 (*((volatile unsigned long *) 0xE0048048))
+#define C2TDB2 (*((volatile unsigned long *) 0xE004804C))
+#define C2TFI3 (*((volatile unsigned long *) 0xE0048050))
+#define C2TID3 (*((volatile unsigned long *) 0xE0048054))
+#define C2TDA3 (*((volatile unsigned long *) 0xE0048058))
+#define C2TDB3 (*((volatile unsigned long *) 0xE004805C))
+
+/* CAN Controller 3 (CAN3) */
+#define C3MOD (*((volatile unsigned long *) 0xE004C000))
+#define C3CMR (*((volatile unsigned long *) 0xE004C004))
+#define C3GSR (*((volatile unsigned long *) 0xE004C008))
+#define C3ICR (*((volatile unsigned long *) 0xE004C00C))
+#define C3IER (*((volatile unsigned long *) 0xE004C010))
+#define C3BTR (*((volatile unsigned long *) 0xE004C014))
+#define C3EWL (*((volatile unsigned long *) 0xE004C018))
+#define C3SR (*((volatile unsigned long *) 0xE004C01C))
+#define C3RFS (*((volatile unsigned long *) 0xE004C020))
+#define C3RID (*((volatile unsigned long *) 0xE004C024))
+#define C3RDA (*((volatile unsigned long *) 0xE004C028))
+#define C3RDB (*((volatile unsigned long *) 0xE004C02C))
+#define C3TFI1 (*((volatile unsigned long *) 0xE004C030))
+#define C3TID1 (*((volatile unsigned long *) 0xE004C034))
+#define C3TDA1 (*((volatile unsigned long *) 0xE004C038))
+#define C3TDB1 (*((volatile unsigned long *) 0xE004C03C))
+#define C3TFI2 (*((volatile unsigned long *) 0xE004C040))
+#define C3TID2 (*((volatile unsigned long *) 0xE004C044))
+#define C3TDA2 (*((volatile unsigned long *) 0xE004C048))
+#define C3TDB2 (*((volatile unsigned long *) 0xE004C04C))
+#define C3TFI3 (*((volatile unsigned long *) 0xE004C050))
+#define C3TID3 (*((volatile unsigned long *) 0xE004C054))
+#define C3TDA3 (*((volatile unsigned long *) 0xE004C058))
+#define C3TDB3 (*((volatile unsigned long *) 0xE004C05C))
+
+/* CAN Controller 4 (CAN4) */
+#define C4MOD (*((volatile unsigned long *) 0xE0050000))
+#define C4CMR (*((volatile unsigned long *) 0xE0050004))
+#define C4GSR (*((volatile unsigned long *) 0xE0050008))
+#define C4ICR (*((volatile unsigned long *) 0xE005000C))
+#define C4IER (*((volatile unsigned long *) 0xE0050010))
+#define C4BTR (*((volatile unsigned long *) 0xE0050014))
+#define C4EWL (*((volatile unsigned long *) 0xE0050018))
+#define C4SR (*((volatile unsigned long *) 0xE005001C))
+#define C4RFS (*((volatile unsigned long *) 0xE0050020))
+#define C4RID (*((volatile unsigned long *) 0xE0050024))
+#define C4RDA (*((volatile unsigned long *) 0xE0050028))
+#define C4RDB (*((volatile unsigned long *) 0xE005002C))
+#define C4TFI1 (*((volatile unsigned long *) 0xE0050030))
+#define C4TID1 (*((volatile unsigned long *) 0xE0050034))
+#define C4TDA1 (*((volatile unsigned long *) 0xE0050038))
+#define C4TDB1 (*((volatile unsigned long *) 0xE005003C))
+#define C4TFI2 (*((volatile unsigned long *) 0xE0050040))
+#define C4TID2 (*((volatile unsigned long *) 0xE0050044))
+#define C4TDA2 (*((volatile unsigned long *) 0xE0050048))
+#define C4TDB2 (*((volatile unsigned long *) 0xE005004C))
+#define C4TFI3 (*((volatile unsigned long *) 0xE0050050))
+#define C4TID3 (*((volatile unsigned long *) 0xE0050054))
+#define C4TDA3 (*((volatile unsigned long *) 0xE0050058))
+#define C4TDB3 (*((volatile unsigned long *) 0xE005005C))
+
+/* Watchdog */
+#define WDMOD (*((volatile unsigned char *) 0xE0000000))
+#define WDTC (*((volatile unsigned long *) 0xE0000004))
+#define WDFEED (*((volatile unsigned char *) 0xE0000008))
+#define WDTV (*((volatile unsigned long *) 0xE000000C))
+
+#endif // __LPC21xx_H
+
+/*----------------------- END OF FILE ----------------------------------*/
Added: trunk/LPC2_CANFull_V110/LPC_FullCAN_SW.Opt
===================================================================
--- trunk/LPC2_CANFull_V110/LPC_FullCAN_SW.Opt (rev 0)
+++ trunk/LPC2_CANFull_V110/LPC_FullCAN_SW.Opt 2008-02-28 14:17:02 UTC (rev 862)
@@ -0,0 +1,46 @@
+### uVision2 Project, (C) Keil Software
+### Do not modify !
+
+ cExt (*.c)
+ aExt (*.s*; *.src; *.a*)
+ oExt (*.obj)
+ lExt (*.lib)
+ tExt (*.txt; *.h; *.inc)
+ pExt (*.plm)
+ CppX (*.cpp)
+ DaveTm { 0,0,0,0,0,0,0,0 }
+
+Target (LPC2129), 0x0003 // Tools: 'ARM-GNU'
+GRPOPT 1,(System),1,0,0
+GRPOPT 2,(Sources),1,0,0
+GRPOPT 3,(Documentation),1,0,0
+
+OPTFFF 1,1,2,0,0,0,0,0,<.\Startup.s><Startup.s>
+OPTFFF 2,2,1,369098753,0,0,0,0,<.\LPC_FullCAN_SW.c><LPC_FullCAN_SW.c>
+OPTFFF 2,3,1,0,0,0,0,0,<.\main_FullCAN.c><main_FullCAN.c>
+OPTFFF 3,4,5,352321538,0,1,6,0,<.\readme.txt><readme.txt> { 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,87,2,0,0,49,1,0,0 }
+
+ExtF <.\readme.txt> 1,6,0,{ 44,0,0,0,0,0,0,0,1,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,87,2,0,0,49,1,0,0 }
+
+TARGOPT 1, (LPC2129)
+ ARMCLK=12000000
+ OPTTT 1,1,1,0
+ OPTHX 1,65535,0,0,0
+ OPTLX 120,65,8,<.\>
+ OPTOX 16
+ OPTLT 1,1,1,0,1,1,0,1,0,0,0,0
+ OPTXL 1,1,1,1,1,1,1,0,0
+ OPTFL 1,0,1
+ OPTBL 0,(Data Sheet)<DATASHTS\PHILIPS\LPC2119_2129-02.PDF>
+ OPTBL 1,(User Manual)<DATASHTS\PHLIPS\UM_LPC21XX_LPC22XX_1.PDF>
+ OPTDL (SARM.DLL)()(DARMP.DLL)(-pLPC21x9)(SARM.DLL)()(TARMP.DLL)(-pLPC21x9)
+ OPTDBG 45054,-1,()()()()()()()()()() (BIN\UL2ARM.DLL)()()()
+ OPTKEY 0,(ARMDBGFLAGS)()
+ OPTKEY 0,(DLGTARM)((134=-1,-1,-1,-1,0)(135=-1,-1,-1,-1,0)(107=-1,-1,-1,-1,0)(108=-1,-1,-1,-1,0)(106=-1,-1,-1,-1,0)(105=-1,-1,-1,-1,0)(80=428,134,974,565,0)(104=135,165,441,570,0)(100=-1,-1,-1,-1,0)(101=-1,-1,-1,-1,0)(113=-1,-1,-1,-1,0)(112=-1,-1,-1,-1,0)(136=-1,-1,-1,-1,0)(117=-1,-1,-1,-1,0)(118=-1,-1,-1,-1,0)(110=-1,-1,-1,-1,0)(111=-1,-1,-1,-1,0)(114=-1,-1,-1,-1,0)(119=-1,-1,-1,-1,0)(130=41,212,443,725,0)(131=293,336,575,563,0)(121=37,34,733,508,0)(122=249,190,945,664,0)(115=-1,-1,-1,-1,0)(116=-1,-1,-1,-1,0))
+ OPTKEY 0,(UL2ARM)(-U69674188 -O7 -S0 -C0 -N00("ARM7TDMI-S Core") -D00(4F1F0F0F) -L00(4) -FO7 -FD40000000 -FC800 -FN1 -FF0LPC2000_256 -FS00 -FL040000)
+ OPTKEY 0,(DLGDARM)((107=-1,-1,-1,-1,0)(108=-1,-1,-1,-1,0)(106=-1,-1,-1,-1,0)(105=-1,-1,-1,-1,0)(80=365,182,911,613,0)(104=-1,-1,-1,-1,0)(100=-1,-1,-1,-1,0)(101=-1,-1,-1,-1,0)(113=-1,-1,-1,-1,0)(112=-1,-1,-1,-1,0)(117=-1,-1,-1,-1,0)(118=-1,-1,-1,-1,0)(110=-1,-1,-1,-1,0)(111=-1,-1,-1,-1,0)(114=-1,-1,-1,-1,0)(119=-1,-1,-1,-1,0)(130=3,212,405,725,0)(131=293,336,575,563,0)(121=60,85,756,559,0)(122=-1,-1,-1,-1,0)(132=450,286,978,625,0)(115=-1,-1,-1,-1,0)(116=-1,-1,-1,-1,0))
+ OPTDF 0x80
+ OPTLE <>
+ OPTLC <>
+EndOpt
+
Added: trunk/LPC2_CANFull_V110/LPC_FullCAN_SW.Uv2
===================================================================
--- trunk/LPC2_CANFull_V110/LPC_FullCAN_SW.Uv2 (rev 0)
+++ trunk/LPC2_CANFull_V110/LPC_FullCAN_SW.Uv2 2008-02-28 14:17:02 UTC (rev 862)
@@ -0,0 +1,97 @@
+### uVision2 Project, (C) Keil Software
+### Do not modify !
+
+Target (LPC2129), 0x0003 // Tools: 'ARM-GNU'
+
+Group (System)
+Group (Sources)
+Group (Documentation)
+
+File 1,2,<.\Startup.s><Startup.s> 0x4020A1A4
+File 2,1,<.\LPC_FullCAN_SW.c><LPC_FullCAN_SW.c> 0x41DBD499
+File 2,1,<.\main_FullCAN.c><main_FullCAN.c> 0x41DBD46C
+File 3,5,<.\readme.txt><readme.txt> 0x41DBD499
+
+
+Options 1,0,0 // Target 'LPC2129'
+ Device (LPC2129)
+ Vendor (Philips)
+ Cpu (IRAM(0x40000000-0x40003FFF) IROM(0-0x3FFFF) CLOCK(12000000) CPUTYPE(ARM7TDMI))
+ FlashUt (LPC210x_ISP.EXE ("#H" ^X $D COM1: 9600 1))
+ StupF ()
+ FlashDR ()
+ Rgf (LPC21xx.H)
+ Mem ()
+ C ()
+ A ()
+ RL ()
+ OH ()
+ DBC_IFX ()
+ DBC_CMS ()
+ DBC_AMS ()
+ DBC_LMS ()
+ UseEnv=0
+ EnvBin ()
+ EnvInc ()
+ EnvLib ()
+ EnvReg (\xFFPhilips\)
+ OrgReg (\xFFPhilips\)
+ TgStat=0
+ OutDir (.\Flash\)
+ OutName (LPC_FullCAN_SW)
+ GenApp=1
+ GenLib=0
+ GenHex=1
+ Debug=1
+ Browse=1
+ LstDir (.\)
+ HexSel=1
+ MG32K=0
+ TGMORE=0
+ RunUsr 0 0 <>
+ RunUsr 1 0 <>
+ BrunUsr 0 0 <>
+ BrunUsr 1 0 <>
+ SVCSID <>
+ GLFLAGS=1790
+ GCPUTYP (ARM7TDMI)
+ TFlagsA { 0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
+ OCMARM { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
+ OCMARAM { 0,0,0,0,64,0,64,0,0 }
+ OCMAROM { 1,0,0,0,0,0,0,4,0 }
+ OCMXRAM { 0,0,0,0,0,0,0,0,0 }
+ ACCFLG { 5,16,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
+ ACMISC ()
+ ACDEFN ()
+ ACUDEF ()
+ ACINCD ()
+ AASFLG { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
+ AAMISC ()
+ AADEFN ()
+ AAUDEF ()
+ AAINCD ()
+ PropFld { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
+ IncBld=1
+ AlwaysBuild=0
+ GenAsm=0
+ AsmAsm=0
+ PublicsOnly=0
+ StopCode=3
+ CustArgs ()
+ LibMods ()
+ ALDFLAG { 15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
+ ALDTADR ()
+ ALDDADR ()
+ ALDBSSR ()
+ ALDICLB ()
+ ALDICDR ()
+ ALDMISC ()
+ ALDSCAT (.\Flash.ld)
+ OPTDL (SARM.DLL)()(DARMP.DLL)(-pLPC21x9)(SARM.DLL)()(TARMP.DLL)(-pLPC21x9)
+ OPTDBG 45054,-1,()()()()()()()()()() (BIN\UL2ARM.DLL)()()()
+ FLASH1 { 9,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }
+ FLASH2 (BIN\UL2ARM.DLL)
+ FLASH3 ("LPC210x_ISP.EXE" ("#H" ^X $D COM1: 9600 1))
+ FLASH4 ()
+EndOpt
+
Added: trunk/LPC2_CANFull_V110/LPC_FullCAN_SW.c
===================================================================
--- trunk/LPC2_CANFull_V110/LPC_FullCAN_SW.c (rev 0)
+++ trunk/LPC2_CANFull_V110/LPC_FullCAN_SW.c 2008-02-28 14:17:02 UTC (rev 862)
@@ -0,0 +1,639 @@
+/**************************************************************************
+MODULE: LPC_FullCAN_SW
+CONTAINS: Philips LPC2000 CAN interface driver.
+ The first revisions of the Philips LPC2000 with CAN interface
+ do NOT support the FullCAN mode in hardware. This driver
+ implements the FullCAN mode in software.
+ Compiled and Tested with Keil Tools www.keil.com
+COPYRIGHT: Embedded Systems Academy, Inc. 2004.
+LICENSE: THIS VERSION CREATED FOR FREE DISTRIBUTION
+ FOR PHILIPS SEMICONDUCTORS www.philipsmcu.com
+ FOR KEIL SOFTWARE www.keil.com
+VERSION: 1.10, Pf 05-JAN-05, Latest errata sheet suggestions implemented
+---------------------------------------------------------------------------
+HISTORY: 1.01, Pf 18-APR-04, Added Timer and LED output
+HISTORY: 1.00, Pf 16-APR-04, First published release
+***************************************************************************/
+
+#include <LPC21XX.H> // LPC21XX Peripheral Registers
+#include "LPC_FullCAN_SW.h"
+
+
+/**************************************************************************
+GLOBAL VARIABLES
+***************************************************************************/
+
+// Counts number of filters (CAN message objects) used so far
+short volatile gCANFilter = 0;
+
+// FullCAN Message List
+FULLCAN_MSG volatile gFullCANList[MAX_FILTERS];
+
+
+/**************************************************************************
+PUBLIC FUNCTIONS
+***************************************************************************/
+
+/**************************************************************************
+Initialization of a CAN interface
+as described in LPC_FullCAN_SW.h
+***************************************************************************/
+short FullCAN_Init (
+ unsigned short can_port, // CAN interface to use
+ unsigned short can_isrvect, // interrupt vector number to use for Rx ISR (0-15)
+ unsigned int can_btr // CAN BTR value used to set CAN baud rate
+ )
+{
+unsigned int *pSFR; // pointer into SFR space
+unsigned int *pSFR2; // pointer into SFR space
+unsigned int offset; // offset added to pSFR
+
+ // Double check can_isrvect value
+ if (can_isrvect > 15)
+ { // Illegal value for can_isrvect
+ return 0;
+ }
+
+ // Enable pins for selected CAN interface
+ switch (can_port)
+ {
+ case 1:
+ PINSEL1 |= 0x00040000L; // Set bit 18
+ offset = 0x00000000L; // Use 1st set of CAN registers
+ break;
+#if (MAX_CANPORTS > 1)
+ case 2:
+ PINSEL1 |= 0x00014000L; // Set bits 14 and 16
+ offset = 0x00001000L; // Use 2nd set of CAN registers
+ break;
+#endif
+#if (MAX_CANPORTS > 2)
+ case 3:
+ PINSEL1 |= 0x00001800L; // Set bits 11 and 12
+ offset = 0x00002000L; // Use 3rd set of CAN registers
+ break;
+#endif
+#if (MAX_CANPORTS > 3)
+ case 4:
+ PINSEL0 |= 0x0F000000L; // Set bits 24 to 27
+ offset = 0x00003000L; // Use 4th set of CAN registers
+ break;
+#endif
+ default:
+ return 0; // illegal value used
+ }
+
+ // Reset and disable all message filters
+ gCANFilter = 0;
+ // Acceptance Filter Mode Register = off !
+ AFMR = 0x00000001L;
+
+ pSFR = (unsigned int *) &C1MOD + offset; // Select Mode register
+ *pSFR = 1; // Go into Reset mode
+
+ pSFR = (unsigned int *) &C1IER + offset; // Select Interrupt Enable Register
+ *pSFR = 0;// Disable All Interrupts
+
+ pSFR = (unsigned int *) &C1GSR + offset; // Select Status Register
+ *pSFR = 0; // Clear Status register
+
+ pSFR = (unsigned int *) &C1BTR + offset; // Select BTR Register
+ *pSFR = can_btr; // Set bit timing
+
+ // Set and enable receive interrupt
+ pSFR = (unsigned int *) &VICVectAddr0;
+ pSFR += can_isrvect; // Set to desired interrupt vector
+
+ pSFR2 = (unsigned int *) &VICVectCntl0;
+ pSFR2 += can_isrvect; // Set to desired interrupt control
+
+ switch (can_port)
+ {
+ case 1:
+ // Set interrupt vector
+ *pSFR = (unsigned long) FullCAN_CANISR_Rx1;
+ // Use this Interrupt for CAN Rx1 Interrupt
+ *pSFR2 = 0x20 | 26;
+ // Enable CAN Rx1 Interrupt
+ VICIntEnable = 0x04000000L;
+ break;
+#if (MAX_CANPORTS > 1)
+ case 2:
+ // Set interrupt vector
+ *pSFR = (unsigned long) FullCAN_CANISR_Rx2;
+ // Use this Interrupt for CAN Rx2 Interrupt
+ *pSFR2 = 0x20 | 27;
+ // Enable CAN Rx2 Interrupt
+ VICIntEnable = 0x08000000L;
+ break;
+#endif
+#if (MAX_CANPORTS > 2)
+ case 3:
+ // Set interrupt vector
+ *pSFR = (unsigned long) FullCAN_CANISR_Rx3;
+ // Use this Interrupt for CAN Rx3 Interrupt
+ *pSFR2 = 0x20 | 28;
+ // Enable CAN Rx3 Interrupt
+ VICIntEnable = 0x10000000L;
+ break;
+#endif
+#if (MAX_CANPORTS > 3)
+ case 4:
+ // Set interrupt vector
+ *pSFR = (unsigned long) FullCAN_CANISR_Rx4;
+ // Use this Interrupt for CAN Rx4 Interrupt
+ *pSFR2 = 0x20 | 29;
+ // Enable CAN Rx4 Interrupt
+ VICIntEnable = 0x20000000L;
+ break;
+#endif
+ default:
+ return 0; // illegal value used
+ }
+
+ pSFR = (unsigned int *) &C1IER + offset; // Select Interrupt register
+ *pSFR = 1; // Enable Receive Interrupt
+
+ // Enter Normal Operating Mode
+ pSFR = (unsigned int *) &C1MOD + offset; // Select Mode register
+ *pSFR = 0; // Operating Mode
+
+ return 1;
+}
+
+
+/**************************************************************************
+Setting a CAN receive filter
+as described in LPC_FullCAN_SW.h
+***************************************************************************/
+short FullCAN_SetFilter (
+ unsigned short can_port, // CAN interface number
+ unsigned int CANID // 11-bit CAN ID
+ )
+{
+unsigned int p, n;
+unsigned int buf0, buf1;
+unsigned int ID_lower, ID_upper;
+unsigned int candata;
+unsigned int *pAddr;
+
+ // Double check can_port value
+ if ((can_port < 1) || (can_port > MAX_CANPORTS))
+ { // Illegal value for can_port
+ return 0;
+ }
+
+ // Acceptance Filter Mode Register = off !
+ AFMR = 0x00000001L;
+
+ if (gCANFilter == 0)
+ { // First call, init entry zero
+ gFullCANList[0].Dat1 = 0x000037FFL; // CAN 1, disabled and unused
+ }
+ if (gCANFilter >= MAX_FILTERS)
+ {
+ return 0;
+ }
+
+ CANID &= 0x000007FFL; // Mask out 11-bit ID
+ CANID |= (can_port << 13); // Put can_port info in bits 13-15
+
+ // Filters must be sorted by interface, then by priority
+ // new filter is sorted into array
+ p = 0;
+ while (p < gCANFilter) // loop through all existing filters
+ {
+ if ((gFullCANList[p].Dat1 & 0x0000FFFFL) > CANID)
+ {
+ break;
+ }
+ p++;
+ }
+
+ // insert new filter here
+ buf0 = gFullCANList[p].Dat1; // save current entry
+ gFullCANList[p].Dat1 = CANID; // insert the new entry
+
+ // move all remaining entries one row up
+ gCANFilter++;
+ while (p < gCANFilter)
+ {
+ p++;
+ buf1 = gFullCANList[p].Dat1;
+ gFullCANList[p].Dat1 = buf0;
+ buf0 = buf1;
+ }
+
+ // Now work on Acceptance Filter Configuration
+ // Set CAN filter for 11-bit standard identifiers
+ p = 0;
+
+ // Set pointer for Standard Frame Individual
+ // Standard Frame Explicit
+ SFF_sa = p;
+
+ pAddr = (unsigned int *) ACCEPTANCE_FILTER_RAM_BASE;
+ for (n = 0; n < ((gCANFilter+1)/2); n++)
+ {
+ ID_lower = gFullCANList[n * 2].Dat1 & 0x0000FFFFL;
+ ID_upper = gFullCANList[n * 2 + 1].Dat1 & 0x0000FFFFL;
+ candata = (ID_lower << 16) + ID_upper;
+ *pAddr = candata;
+ p += 4;
+ pAddr++;
+ }
+
+ // p is still pointing to ENDofTable;
+ // last entry must contain unused filters
+ *pAddr = 0xF7FFF7FF;
+ p += 4;
+
+ // Set pointer for Standard Frame Groups
+ // Standard Frame Group Start Address Register
+ SFF_GRP_sa = p;
+
+ // Set pointer for Extended Frame Individual
+ // Extended Frame Start Address Register
+ EFF_sa = p;
+
+ // Set pointer for Extended Frame Groups
+ // Extended Frame Group Start Address Register
+ EFF_GRP_sa = p;
+
+ // Set ENDofTable
+ // End of AF Tables Register
+ ENDofTable = p;
+
+ // Acceptance Filter Mode Register, start using filter
+ AFMR = 0;
+
+ return 1;
+}
+
+
+/**************************************************************************
+Installing the CAN Err ISR
+as described in LPC_FullCAN_SW.h
+***************************************************************************/
+short FullCAN_SetErrIRQ (
+ unsigned short can_isrvect // interrupt vector number to use for Err ISR (0-15)
+ )
+{
+unsigned int *pSFR; // pointer into SFR space
+
+ // Double check can_isrvect value
+ if (can_isrvect > 15)
+ { // Illegal value for can_isrvect
+ return 0;
+ }
+
+ // Set and enable err interrupt
+ pSFR = (unsigned int *) &VICVectAddr0;
+ pSFR += can_isrvect; // Set to desired interrupt vector
+ // Set interrupt vector
+ *pSFR = (unsigned long) FullCAN_CANISR_Err;
+
+ pSFR = (unsigned int *) &VICVectCntl0;
+ pSFR += can_isrvect; // Set to desired interrupt control
+ *pSFR = 0x20 | 19;
+
+ // Enable Interrupt source
+ VICIntEnable = 0x00080000L;
+
+ return 1;
+}
+
+
+/**************************************************************************
+Transmitting a CAN message on a selected CAN interface
+as described in LPC_FullCAN_SW.h
+***************************************************************************/
+short FullCAN_PushMessage (
+ unsigned short can_port,
+ FULLCAN_MSG *pTransmitBuf
+ )
+{
+unsigned int *pAddr;
+unsigned int *pCandata;
+unsigned int offset;
+
+ switch (can_port)
+ {
+ case 1:
+ offset = 0x00000000L; // Use 1st set of CAN registers
+ break;
+#if (MAX_CANPORTS > 1)
+ case 2:
+ offset = 0x00001000L; // Use 2nd set of CAN registers
+ break;
+#endif
+#if (MAX_CANPORTS > 2)
+ case 3:
+ offset = 0x00002000L; // Use 3rd set of CAN registers
+ break;
+#endif
+#if (MAX_CANPORTS > 3)
+ case 4:
+ offset = 0x00003000L; // Use 4th set of CAN registers
+ break;
+#endif
+ default:
+ return 0; // illegal value used
+ }
+
+ pAddr = (unsigned int *) &C1SR + offset; // CANSR
+ if (!(*pAddr & 0x00000004L))
+ { // Transmit Channel is not available
+ return 0; // No channel available
+ }
+
+ // Write DLC
+ pAddr = (unsigned int *) &C1TFI1 + offset;
+ *pAddr = pTransmitBuf->Dat1 & 0x000F0000L;
+
+ // Write CAN ID
+ pAddr++;
+ *pAddr = pTransmitBuf->Dat1 & 0x000007FFL;
+
+ // Write first 4 data bytes
+ pCandata = (unsigned int *) &(pTransmitBuf->DatA);
+ pAddr++;
+ *pAddr = *pCandata;
+
+ // Write second 4 data bytes
+ pCandata++;
+ pAddr++;
+ *pAddr = *pCandata;
+
+ // Write self transmission request
+ pAddr = (unsigned int *) &C1CMR + offset;
+ *pAddr = 0x30; // Self Transmission Request Buf 1
+
+ return 1;
+}
+
+/**************************************************************************
+Receiving a CAN message
+as described in LPC_FullCAN_SW.h
+***************************************************************************/
+short FullCAN_PullMessage (
+ unsigned short can_port,
+ FULLCAN_MSG *pReceiveBuf
+ )
+{
+unsigned short obj; // loop counter for message objects/filters
+unsigned int *pSrc; // Source pointer
+unsigned int *pDst; // Destination pointer
+unsigned int match; // Match value for can_port and semaphore
+
+ // Double check can_port value
+ if ((can_port < 1) || (can_port > MAX_CANPORTS))
+ { // Illegal value for can_port
+ return 0;
+ }
+
+ // Initialize pointers
+ pSrc = (unsigned int *) &(gFullCANList[0].Dat1);
+ pDst = (unsigned int *) &(pReceiveBuf->Dat1);
+
+ // Prepare match value for CAN interface
+ match = can_port << 13;
+ match |= 0x03000000L; // Semaphore bits are 11b
+
+ obj = 0;
+ while (obj < gCANFilter)
+ {
+ // match can_port and semaphore set to 11?
+ if ((*pSrc & 0x0300E000L) == match)
+ { // Object Updated since last access
+ *pSrc &= 0xFCFFFFFFL; // clear Semaphore
+
+ *pDst = *pSrc; // Copy Dat1
+
+ pSrc++; // set to gFullCANList[obj].DatA
+ pDst++; // set to pReceiveBuf->DatA
+
+ *pDst = *pSrc; // Copy DatA
+
+ pSrc++; // set to ...
[truncated message content] |