FSST - Hardwarenahe Programmierung

STM Schalter

C++ Seite

Schreiben Sie ein Programm für das M3 Board, dass einen Lichtschalter simuliert. Es soll LED1 nach betätigen des Schalters sw1 (Joy-Stick-Pins) ein bzw. ausgeschaltet werden (sie Interrupts, wobei Sie die Tasten-ISR nur für ein Flag verwenden dürfen, dass dem Programm ein Ein-/Ausschalten der Led signalisiert.

DigitalOut Led1(LED1);
DigitalOut Led2(LED2);
DigitalOut Led3(LED3);
DigitalOut Led4(LED4);
DigitalIn SW2(p15); 
DigitalIn SW3(p12); 
DigitalIn SW4(p16); 
InterruptIn  SW1(p14);

void rise(void)
{  ... }

int main()
{
    sw1.rise(&rise);      //.fall(&fall);
//  ...
}


Das Zustandsdiagramm (Statechart Diagram) sieht folgendermaßen aus:

/media/uploads/fpucher/stm0.jpg


Weitere Aufgaben

  • Verwenden Sie für das Blinken der Led4 das Ticker Interface
  • Messen Sie die Zeit zwischen zwei Tastendrücken durch die Verwendung des Timer Interfaces
  • Fügen Sie den Zustand TimeOut hinzu (wie sieht das Zustandsdiagramm nun aus), der nach drücken der Taste SW2 aus dem Zustand Ein in diesen Zustand TimeOut wechselt und die gemessene Zeit im Sekundentakt auf die Serielle Schnittstelle schreibt.

/media/uploads/fpucher/stm0_1.jpg

  • Fügen Sie den Zustand TempOut hinzu (wie sieht das Zustandsdiagramm nun aus), der nach einem weiteren druck der Taste SW2 aus dem Zustand TimeOut in diesen Zustand TempOut wechselt und die Temperatur vom Temperatursensor LM75B im Sekundentakt auf die Serielle Schnittstelle schreibt. Durch nachmaliges drücken von SW2 soll wieder in den Zustand Ein geschaltet werden. /media/uploads/fpucher/stm0_2.jpg
  • Erweitern Sie das Zustandsdiagramm um den Error-State: Wenn für 10 Sekunden keine Taste gedrückt wird soll in den Zustand (Error) verzweigt werden. Verwenden Sie dafür das Timeout Interface /media/uploads/fpucher/stm0_3_error.jpg