Forum: Mikrocontroller und Digitale Elektronik Bytes aus Register auslesen


von Matthias (Gast)


Lesenswert?

Hallo,

ich habe einen LPC 2119 und möchte ein CAN drauf zum laufen bekommen.
Es klappt auch alles soweit nur tu ich mir schwer die einzelnen Bytes 
der Botschaften auszulesen.

Auszug aus CANoe
1
message  CAN1.SPEED Speed  =
2
{
3
 byte (0) = 0x1,   
4
 byte (1) = 0x2,
5
 byte (2) = 0x3,   
6
 byte (3) = 0x4,
7
 byte (4) = 0x5, 
8
 byte (5) = 0x6,
9
 byte (6) = 0x7,
10
 byte (7) = 0x8
11
};

diese Nachricht schicke ich über den CAN. die Nachricht wird korrekt 
eingelesen und im Rgister C1RDA gespeichert.

Aufbau meiner CAN Nachricht:
1
typedef struct
2
{
3
  unsigned int Frame; // Bits 16..19: DLC - Data Length Counter
4
                      // Bit 30: Set if this is a RTR message
5
                      // Bit 31: Set if this is a 29-bit ID message
6
  unsigned int MsgID; // CAN Message ID (11-bit or 29-bit)
7
  unsigned int DatA;  // CAN Message Data Bytes 0-3
8
  unsigned int DatB;  // CAN Message Data Bytes 4-7
9
} CANALL_MSGRX;

Wenn eine Nachricht empfangen wurde wird dieser Interrupt gestartet:
1
// Receive Queue: one queue for each CAN port
2
CANALL_MSGRX mRxCAN[MAX_CANPORTS][MAX_QUEUE];
3
4
void CANAll_CANISR_Rx1 (void)  __irq
5
{
6
unsigned int *pDest;
7
unsigned int *data;
8
9
  // initialize destination pointer
10
  pDest = (unsigned int *) &(mRxCAN[0][mRxIN[0]]);
11
  *pDest = C1RFS;  // Frame
12
13
  pDest++;
14
  *pDest = C1RID; // ID
15
16
  pDest++;
17
  *pDest = C1RDA; // Data A
18
19
  pDest++;
20
  *pDest = C1RDB; // Data B
21
22
  // Adjust IN pointer
23
  mRxIN[0]++;
24
  if (mRxIN[0] >= MAX_QUEUE)
25
  {
26
    mRxIN[0] = 0;
27
  }
28
29
  C1CMR = 0x04; // release receive buffer
30
  VICVectAddr = 0xFFFFFFFFL; // acknowledge Interrupt
31
32
}



Laut LPC 2119 Datenblatt stehen im C1RDA register Byte (0) - Byte (3)

wie bekomm ich des hin, das Byte (1) auszulesen um es auf ein Display 
auszugeben ?!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.