Aufbau der Projekthardware

Wie bereits ausgeführt haben wir verschiedene Möglichkeiten, die Projekthardware zu realisieren. Das Bild zeigt die aus Standardkomponenten zusammengesteckte Lösung.

Die favorisierte Variante einer fest verdrahteten Lösung wird im Folgenden kurz umrissen und getestet.

Das 1. Gebot des Informatikers: DU SOLLST NICHT LÖTEN!
Man möge mir meine mangelnden Lötfähigkeiten nachsehen. Ich poste die Bilder trotzdem ;-)

Hardwaretest

Falls Sie jetzt noch das Klassendiagramm geöffnet haben wählen Sie im Kontextmenü (rechte Maustaste) des Diagramms den Menüpunkt nach oben. Sollte das Projekt nicht mehr geöffnet sein, öffnen sie das SiSy UML-Projekt wieder. Legen Sie ein neues Klassendiagramm an und wählen Sie die Sprache ARM C++. Beachten Sie die Einstellungen für die Zielplattform STM32F4-Discovery. Beim Öffnen des Diagramms (rechte Maustaste, nach unten) laden Sie die Diagrammvorlage für eine ARM C++ Applikation.

wiederholen Sie den Vorgang für jede zu testenden Hardware. Vermeiden sie es, alle Tests in einem Klassendiagramm zu realisieren. halten Sie die Komplexität der Test-Firmware so gering wie möglich. Betrachten Sie die einzelnen Tests als Übungen zur Festigung der bisher erworbenen Kenntnisse ;-)

Das folgende Blockdiagramm zeigt den betreffenden Ausschnitt aus dem Gesamtsystem.

Für diejenigen die das System fest verdrahtet aufbauen wollen ist jetzt der Zeitpunkt gekommen die LEDs mit den Pins PD0, PD1 und PD4 zu verbinden.

Um die korrekte Verbindung der LEDs zu testen erstellen Sie folgendes Programm:

onStart
ledRed.blink(1);
ledYellow.blink(2);
ledGreen.blink(3);

Übersetzen Sie das Programm. Korrigieren Sie ggf. Schreibfehler. Übertragen Sie das lauffähige Programm in den Programmspeicher des Controllers.

  1. Erstellen (Kompilieren und Linken)
  2. Brennen
  3. Testen

Korrigieren sie ggf. Fehler in der Schaltung und wiederholen Sie den Test.

Das folgende Blockdiagramm zeigt den betreffenden Ausschnitt aus dem Gesamtsystem.

Für diejenigen die das System fest verdrahtet aufbauen wollen ist jetzt der Zeitpunkt gekommen die RxD der USB-UART-Bridge mit dem Pins PD8 zu verbinden.

Legen Sie ein neues Klassendiagramm an und erstellen Sie folgendes Testprogramm:

onWork
terminal.sendString("USART-Test\n");
waitMs(500);

Übersetzen Sie das Programm. Korrigieren Sie ggf. Schreibfehler. Übertragen Sie das lauffähige Programm in den Programmspeicher des Controllers.

  1. Erstellen (Kompilieren und Linken)
  2. Brennen
  3. Testen

Korrigieren sie ggf. Fehler in der Schaltung und wiederholen Sie den Test.

Das folgende Blockdiagramm zeigt den betreffenden Ausschnitt aus dem Gesamtsystem.

Für diejenigen die das System fest verdrahtet aufbauen wollen ist jetzt der Zeitpunkt gekommen den Lichtsensor mit dem Pin PC2 zu verbinden.

Legen Sie ein neues Klassendiagramm an und erstellen folgendes Testprogramm:

onWork
String text;
uint16_t helligkeit;
helligkeit=lichtsensor.getValue();
text.format("Helligkeit=%d\n",helligkeit);
terminal.sendString(text);
waitMs(500);

Übersetzen Sie das Programm. Korrigieren Sie ggf. Schreibfehler. Übertragen Sie das lauffähige Programm in den Programmspeicher des Controllers.

  1. Erstellen (Kompilieren und Linken)
  2. Brennen
  3. Testen

Korrigieren sie ggf. Fehler in der Schaltung und wiederholen Sie den Test.

Das folgende Blockdiagramm zeigt den betreffenden Ausschnitt aus dem Gesamtsystem.

Für diejenigen die das System fest verdrahtet aufbauen wollen ist jetzt der Zeitpunkt gekommen den Speaker mit dem Pin PE5 zu verbinden.

Legen Sie ein neues Klassendiagramm an und erstellen folgendes Testprogramm:

onTimer10ms
speaker.toggle();

Übersetzen Sie das Programm. Korrigieren Sie ggf. Schreibfehler. Übertragen Sie das lauffähige Programm in den Programmspeicher des Controllers.

  1. Erstellen (Kompilieren und Linken)
  2. Brennen
  3. Testen

Korrigieren sie ggf. Fehler in der Schaltung und wiederholen Sie den Test.

Das folgende Blockdiagramm zeigt den betreffenden Ausschnitt aus dem Gesamtsystem.

Zum Glück sind für diesen Baustein keine Lötarbeiten nötig. Legen Sie ein neues Klassendiagramm an. Laden Sie aus dem SiSy-LibStore das Paket Filesystem und erstellen folgendes Testprogramm:

onStart
sd.mount();
sd.testDatei.create("/test.txt",true);
sd.testDatei.write("Hallo µSD-Karte!\n");
sd.testDatei.close();
terminal.sendString("Datei test.txt wurde angelegt!");
onWork
if(sd.testDatei.open("/test.txt"))
{
	String text;	
	sd.testDatei.read(text);
	terminal.sendString(text);
	sd.testDatei.close();
}
else
{
	terminal.sendString("\nEs ist ein Fehler aufgetreten!");
}
waitMs(500);

Übersetzen Sie das Programm. Korrigieren Sie ggf. Schreibfehler. Übertragen Sie das lauffähige Programm in den Programmspeicher des Controllers. Verwenden Sie eine µSD-Karte bis 1GB Kapazität und mit FAT16-Formatierung.

  1. Erstellen (Kompilieren und Linken)
  2. Brennen
  3. Testen

Korrigieren sie ggf. Fehler in der Schaltung und wiederholen Sie den Test.

Das folgende Blockdiagramm zeigt den betreffenden Ausschnitt aus dem Gesamtsystem.

Für alle die das System fest verdrahtet aufbauen möchten ist jetzt der Augenblick gekommen die I²C Leitungen SCL und SDA mit den Pins PB6 und PB7 zu verbinden.

Wer die Bausteine diskret auf den Lochrastern verbauen möchte für denjenigen hier die ausführliche Bauanleitung.

Erstellen Sie folgendes Testprogramm:

onWork
uint8_t wert;
wert=sensor.getValue();
terminal.sendByte(wert);
waitMs(500);

Übersetzen Sie das Programm. Korrigieren Sie ggf. Schreibfehler. Übertragen Sie das lauffähige Programm in den Programmspeicher des Controllers.

  1. Erstellen (Kompilieren und Linken)
  2. Brennen
  3. Testen, erwärmen Sie den Sensor kurz z.B. durch berühren mit dem Finger

Korrigieren sie ggf. Fehler in der Schaltung und wiederholen Sie den Test.

Das folgende Blockdiagramm zeigt den betreffenden Ausschnitt aus dem Gesamtsystem.

Da es sich bei I²C um einen Bus handelt sind mit den vorher gefertigten Verbindungen auch die für die Echtzeituhr bereits hergestellt. Legen Sie ein neues Klassendiagramm an und erstellen folgendes Testprogramm:

onStart
uhr.config();
uhr.start();
uhr.setTime("17:34:00");
onWork
uhr.read();
terminal.sendByte(uhr.seconds);
waitMs(1000);

Übersetzen Sie das Programm. Korrigieren Sie ggf. Schreibfehler. Übertragen Sie das lauffähige Programm in den Programmspeicher des Controllers.

  1. Erstellen (Kompilieren und Linken)
  2. Brennen

Korrigieren sie ggf. Fehler in der Schaltung und wiederholen Sie den Test.

Nächster Schritt

Wenn jede Hardwarekomponente den Einzeltest erfolgreich bestanden hat kann mit der Entwicklung der eigentlichen Firmware begonnen werden. Sollten eine oder mehrere Hardwarekomponenten die oben aufgeführten Tests nicht erfolgreich absolviert haben müssen zuerst die Fehler ermittelt und behoben werden bevor es weiter gehen kann.