Montag, 21. Februar 2011

Es funzt!!

Mann mann, das war frustrierend! Manchmal hat die Schaltung funktioniert, sprich der Z80 hat über den UART mit mir gesprochen. Dann habe ich kleine Änderungen an der Z80-Software gemacht, nämlich Code in Subroutinen gepackt, die mit dem call-Befehl aufgerufen werden. Dann hat es sporadisch funktioniert, aber nach einem Reset wieder nicht. Dann habe ich die alte, funktionierende Version aufgespielt, die dann aber plötzlich nicht mehr funktionierte. Sehr seltsam, genau wie bei meiner alten, selbstverdrahteten Platine! Also habe ich heute eine kleine Display-Platine gebastelt, um zu schauen, ob diese denn ansprechbar ist. Hier trat das gleiche Phänomen auf. Das Problem musste also auf der Main-Platine liegen.
Mir ist dann aufgefallen, das die Masse der Displayplatine unsauber war. Und siehe da: Eine kalte Lötstelle an einer Steckbuchse auf dem Mainboard. Doch das hat das Problem immer noch nicht beseitigt. Da nur Probleme bei Aufrufen von Subroutinen auftraten, bin ich dann endlich mal auf die Idee gekommen, den RAM-Baustein zu testen. Bei einem Lese-/Schreibtest hat sich dann rausgestellt, dass der manchmal Daten nicht richtig speichert. Das erklärt auch, warum der Z80 Probleme mit den Subroutinen hatte. Denn beim Subroutinen-call wird der PC (Program Counter) auf den Stack kopiert, der sich im RAM befindet. Und wenn der RAM den Wert nicht richtig speichert, wird beim return der PC nicht korrekt zurückgesetzt und der Z80 springt sonstwo hin.
Die UART-Platine funktioniert nun auch wie gewünscht.

Hier ein Foto der Display-Platine:

Keine Kommentare:

Kommentar veröffentlichen