Schritt 13: Debuggen die Firmware mit alles hinzugefügt
Das beste Teil in schriftlicher Form eine Firmware ist der Moment, wenn alles auf Anhieb funktioniert. Ich neige dazu, eine Menge Code schreiben bevor Sie tatsächlich gehen und testen, also wenn es beim ersten Einschalten funktioniert, es noch besser ist. Leider und natürlich war dies nicht der Fall, ich musste eine ganze Reihe von Debuggen, um die Software zu funktionieren wie ich es mir vorgestellt.
Seit Debuggen wird kann und länger dauern als den eigentliche Code Eingabe - bereiten Sie sich auf das Schlimmste. Es gibt eine ziemlich lustigste und realistische Bild auf das Web, das die Phasen des Debuggens zeigt.
Gewusst wie: Debuggen
Um herauszufinden, wo Ihre Programmzähler zu einem bestimmten Zeitpunkt befindet, muss man denke an Möglichkeiten, um irgendeine Art von Rückmeldungen aus dem Bild. Der einfachste Weg zu gehen ist zu verwenden einige LEDs, Leuchten sie in der gegebenen Punkte im Code - auf diese Weise werden Sie wissen sicher, dass der Code geschrieben es ausgeführt wurde. Da ich eine unbenutzte 2 x 4-Buchsenleiste an Bord hatte, entwarf ich eine kleine Platine nur für debugging-Zwecke, ein Brett, das an diesen Header angeschlossen. Auf diese Weise konnte ich erkennen, ob die PIC die richtigen Entscheidungen im Algorithmus dabei ist. Das war relativ einfach einzuführen. Nach einer Weile waren die LEDs einfach nicht genug, und ich fing an irgendeine Art von debugging-Hafen, vielleicht ein SPI-Display, das die aufgezeichneten Strecken anzeigt. Es dauerte nicht lange, zu erkennen, dass - durch Zufall - ich zwei sehr wichtige PIC Pins dieser 2 x 4 Header holte: die RX und TX Pins der seriellen Schnittstelle! Ich zog einen Seriell-USB-Konverter, den ich bestellt von e-Bay vor einer Weile (Link), den und an diese Pins angeschlossen.
Die Hardware war fertig, ich brauchte nur einige Firmware, den Hafen mit den erforderlichen Parametern zu initialisieren und Kommunikations-Geschwindigkeit einzurichten. Dies kann durch das Datenblatt zu lesen, ich habe dies getan von Hand n-Mal, also diesmal habe ich beschlossen, einen Rechner für schnellere Entwicklung nutzen. Schaut euch die Bilder einer von ihnen hat dieser nette kleine Baudrate (Bits/Sekunde) Generator - gute Sachen! Ich habe 48 [MHz] Oszillator Geschwindigkeit und die Berechnungen für 115200 [Bits/Sekunde] gemacht.
Nachdem ich die Ersteinrichtung abgeschlossen hatte, schrieb ich einige allgemeinen Funktionen, ich wusste ich werde müssen, und auf eine Probe gestellt. Die serielle Schnittstelle, die bei der ersten Verhandlung arbeitete, war meine bessere Debugport einsatzbereit! Ich brauchte nur ein terminal-Programm in der Lage, die Daten zu visualisieren, die das Bild geschickt sein. Ganz einfach: Ich habe Hercules von hier: Link.
Vorteile, die den seriellen port
Nachdem ich die serielle Schnittstelle unternehmungslustig kam, wurde mein Leben zehn Mal einfacher. Jede Variable, jede Messung wurde alles, was in den PIC geschrieben wurde über diesen Debugport erreichbar. Schnell fand ich, dass die Variable, die die maximal 11 Abstandsmessungen gespeichert wurde "unsigned Char", aber einige Lesungen waren größer als dieser Art passen, wechselte ich zu unsigned Int damit.
Ich erkannte auch, dass der gemessene Abstand genau genug ist, aber ich habe nicht die Tatsache, dass der Roboter etwas Platz braucht nach links oder rechts zu berücksichtigen. Ich abgezogen 8 [cm] aus der letzte Befehl "vorwärts laufen", und dieses Problem gelöst.
Sobald der Roboter die richtigen Abstände im Vergleich zu den Entfernungen, die sie gemessen ging, entfernte ich die serielle Verbindung und die LED-Platine im Inneren wieder.