So kann man ein Blockschema benutzen...
… um sich im User Guide zu orientieren.
Wenn man schon mal verstanden hat das so einem Portpin verschiedene Funktionen zugewiesen werden können, kann man beginnen auszusuchen was man denn haben will. Für unser PWM Experiment soll ja die Ausgabe von Timer-A auf P2.5 rauskommen. Am Portpin ist abzulesen das dazu der Funktionsblock TA1.2 des Timers genommen werden muss. Also stellt man mit P2SEL ein das der 2. Block vom Timer hier rein kommt. Außerdem stellt man noch ein das es ja eine Ausgabe sein soll, also im P2DIR für den Pin muss die „1“ hin. Damit ist der Portpin bereits fertig konfiguriert. Im Forthprogramm dazu ist das einfach zu erkennen denke ich.
Im Timer-A Schema sieht man gleich das es zwei Abschnitte sind um die man sich kümmern muss. Einmal die Basisfunktion des Timers (oberes Kästchen), und dann den Funktionsblock. Zwei Basisfunktionen müssen festgelegt werden. Zum einen von wo der Takt für den Timer her kommen soll (TASSELx
). Und zum anderen in welchem Modus der Timer arbeiten soll (MCx
). Hier kann der Timer auch angehalten werden (MCx=0
). Dann muss noch festgelegt werden welches Ereignis des Timers auf die Ausgabeleitung kommt. Das wird mit dem OUTMODx
gemacht. Damit ist eigentlich alles gesetzt um den Timer in Betrieb zu nehmen. In die Register TACCR0 und TACCR2 schreibt man dann noch die Werte die mit dem Zählerstand vergleichen werden sollen. Danach kann MCx gesetzt werden und der Timer läuft los.
Nachdem man also so einen Entwurf für sich gemacht hat, geht man her und sucht sich die Registeradressen zusammen in denen man Bits setzen oder löschen muss. Und dann die Werte die in in diese Register kommen sollen. Da die Register allesamt RAM sind, kann man sie interaktiv mit dem Forthwort !
setzen. Oder einzelne Bits davon mit CSET
oder CCLR
abändern.
So eignet sich die Interaktivität von Forth bestens um sich mit den Eigenschaften der MCU vertraut zu machen.