www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bytes aus Register auslesen


Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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
message  CAN1.SPEED Speed  =
{
 byte (0) = 0x1,   
 byte (1) = 0x2,
 byte (2) = 0x3,   
 byte (3) = 0x4,
 byte (4) = 0x5, 
 byte (5) = 0x6,
 byte (6) = 0x7,
 byte (7) = 0x8
};

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

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

Wenn eine Nachricht empfangen wurde wird dieser Interrupt gestartet:

// Receive Queue: one queue for each CAN port
CANALL_MSGRX mRxCAN[MAX_CANPORTS][MAX_QUEUE];

void CANAll_CANISR_Rx1 (void)  __irq
{
unsigned int *pDest;
unsigned int *data;

  // initialize destination pointer
  pDest = (unsigned int *) &(mRxCAN[0][mRxIN[0]]);
  *pDest = C1RFS;  // Frame

  pDest++;
  *pDest = C1RID; // ID

  pDest++;
  *pDest = C1RDA; // Data A

  pDest++;
  *pDest = C1RDB; // Data B

  // Adjust IN pointer
  mRxIN[0]++;
  if (mRxIN[0] >= MAX_QUEUE)
  {
    mRxIN[0] = 0;
  }

  C1CMR = 0x04; // release receive buffer
  VICVectAddr = 0xFFFFFFFFL; // acknowledge Interrupt

}



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 ?!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.