Zugriff auf Register über Pointer

#1141277
Lesenswert?

Ich möchte auf beide UART Schnittstellen eines Atmega64 zugreifen. Dabei 
wäre es sehr praktisch, wenn der Registerzugriff über einen Pointer 
geschieht.

z.B. wie folgt
1
void SerialEnRc(unsigned char Value)
2
{
3
    if (Value == ON) {
4
        SerialGetCurrUCSRB() |= (1<<RXEN);
5
    } else {
6
        SerialGetCurrUCSRB() &= ~(1<<RXEN);
7
    }
8
}

Ist dies möglich?
#1141368
Lesenswert?

Doch noch eine weitere Frage, wenn auch nahe an "Off-Topic":

Funktionen wie folgende werde ich nun eine ganze Reihe haben (je nach 
dem viele Register in ansprechen möchte). Mir fällt leider nicht ein, 
wie ich das Ganze noch ein wenig EINDAMPFEN/VEREINFACHEN könnte. 
Werkzeuge wie "##" kann ich in Echtzeit nun mal nicht nutzen.
1
volatile unsigned char *SerialGetCurrUCSRA()
2
{
3
    switch (Serial->CurrChannel){
4
        case 1:
5
            return &UCSR1A;
6
        default:
7
            return &UCSR0A;
8
    }
9
}
10
volatile unsigned char *SerialGetCurrUCSRB()
11
{
12
    switch (Serial->CurrChannel){
13
        case 1:
14
            return &UCSR1B;
15
        default:
16
            return &UCSR0B;
17
    }
18
}
19
volatile unsigned char *SerialGetCurrUCSRC()
20
{
21
    switch (Serial->CurrChannel){
22
        case 1:
23
            return &UCSR1C;
24
        default:
25
            return &UCSR0C;
26
    }
27
}
28
...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren