Ich habe heute den Tag damit verbracht auf einer Lochrasterplatine ein kleines primitives Testboard für einen PIC16F688 Mikrocontroller zu löten. Die zwei 6-bit Ports liegen auf einer Stiftleiste, die zusätzlich an LEDs (mit Vorwiderstand) gejumpert werden können. Sonst wären da nur noch Anschlüsse für die Stromversorgung.
Hätte ich mich nicht in den Datenblättern und unzähligen Online-Quellen fest gelesen, wäre ich auch schneller fertig geworden. Zunächst wollte ich den IC „In Circuit“ programmieren – aber da mir für den nötigen Adapter die Bauteile fehlten, habe ich doch meinen angestaubten „Willem EPROM Programmer“ aus dem Schrank geholt, den ich mir vor ca. 2 Jahren für ein ähnliches Vorhaben gekauft hatte. Das Brennprogramm war mir schon immer sehr suspekt, aber die neueste Softwareversion führte sogar meinen Controller auf.
Dazu installierte ich mir die aktuellste Version der IDE „MPLAB“ von Microchip, passte den grundlegendsten Assember-Code den ich finden konnte auf meinen PIC an, brannte iihn in den Flash und setzte den Chip wieder behutsam zurück in die IC-Fassung der Schaltung.
Strom an – keine Reaktion an den LEDs, die nun eigentlich teilweise leuchten sollten. 🙁
Die Suche nach dem Fehler macht mir jetzt schon einige Stunden Kopfzerbrechen – irgendwo hier liegt der Hund begrabe:
- Ich hab einen Fehler auf der Platine
- Der Brenner wird von mir falsch bedient (oder ist in seiner Revision zur neuen Software inkompatible)
- Ich setze die Flags in MPLAB falsch (gewünscht: interne Takterzeugung, „Reset on Powerup“)
- Mein Assembler Quellcode macht trotz richtigem Syntax nicht was ich möchte.
- Ich bin möglicherweise in eine Konfigurations-Falle getappt (INTOSC & MCLR-Falle)
Übersetzt heißt das: Es kann praktisch überall sein. Da fällt die Fehlersuche wirklich nicht leicht.
Ich werde mich noch einmal von Hinten nach Vorne durch die Liste angeln und falls nötig den Reset neu anschließen bzw. einen Quarz zur Taktung opfern. Sollte ich in der „INTOSC & MCLR-Falle“ stecken, komme ich da leider nicht mehr durch löten oder veränderte Einstellungen heraus und muss den PIC austauschen.
In den nächsten Tagen sollte eine Steckplatine und ein ATMega128 Stamp-Modul per Luftpost ankommen. Dann kann ich meine Programme auch in der Schaltung debuggen, auf einfache Art und Weise die I/O-Ports neu verkabeln bzw. Schaltungsfehler korrigieren.
Nachtrag: Bei entsprechendem Flag bekomme ich ein schönes Rechtecksignal am PIN CLK_OUT mit 1,43 MHz. Mein Oszilloskope macht zwar normalerweise was es möchte – ein Rechtecksignal hat es aber bisher noch nicht hervorgezaubert. Beim abklemmen der Stromversorgung fällt es auch sehr elegant in sich zusammen. Erst die Amplitude und schließlich die Rechteckform.
Nachtrag 2: Es läuft. 🙂 Schuld waren eine falsche Takteinstellung, die miese Spannungsversorgung und meine Assembler-Fähigkeiten. Nun liegt es nur noch an mir, Zähler usw. in Gang zu bekommen.