WELCOME

Freescale Kinetis Tower

Kinetis ARM Cortex M4 Programme


Hier möchte ich meine Programme mit dem Tower vorstellen.
So nach und nach werden weiter Programme mit Erklärung folgen.
Zum Arbeiten mit dem Tower sollte man mindestens folgende Datenblätter gesichtet haben:
ARM Cortex M4 (download datasheet)
Freescale Kinetis (download datasheet)
Freescale Tower (download datasheet)
Weitere Informationen auf freescale.com und towergeeks.org.

Erstes Programm

Pseudozufällige HEX-Zahl anzeigen

Das war die 5te Programmierübung im MCT-Praktikum. Aufgabe war es an den 4 LEDs die auf dem Tower-Board sind eine zufällige HEX-Zahl darzustellen.
Drücken des Tasters (SW2) wird eine pseudozufällige Zahl erzeugt. Dies geschieht durch einen Zähler der hochzählt solange SW2 gedrückt ist. Der hohe Takt und da der Taster nie exakt gleichlang gedrückt werden kann sorgen für die Zufallszahl.
Weiter werden dann die letzen 4 Bits festgehalten um diese Zahl dann an den 4 LEDs anzuzeigen. Durch den Shift-Operator werden die einzelnen Bits an die passende Position am Port des ARM geschoben. Dies ist nötig da die LEDs nicht nebeneinander angeschlossen sind, sondern an PortA: Pin 10 & Pin 11 und an Pin 28 & Pin 29.
In der ZIP ist das Programm (combined.c) und die Tower-Headerdatei (MK60N512VMD100.h)
Soweit denk ich verständlich erklärt, viel Spaß damit.(download ZIP)

Der PIT

Periodic Interrupt Timer und seine Eigenheiten

Als nächstes habe ich mir dann den Timer mit Interrupts vorgenommen. Im ersten Programm war ja noch eine extra Wartefunktion delay() definiert die ca. 1 Sekunde mit dem Assemblerbefehl "nop" nichts getan hat.
Ich wollte das mit dem Timer ersetzen. Habe ich nicht getan sondern einfach so versucht den PIT zum laufen zu bringen und alle 4 LEDs blinken lassen.
Die Initalisierung wird in einigen Beispielen und Foren schon beschrieben. Große Probleme hatte ich mit der Interrupt Routine da ich lange nicht herrausgefunden hatte wie ich die Timer Interrupt Flag wieder zurücksetzen kann.
In der PIT_CH0_INT(void) wird nun der Timer ausgeschaltet, die Flag zurückgesetzt und der Timer wieder eingeschaltet.
In der ZIP ist das Programm (combined.c) und die Tower-Headerdatei (MK60N512VMD100.h)
Soweit denk ich verständlich erklärt, viel Spaß damit.(download ZIP)

Das TSI

Touch Sensing Interface und Beispielcode von Freescale

Nach ziemlichen Googlen und Datenblatt lesen habe ich einfach den Beispielcode von Freescale genommen. Man muss das Rad ja nicht neu erfinden.
Hauptsächlich habe ich das TSI rückwärts verstanden und kennengelernt durch das auseinandernehmen des BSP-Codes und nachlesen im Datenblatt. Hoffe das Programm ist ausreichend auskommentiert das es einfacher zu verstehen ist als einfach nur im Datenblatt zu lesen und versuchen einen Reim darauf zu machen wie das jetzt funktionieren soll.
In der TSI_Init(void) wird ein Timer gestartet und zu jedem Interrupt die Touchpads abgefragt. Wird ein Pad berührt wechselt die LED darunter ihren Status.
Für weitere TSI-Programme empfiehlt Freescale seine Touch-Sensing Software.
In der ZIP ist das Programm (combined.c) und die Tower-Headerdatei (MK60N512VMD100.h)
Soweit denk ich verständlich erklärt, viel Spaß damit.(download ZIP)

Ich übernehme keinerlei Haftung über die Richtigkeit des Inhalts (siehe Impressum)
cc-by-sa: David Thiesbrummel

Creative Commons Lizenzvertrag