Labortagebuch Januar 2010

 Elektronik-Labor  Notizen  Projekte  Labortagebuch

12.4.10: In System Programming

Irgendwann wurde mir das zu aufwendig, immer den Tiny25 aus der Fassung nehmen, auf die Programmierplatine, dann wieder zurück für den nächsten Versuch usw. Also ISP: Der Controller muss auf der Platine programmiert werden können. Und wenn die Platine keinen ISP-Anschluss hat? Dann löte ich einfach ein passendes Kabel an das IC.

Für die Ansteuerung eines Radio-ICs SI4735 habe ich zuerst einen Tiny13 verwendet, als dann der Speicherplatz nicht mehr reichte einen Tiny25. Auch diesen kann man auf der Platine des Lernpakets Mikrocontroller programmieren, allerdings nur mit LPmikroISP.exe, und man darf auf keinen Fall die Fuses damit programmieren, denn die Einstellungen passen nur für den Tiny13 und schicken den Tiny25 ins Nirvana.

 

Irgendwann wurde mir das zu aufwendig, immer den Tiny25 aus der Fassung nehmen, auf die Programmierplatine, dann wieder zurück für den nächsten Versuch usw. Also ISP: Der Controller muss auf der Platine programmiert werden können. Und wenn die Platine keinen ISP-Anschluss hat? Dann löte ich einfach ein passendes Kabel an das IC. Achtung, man muss den Controller zum Löten aus dem Sockel nehmen, sonst lötet man ihn unweigerlich im Sockel fest.


20.4.10 Fehlersuche in Bascom

Das kennt man, ein Programmfehler versteckt sich hartnäckig und ist einfach nicht zu finden. In Bascom-Programmen versuche ich dann immer Zwischenzustände anzusehen. Ist in den einzelnen Variablen drin, was draufsteht? Kürzlich wieder so ein Fall: Ein Array Kalbyte(64) wird beim Start gefüllt und nach allem was ich sehe nie wieder geändert sondern nur noch gelesen. Ich packe das Wort Kalbyte in die Suchfunktion und gehe den ganzen Quelltext durch. Nichts! Es wird nie wieder explizit verändert.

Dim Kal(8) As Word
Dim Nul(8) As Byte
Dim Kalbyte(64) As Byte

Und dann ein Idee: Was ist denn mit den Variablen davor? Aha, es sind auch Arrays. Mal angenommen, irgendwas wird falsch berechnet und die Arrays davor werden mit zu großen Indizes benutzt, also z.B. Nul(16) beschreiben, obwohl es nur bis Nul(8) gibt. Dann würden Teile von Kalbyte eben doch verändert. Mit dieser Erkenntnis noch mal ganz scharf hingeschaut: Tatsächlich, ein Rechenfehler genau in diesem Bereich. Bascom kann beim Kompilieren keinen Fehler entdecken, richtig rechnen muss man eben selber.


 Elektronik-Labor  Notizen  Projekte  Labortagebuch