der runde würfel

31. März 2011

Netduino Kapitel 1, Abschnitt 2

Kategorie: Computer,Haus,Privat — Schlagwörter: , , , , , , , , , , , , — bigfoot @ 23:34

Kapitel 1, Abschnitt 2

Nachdem hoffentlich schönen Erfolgserlebnisses, wollen wir uns nun der dazugehörigen trockenen Theorie widmen. Wems gefällt, kann ja während dessen die blaue Leuchtdiode weiter blinken lassen. Nur nicht verückt machen lassen.

Für den einen oder anderen gehen die Informationen an dieser Stelle nicht tief genug. Ich bin jedoch der Meinung, dass das tiefergehende Wissen im Laufe des Programmierens automatisch kommt, bzw. erwähnt und erklärt werden muss. Wie auch im Abschnitt zuvor, geht es mir erstmal darum, überhaupt ein Ergebnis zu bekommen. Die Erklärung nach dem praktischen Beispiel, erschliesst sich einem viel einfacher, wenn man grob verstanden hat, was passiert ist.

Widmen wir uns nun dem Programm, wie zuvor bereits erfolgreich ausgeführt, Program.cs.

Im ersten Teil werden die entsprechenden Bibilotheken eingebunden (Englisch Librarys), in denen detailierte Informationen stehen, wie der Prozessor die Befehle interpretieren soll. Dann der Prozessor kennt einen Befehl wie “Thread.Sleep(100)” nicht. Diese Bibliotheken verweisen also auf Routinen, die es dem Prozessor ermöglichen, den geschriebenen Quellcode zu verstehen. Hierbei weiss also das Visual Studio, wie es das geschriebene Programm übersetzen soll. Das nennt man dann Compilen.

In diesen beiden Librarys, stehen Grundlagen zu den Ein- und Ausgaben; ebenso wird hier dem Prozessor Informationen gegeben, wie die einzelnen Abläufe sich verhalten sollen. Denn wie in unserem Beispiel, soll das Licht 100ms an sein und die selbe Zeit aus sein. Woher soll also der Prozessor wissen, wie lange 100ms sind? Der Prozessor kann mit den unterschiedlichsten Frequenzen arbeiten. Als Maximum ist für den AT91SAM7X-512 55Mhz angegeben. Doch was bedeutet das?

Wenn Ihr Euch in Eurem Zimmer vor den Lichtschalter stellt und den Lichtschalter 55.000.000 Mal pro Sekunde Ein- und wieder Ausschaltet, wird einem Bewusst, wie kurz die Lebensdauer eines solchen Schalters ist. Er ist vermutlich nach einer tausendstel Sekunde kaputt. Aber zurück zum Ernst der Sache. Wenn das Licht leuchtet, fliesst Strom. Hierbei ist das Leuchten der Deckenlampe, mit der logischen “1″ gleichzusetzen. Das Gegenteil davon, ist “0″, gleichbedeutend mit Licht aus. Im Prozessor passiert nichts anderes, ausser das die Spannung nicht 230V beträgt, sondern Beträgt bis zu 5V. Auf die verschiedenen Spannungen, Betriebsspannung 1.8V-3.3V und den weiteren Spannungen. Hier fallen dann oft Begriffe wie “CMOS” oder “TTL”. Das führt jedoch an dieser Stelle zu weit. Zu diesen Begrifflichkeiten kommen wir später zurück. Der Prozessor kann also erstmal gar nicht Wissen, was Zeit ist, geschweige denn 100ms. Denn man kann den Prozessor ja auch mit 8Mhz laufen lassen. Ausserdem ist der Lichtschalter in dem Prozessor ein Transistor, der tatsächlich 55 Millionen mal pro Sekunde Schalten kann.

using System;
using System.Threading;
In den Microsoft Librarys stehen die erforderlichen Referenzen zum .NET micro Framework. Hierzu kommen wir später, wenn wir aus diesen Librarys etwas brauchen.

using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
Hier stehen nun endlich die Netduinospezifischen Informationen:

using SecretLabs.NETMF.Hardware;
using SecretLabs.NETMF.Hardware.Netduino;

Aus diesen Bibliotheken erfährt das Visual Studio, was denn alles so machbar ist und vor allem, wie die Dinge denn beim Namen genannt werden.

Der Namespace beinhaltet den Namen der Applikation, gefolgt von C# bedingten Formaten und Definitionen.

namespace NetduinoApplication5
{
    public class Program
    {
        public static void Main()
        {
Hier ist dann unser eigentliches Programm.
Zuerst wird die Leuchtdiode benannt und nach dem Gleichheitszeichen definiert. In den Klammern befinden sich nun die Netduino spezifischen Definitionen, sowie deren Default Status.

             OutputPort Led = new OutputPort(Pins.ONBOARD_LED, false);

Hier beginnt nun eine Endlosschleife.

             while (true)
              {
                Led.Write(true);
Der Led, wie oben definiert, wird nun der Wert “True” zugewiesen. Die Led geht an.

                Thread.Sleep(100);
Hier ist ein systemspezifischer Wert, wie im ersten “using” Block zugewiesen. 100ms soll nun an dieser Stelle des Programms gewartet werden.

                Led.Write(false);
                Thread.Sleep(100);
              }
Die geschweifte Klammer zu, zeigt an, wieviel Quellcode in der Schleife laufen soll.

        }
    }
}

Aufgabe:
Nun sollte es klar sein, wie man es schafft, das die Led 50ms leuchtet, 30ms aus ist und dann 30ms an und 50ms aus ist.

Und im nächsten Abschnitt, kommen wir zur Lösung der zuvor genannten Aufgabe, sowie zu weiteren Möglichkeiten der Programmierung.

Viel Spaß.

1 Kommentar »

  1. Hast du noch naehere Informationen darueber ?

    Kommentar by Bernd — 3. Februar 2012 @ 21:39

RSS Feed für Kommentare zu diesem Artikel. TrackBack URL

Hinterlasse einen Kommentar

powered by wordpress; my content © 2009 - 2019