|
From: <ak...@us...> - 2008-02-17 12:24:34
|
Revision: 844
http://can.svn.sourceforge.net/can/?rev=844&view=rev
Author: akhe
Date: 2008-02-17 04:24:27 -0800 (Sun, 17 Feb 2008)
Log Message:
-----------
Fixed CAN extended id bug in str71x_lib, str72x_lib and str75x_lib
Modified Paths:
--------------
trunk/firmware/arm/str/common/str71x_lib/libSTR71x_lib.a
trunk/firmware/arm/str/common/str71x_lib/src/can.c
trunk/firmware/arm/str/common/str72x_lib/libSTR72x_lib.a
trunk/firmware/arm/str/common/str72x_lib/src/720_can.c
trunk/firmware/arm/str/common/str73x_lib/src/73x_can.c
trunk/firmware/arm/str/common/str75x_lib/libSTR75x_lib.a
trunk/firmware/arm/str/common/str75x_lib/src/75x_can.c
Modified: trunk/firmware/arm/str/common/str71x_lib/libSTR71x_lib.a
===================================================================
(Binary files differ)
Modified: trunk/firmware/arm/str/common/str71x_lib/src/can.c
===================================================================
--- trunk/firmware/arm/str/common/str71x_lib/src/can.c 2008-02-17 11:51:48 UTC (rev 843)
+++ trunk/firmware/arm/str/common/str71x_lib/src/can.c 2008-02-17 12:24:27 UTC (rev 844)
@@ -362,9 +362,11 @@
}
else
{
- // extended ID
- CAN->sMsgObj[0].A1R = EXT_FIXED_ID_ARB_L(pCanMsg->Id);
- CAN->sMsgObj[0].A2R = (CAN->sMsgObj[0].A2R & 0xE000) | EXT_FIXED_ID_ARB_H(pCanMsg->Id);
+ // extended ID - Fixed AKHE
+ //CAN->sMsgObj[0].A1R = EXT_FIXED_ID_ARB_L(pCanMsg->Id);
+ //CAN->sMsgObj[0].A2R = (CAN->sMsgObj[0].A2R & 0xE000) | EXT_FIXED_ID_ARB_H(pCanMsg->Id);
+ CAN->sMsgObj[0].A1R = pCanMsg->Id & 0xffff;
+ CAN->sMsgObj[0].A2R = (CAN->sMsgObj[0].A2R & 0xE000) | ( ( pCanMsg->Id >> 16 ) & 0xffff);
}
CAN->sMsgObj[0].MCR = (CAN->sMsgObj[0].MCR & 0xFEF0) | CAN_MCR_NEWDAT | CAN_MCR_TXRQST | pCanMsg->Dlc;
@@ -417,9 +419,10 @@
}
else
{
- /* extended ID */
+ /* extended ID - Fixed AKHE*/
pCanMsg->IdType = CAN_EXT_ID;
- pCanMsg->Id = ((CAN->sMsgObj[1].A2R >> 2) & 0x07FF) | ((u32)CAN->sMsgObj[1].A1R << 11) | (((u32)CAN->sMsgObj[1].A2R & 0x0003) << 27);
+ //pCanMsg->Id = ((CAN->sMsgObj[1].A2R >> 2) & 0x07FF) | ((u32)CAN->sMsgObj[1].A1R << 11) | (((u32)CAN->sMsgObj[1].A2R & 0x0003) << 27);
+ pCanMsg->Id = CAN->sMsgObj[1].A1R + ( ( CAN->sMsgObj[1].A2R & 0x1fff ) >> 16 );
}
pCanMsg->Dlc = CAN->sMsgObj[1].MCR & 0x0F;
@@ -478,9 +481,9 @@
}
else
{
- /* extended ID */
- CAN->sMsgObj[0].A1R = EXT_FIXED_ID_ARB_L(pCanMsg->Id);
- CAN->sMsgObj[0].A2R = (CAN->sMsgObj[0].A2R & 0xE000) | EXT_FIXED_ID_ARB_H(pCanMsg->Id);
+ /* extended ID - Fixe AKHE*/
+ //CAN->sMsgObj[0].A1R = EXT_FIXED_ID_ARB_L(pCanMsg->Id);
+ //CAN->sMsgObj[0].A2R = (CAN->sMsgObj[0].A2R & 0xE000) | EXT_FIXED_ID_ARB_H(pCanMsg->Id);
}
CAN->sMsgObj[0].MCR = (CAN->sMsgObj[0].MCR & 0xFCF0) | pCanMsg->Dlc;
@@ -526,7 +529,8 @@
{
/* extended ID */
pCanMsg->IdType = CAN_EXT_ID;
- pCanMsg->Id = ((CAN->sMsgObj[1].A2R >> 2) & 0x07FF) | ((u32)CAN->sMsgObj[1].A1R << 11) | (((u32)CAN->sMsgObj[1].A2R & 0x0003) << 27);
+ //pCanMsg->Id = ((CAN->sMsgObj[1].A2R >> 2) & 0x07FF) | ((u32)CAN->sMsgObj[1].A1R << 11) | (((u32)CAN->sMsgObj[1].A2R & 0x0003) << 27);
+ pCanMsg->Id = CAN->sMsgObj[1].A1R + ( ( CAN->sMsgObj[1].A2R & 0x1fff ) >> 16 );
}
pCanMsg->Dlc = CAN->sMsgObj[1].MCR & 0x0F;
Modified: trunk/firmware/arm/str/common/str72x_lib/libSTR72x_lib.a
===================================================================
(Binary files differ)
Modified: trunk/firmware/arm/str/common/str72x_lib/src/720_can.c
===================================================================
--- trunk/firmware/arm/str/common/str72x_lib/src/720_can.c 2008-02-17 11:51:48 UTC (rev 843)
+++ trunk/firmware/arm/str/common/str72x_lib/src/720_can.c 2008-02-17 12:24:27 UTC (rev 844)
@@ -348,14 +348,16 @@
if ((CAN->sMsgObj[0].ARB2 & CAN_ARB_XTD) == 0)
{
// standard ID
- CAN->sMsgObj[0].ARB1 = 0;
- CAN->sMsgObj[0].ARB2 = (CAN->sMsgObj[0].ARB2 & 0xE000) | STD_FIXED_ID_ARB(pCanMsg->Id);
+ CAN->sMsgObj[0].ARB1 = 0;
+ CAN->sMsgObj[0].ARB2 = (CAN->sMsgObj[0].ARB2 & 0xE000) | STD_FIXED_ID_ARB(pCanMsg->Id);
}
else
{
- // extended ID
- CAN->sMsgObj[0].ARB1 = EXT_FIXED_ID_ARB_L(pCanMsg->Id);
- CAN->sMsgObj[0].ARB2 = (CAN->sMsgObj[0].ARB2 & 0xE000) | EXT_FIXED_ID_ARB_H(pCanMsg->Id);
+ // extended ID - fixed AKHE
+ //CAN->sMsgObj[0].ARB1 = EXT_FIXED_ID_ARB_L(pCanMsg->Id);
+ //CAN->sMsgObj[0].ARB2 = (CAN->sMsgObj[0].ARB2 & 0xE000) | EXT_FIXED_ID_ARB_H(pCanMsg->Id);
+ CAN->sMsgObj[0].ARB1 = pCanMsg->Id & 0xffff;
+ CAN->sMsgObj[0].ARB2 = (CAN->sMsgObj[0].ARB2 & 0xE000) | ( ( pCanMsg->Id >> 16 ) & 0xffff);
}
CAN->sMsgObj[0].MSGC = (CAN->sMsgObj[0].MSGC & 0xFEF0) | CAN_CTL_NEWDAT | CAN_CTL_TXRQST | pCanMsg->Dlc;
@@ -408,9 +410,10 @@
}
else
{
- // extended ID
+ // extended ID - Fixed AKHE
pCanMsg->IdType = CAN_EXT_ID;
- pCanMsg->Id = ((CAN->sMsgObj[1].ARB2 >> 2) & 0x07FF) | ((u32)CAN->sMsgObj[1].ARB1 << 11) | (((u32)CAN->sMsgObj[1].ARB2 & 0x0003) << 27);
+ //pCanMsg->Id = ((CAN->sMsgObj[1].ARB2 >> 2) & 0x07FF) | ((u32)CAN->sMsgObj[1].ARB1 << 11) | (((u32)CAN->sMsgObj[1].ARB2 & 0x0003) << 27);
+ pCanMsg->Id = CAN->sMsgObj[1].ARB1 + ( ( CAN->sMsgObj[1].ARB2 & 0x1fff ) >> 16 );
}
pCanMsg->Dlc = CAN->sMsgObj[1].MSGC & 0x0F;
@@ -469,9 +472,11 @@
}
else
{
- // extended ID
- CAN->sMsgObj[0].ARB1 = EXT_FIXED_ID_ARB_L(pCanMsg->Id);
- CAN->sMsgObj[0].ARB2 = (CAN->sMsgObj[0].ARB2 & 0xE000) | EXT_FIXED_ID_ARB_H(pCanMsg->Id);
+ // extended ID - Fixed AKHE
+ //CAN->sMsgObj[0].ARB1 = EXT_FIXED_ID_ARB_L(pCanMsg->Id);
+ //CAN->sMsgObj[0].ARB2 = (CAN->sMsgObj[0].ARB2 & 0xE000) | EXT_FIXED_ID_ARB_H(pCanMsg->Id);
+ CAN->sMsgObj[0].ARB1 = pCanMsg->Id & 0xffff;
+ CAN->sMsgObj[0].ARB2 = (CAN->sMsgObj[0].ARB2 & 0xE000) | ( ( pCanMsg->Id >> 16 ) & 0xffff);
}
CAN->sMsgObj[0].MSGC = (CAN->sMsgObj[0].MSGC & 0xFCF0) | pCanMsg->Dlc;
@@ -517,7 +522,8 @@
{
// extended ID
pCanMsg->IdType = CAN_EXT_ID;
- pCanMsg->Id = ((CAN->sMsgObj[1].ARB2 >> 2) & 0x07FF) | ((u32)CAN->sMsgObj[1].ARB1 << 11) | (((u32)CAN->sMsgObj[1].ARB2 & 0x0003) << 27);
+ //pCanMsg->Id = ((CAN->sMsgObj[1].ARB2 >> 2) & 0x07FF) | ((u32)CAN->sMsgObj[1].ARB1 << 11) | (((u32)CAN->sMsgObj[1].ARB2 & 0x0003) << 27);
+ pCanMsg->Id = CAN->sMsgObj[1].ARB1 + ( ( CAN->sMsgObj[1].ARB2 & 0x1fff ) >> 16 );
}
pCanMsg->Dlc = CAN->sMsgObj[1].MSGC & 0x0F;
Modified: trunk/firmware/arm/str/common/str73x_lib/src/73x_can.c
===================================================================
--- trunk/firmware/arm/str/common/str73x_lib/src/73x_can.c 2008-02-17 11:51:48 UTC (rev 843)
+++ trunk/firmware/arm/str/common/str73x_lib/src/73x_can.c 2008-02-17 12:24:27 UTC (rev 844)
@@ -117,7 +117,7 @@
void CAN_SetBitrate(CAN_TypeDef *CANx, u32 bitrate)
{
CANx->BTR = CanTimings[bitrate]; /*write the predefined timing value*/
- CANx->BRPR = 0; /*clear the Extended Baud Rate Prescaler*/
+ CANx->BRPR = 0; /*clear the Extended Baud Rate Prescaler*/
}
/********************************************************************************/
Modified: trunk/firmware/arm/str/common/str75x_lib/libSTR75x_lib.a
===================================================================
(Binary files differ)
Modified: trunk/firmware/arm/str/common/str75x_lib/src/75x_can.c
===================================================================
--- trunk/firmware/arm/str/common/str75x_lib/src/75x_can.c 2008-02-17 11:51:48 UTC (rev 843)
+++ trunk/firmware/arm/str/common/str75x_lib/src/75x_can.c 2008-02-17 12:24:27 UTC (rev 844)
@@ -417,9 +417,11 @@
}
else
{
- /* extended ID*/
- CAN->sMsgObj[0].A1R = EXT_FIXED_ID_ARB_L(pCanMsg->Id);
- CAN->sMsgObj[0].A2R = (CAN->sMsgObj[0].A2R & 0xE000) | EXT_FIXED_ID_ARB_H(pCanMsg->Id);
+ /* extended ID - Fixed AKHE*/
+ //CAN->sMsgObj[0].A1R = EXT_FIXED_ID_ARB_L(pCanMsg->Id);
+ //CAN->sMsgObj[0].A2R = (CAN->sMsgObj[0].A2R & 0xE000) | EXT_FIXED_ID_ARB_H(pCanMsg->Id);
+ CAN->sMsgObj[0].A1R = pCanMsg->Id & 0xffff;
+ CAN->sMsgObj[0].A2R = (CAN->sMsgObj[0].A2R & 0xE000) | ( ( pCanMsg->Id >> 16 ) & 0xffff);
}
CAN->sMsgObj[0].MCR = (CAN->sMsgObj[0].MCR & 0xFEF0) | CAN_MCR_NEWDAT | CAN_MCR_TXRQST | pCanMsg->Dlc;
@@ -483,11 +485,12 @@
}
else
{
- /* extended ID*/
+ /* extended ID - Fixed AKHE*/
pCanMsg->IdType = CAN_EXT_ID;
- pCanMsg->Id = ((CAN->sMsgObj[1].A2R >> 2) & 0x07FF);
- pCanMsg->Id |= ((u32)CAN->sMsgObj[1].A1R << 11);
- pCanMsg->Id |= (((u32)CAN->sMsgObj[1].A2R & 0x0003) << 27);
+ //pCanMsg->Id = ((CAN->sMsgObj[1].A2R >> 2) & 0x07FF);
+ //pCanMsg->Id |= ((u32)CAN->sMsgObj[1].A1R << 11);
+ //pCanMsg->Id |= (((u32)CAN->sMsgObj[1].A2R & 0x0003) << 27);
+ pCanMsg->Id = CAN->sMsgObj[1].A1R + ( ( CAN->sMsgObj[1].A2R & 0x1fff ) >> 16 );
}
pCanMsg->Dlc = CAN->sMsgObj[1].MCR & 0x0F;
@@ -555,9 +558,11 @@
}
else
{
- /* extended ID*/
- CAN->sMsgObj[0].A1R = EXT_FIXED_ID_ARB_L(pCanMsg->Id);
- CAN->sMsgObj[0].A2R = ((CAN->sMsgObj[0].A2R) & 0xE000) | EXT_FIXED_ID_ARB_H(pCanMsg->Id);
+ /* extended ID Fixed AKHE*/
+ //CAN->sMsgObj[0].A1R = EXT_FIXED_ID_ARB_L(pCanMsg->Id);
+ //CAN->sMsgObj[0].A2R = ((CAN->sMsgObj[0].A2R) & 0xE000) | EXT_FIXED_ID_ARB_H(pCanMsg->Id);
+ CAN->sMsgObj[0].A1R = pCanMsg->Id & 0xffff;
+ CAN->sMsgObj[0].A2R = (CAN->sMsgObj[0].A2R & 0xE000) | ( ( pCanMsg->Id >> 16 ) & 0xffff);
}
CAN->sMsgObj[0].MCR = (CAN->sMsgObj[0].MCR & 0xFCF0) | pCanMsg->Dlc;
@@ -608,11 +613,12 @@
}
else
{
- /* extended ID*/
+ /* extended ID - Fixed AKHE */
pCanMsg->IdType = CAN_EXT_ID;
- pCanMsg->Id = ((CAN->sMsgObj[1].A2R >> 2) & 0x07FF);
- pCanMsg->Id |= ((u32)CAN->sMsgObj[1].A1R << 11);
- pCanMsg->Id |= (((u32)CAN->sMsgObj[1].A2R & 0x0003) << 27);
+ //pCanMsg->Id = ((CAN->sMsgObj[1].A2R >> 2) & 0x07FF);
+ //pCanMsg->Id |= ((u32)CAN->sMsgObj[1].A1R << 11);
+ //pCanMsg->Id |= (((u32)CAN->sMsgObj[1].A2R & 0x0003) << 27);
+ pCanMsg->Id = CAN->sMsgObj[1].A1R + ( ( CAN->sMsgObj[1].A2R & 0x1fff ) >> 16 );
}
pCanMsg->Dlc = CAN->sMsgObj[1].MCR & 0x0F;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|