Hallo,
ich wollte ein Programm für Mikrokontroller LM3S811 (enthält Evaluationsboard) schreiben: Solange Taste USER (PC4) betätigt sein wird => die LED PC5 sollte mit Hilfe von PWM-Einsatz blinken.
Das Programm (nicht fertig, Startvariante) ist im Anhang.
Vom Programmanfang Bis zur Stelle
//Idee wen Taste User....
wurde einfach LED5 (Port C) einfach zum leuchten gebracht. Das hat funktioniert.
Aber weiter wollte ich ein Programm schreiben, so dass beim betätigen von der Taste USER (PC4) sollte LED PC5 blinken. Frequenz und Puls-weiten-Verhältnis sollte beim Programmieren eingestellt wrden.
Ab der Stelle
while (1)
habe ich ein fremden Programmuster (Original_version von Datenblatt) genommen, welcher ich an diese Aufgabe und dieses Programm anpassen will. Nur habe ich dorthin die Bediengung
if (GPIO_PORTC_DATA_R & 16) // Wenn Taste PC4 gedrückt ist
..................
..................
else
{
GPIO_PORTC_DATA_R &= ~32; //sonst LED PC5 aus
}
eingeführt.
Ich bitte Sie, zu mir nicht zu streng sein, da ich ein Einsteiger bin und von Programmierung manche Basis-Sachen noch kennenlernen werde.
In diesem Zusttand passiert beim betätigen von Taste PC4 nichts...
Frage 1: Periode setzen:
// Set the period. For a 50 KHz frequency, the period = 1/50,000, or 20
// microseconds. For a 20 MHz clock, this translates to 400 clock ticks.
// Use this value to set the period.
Das ist klar dass 50kHz entspricht 20 mikrosekunden.
Wie kommt man bei 20 MHz auf 400 clock ticks ?
20 MHZ entsprocht 0,05 mikrosekunden. Wie kommt man davon auf 400 clock tics?
Frage 2: Was bedeuten das Zeichen ~
in Zeilen
GPIO_PORTC_DIR_R &= ~16; // Port 4 weil 16=2^4
GPIO_PORTC_DATA_R &= ~32; //sonst LED PC5 aus
Frage 3:
Ist die Bediengung
if (GPIO_PORTC_DATA_R & 16) // Wenn Taste PC4 gedrückt ist
an der richtigen Stelle eingesetzt?
Lesezeichen