Forum: Mikrocontroller und Digitale Elektronik GPIO bcm2835 raspberry


von rasp (Gast)


Lesenswert?

Hallo zusammen,

ich habe mir GPIO Lib für raspberry heruntergeladen und erfolgreich 
einsetzen können.
Ich habe einige Funktionen angeschaut und verstehe nicht ganz den Code.
Wäre sehr dankbar, wenn jemand mir den erklären könnte.

Hier sind die wichtigen Definitionen:

#define BCM2835_PERI_BASE           0x20000000
#define BCM2835_GPIO_BASE          (BCM2835_PERI_BASE + 0x200000)
#define BCM2835_GPFSEL0             0x0000 ///< GPIO Function Select 0
#define BCM2835_GPSET0              0x001c ///< GPIO Pin Output Set 0
#define BCM2835_GPCLR0              0x0028 ///< GPIO Pin Output Clear 0

Funktion Select Function - input/output

void bcm2835_gpio_fsel(uint8_t pin, uint8_t mode)
{
      pin = 11, mode = 0b001;
    // Function selects are 10 pins per 32 bit word, 3 bits per pin
    volatile uint32_t* paddr = bcm2835_gpio + BCM2835_GPFSEL0/4 + 
(pin/10);
    uint8_t   shift = (pin % 10) * 3;
    uint32_t  mask = BCM2835_GPIO_FSEL_MASK << shift;
    uint32_t  value = mode << shift;
    bcm2835_peri_set_bits(paddr, value, mask);
}

Nun meine Frage, Welchen Sinn macht diese Operation BCM2835_GPFSEL0/4, 
wenn
BCM2835_GPFSEL0 = 0 (0x0000)

Wenn ich selber paddr bei pin =11 und mode = 0b001 ausrechne, dann komme 
ich auf 0x20200001, stimmt das?

Danke und Grüße rasp

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.