Hi,
Ich spiele mit dem Gedanken, mich näher mit dem SAM D21 von Microchip zu
beschäftigen. Genauer gesagt, geht es um den ATSAMD21G18:
https://www.microchip.com/wwwproducts/en/ATsamd21g18
Entwicklungsumgebung ist im ersten Anlauf Keil.
Bei einer Google Suche über den SAM D21 bin ich mehrfach auf folgenden
Code gestoßen, um auf die einzelnen Bits in Registern zuzugreifen.
Beigefügt zwei Beispiele, die den internen 8MHz Oszillator
initialisieren:
1 | SYSCTRL->OSC8M.bit.PRESC = 0;
|
2 | SYSCTRL->OSC8M.bit.ONDEMAND = 1;
|
3 | SYSCTRL->OSC8M.bit.RUNSTDBY = 0;
|
4 | SYSCTRL->OSC8M.bit.ENABLE = 1;
|
Quelle:
https://archives.plil.fr/elopes/PFE15/raw/a752c7abc15410f36f02a6e750e6ef3f7b940a40/RIOT/cpu/samd21/cpu.c
Oder aber auch:
1 | /* OSC8M Internal 8MHz Oscillator */
|
2 | SYSCTRL->OSC8M.bit.PRESC = SYSTEM_OSC8M_DIV_1;
|
3 | SYSCTRL->OSC8M.bit.ONDEMAND = CONF_CLOCK_OSC8M_ON_DEMAND;
|
4 | SYSCTRL->OSC8M.bit.RUNSTDBY = CONF_CLOCK_OSC8M_RUN_IN_STANDBY;
|
5 |
|
6 | /* Enable OSC8M */
|
7 | SYSCTRL->OSC8M.reg |= SYSCTRL_OSC8M_ENABLE;
|
Quelle:
https://stackoverflow.com/questions/42025662/samd21-clock-configuration
Ich weiß, dass der -> Operator verwendet wird, wenn eine Pointervariable
auf ein Member eines Structs zugreift. Allerdings habe ich
Verständnisschwierigkeiten, den dahinter liegenden Sinn bei der
Anwendung von uC Initialisierungen zu verstehen (Da reichen meine
C-Kenntnisse noch nicht aus). Was würde passieren, wenn man anstelle von
1 | SYSCTRL->OSC8M.bit.ENABLE = 1;
|
nun
schreibt?
Das Datenblatt schreibt in Kapitel 17.6.6 vor:
> In order to enable OSC8M, the Oscillator Enable bit in the OSC8M Control >
register (OSC8M.ENABLE)
> must be written to one. OSC8M will not be enabled until OSC8M.ENABLE is > set.
In order to disable
> OSC8M, OSC8M.ENABLE must be written to zero. OSC8M will not be disabled > until
OSC8M is cleared.
Meine Frage:
Weshalb verwendet man den Arrow operator -> in den o.g. Beispielen, wenn
man auf OSC8M.bit.ENABLE ein Bit setzen oder löschen will? Irgendwas hat
da bei mir noch nicht ganz Klick gemacht.
Danke.
Gruß,