eine funktion für verschiedene Register

Gast #4134989
Hi,
ich möchte gerne eine Funktion schreiben, mit der ich die Bits in den 
Identifier-Register für CAN beschreiben kann.
jetzt ist es so, dass ihc neben CAN1 auch CAN2 habe.

die Priorität im Identifier beschreibe ich momentan so
1
void C1PRIO(int value)
2
{
3
    C1TX0SIDbits.SID10 = (value & 0x10)>>4;
4
    C1TX0SIDbits.SID9  = (value & 0x08)>>3;
5
    C1TX0SIDbits.SID8  = (value & 0x04)>>2;
6
    C1TX0SIDbits.SID7  = (value & 0x02)>>1;
7
    C1TX0SIDbits.SID6  = (value & 0x01)>>0;
8
}

nur für einen CAN.
muss ich für den zweiten CAN die selbe Funktion noch einmal schreiben? 
oder gibt es eine möglichkeit, dass wenn ich C2PRIO(0x00) alle bits für 
das CAN2 register beschrieben werden?

Johannes
Statt der vorgefertigten Registerbeschreibungen aus dem Header kann man 
auch pointer für den Zugriff auf den sfr Bereich nutzen.

Ich würde dann aber auch gleich statt des Zugriffs auf einzelne Bits mit 
aufwändigen shifts direkt mit dem gesamten Register arbeiten.

irgendwas in dieser Richtung:

volatile C1TX0SIDBITS * ptr = 0x360;

ptr->SID10_6 = value & 0x1F;

Oder gleich
*ptr = ((*ptr) & 0xF800) | ((value << 11) & 0xF800)

ptr kannst du dann wahlweise eine Adresse auch CAN1 oder CAN2 zuweisen.

Richtig Sinn macht es, den Pointer an den Anfang des CAN Bereichs zeigen 
zu lassen und dann jeweils den Registeroffset hinzuzunehmen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 11 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.