
Sie haben die Platine sorgfältig aufgebaut, aber bei der
Initialisierung des Controllers tritt ein Fehler auf? Dafür können verschiedene
Ursachen in Frage kommen. Der häufigste Fehler ist eine falsche Bestückung oder
ein Lötfehler wie z.B. eine kalte Lötstelle. Auch wenn zuerst alles
funktionierte, später aber nicht mehr, kann eine kalte Lötstelle verantwortlich
sein. Es könnte sich z.B. eine Verbindung an der DB-9-Buchse gelöst haben, die
an Anfang so gerade eben funktionierte. Theoretisch auch möglich ist ein Defekt
im RS232-Kabel oder eine defekte Schnittstelle des PC.
1. Test, Sichtkontroller: Sind die Widerstände vertauscht?
Oben sieht man die beiden mit 100 kΩ, darunter 1 kΩ. Eventuell hilft eine
Messung mit dem Ohmmeter. Oder sind vielleicht die Dioden verdreht eingebaut?
2. Test: Gibt es kalte Lötstellen? Beim Löten muss jede
Lötstelle so heiß werden, dass das Lötzinn in die Durchkontaktierung läuft und
an der anderen Seite sichtbar aufsteigt. Eine nur oberflächlich aufgesetzte
Lötstelle kann sich leicht wieder lösen oder einen Wackelkontakt verursachen.
3. Test: Verbindungen zur Schnittstelle noch ohne den
Controller testen.
Dazu braucht man ein Digitalmultimeter und die Software zum
Lernpaket. Die Messung erfolgt ohne den Controller. Die RS232-Pegel von 10 V
(RS232) oder 6 V (Laptop oder USB/Seriell-Wandler) werden durch die Schutzdioden im Tiny13 im
normalen Betrieb begrenzt.
Starten Sie die Software und öffnen Sie die Registerkarte
Terminal. Nun können Sie einzelne Leitungen einschalten und Leitungszustände mit
der Software lesen.
Messung 1: RTS an, VCC= 5 V kann gemessen werden
Messung 2: DTR an, ca. +10V an PB0 kann gemessen werden
Messung 3: TXD an, ca. +10V an PB2 kann gemessen werden
Messung 4: Brücke von VCC nach PB1, CTS-Kästchen ist an
(Häkchen)
Hinweise:
PB0 und PB2 sind über 100 kΩ angeschlossen, deshalb muss man
mit einem hochohmigen DVM (Ri 10 MΩ)
messen.
Der Eingang CTS am PC ist relativ niederohmig (ca. 3 kΩ) und
wird deshalb über 1 kΩ angesteuert. Damit der PC einen High-Zustand sieht, muss
PB1 niederohmig an VCC gelegt werden. Falls CTS nicht erkannt wird könnten z.B.
die Widerstände vertauscht sein oder eine Unterbrechung vorliegen.
Test auf Kurzschlüsse zwischen Signalleitungen: Schalten Sie
DTR aus: An PB0 muss eine negative Spannung stehen.
Software-Probleme?
Wenn die Hardware in Ordnung ist und trotzdem kein Zugang
zum Controller mehr besteht, kann es an einer faschen Fuses-Einstellung liegen:
Diverse Versuche führten irgendwie dazu, dass der Tiny13 nicht mehr
programmiert werden konnte. Die Fuses wurden vermutlich fälschlich auf eine
geringe Taktrate gestellt, vielleicht durch einen Wackelkontakt oder etwas
ähnliches. Das ISP-Programm aus dem Lernpaket Mikrocontroller brachte die
Lösung. Mit diesem Tool wurden die Fuses auf die Default-Einstellungen gesetzt.
Alles funktioniert jetzt wieder. Die Theorie dazu: Das ISP-Tool programmiert so
langsam, dass die Fuses neu programmiert werden können. Maximal ist ja nur ¼
der aktuellen Taktrate als Programmiertakt erlaubt.
MSR-Software unter Vista/Windows 7
Die Frage kommt öfter auf: Läuft das Lernpaket
Mikrocontroller oder ein anderes Gerät an der RS232 problemlos unter Vista oder
Windows 7? Getestet habe ich schon den Kosmos-Mikrocontroller, einige
Interfaces von Modul-Bus und das Lernpaket Mikrocontroller sowie das neues
Lernpaket „MSR", das einen FT232R als
USB/Seriell-Brücke verwendet.
Alles funktioniert, wenn man eine Kleinigkeit beachtet:
Vista und Windows 7 sind ganz auf Sicherheit getrimmt und verweigert deshalb
zunächst ohne jede Meldung den Zugriff auf eine serielle Schnittstelle. Man
muss ein Programm deshalb erst einmal mit der rechten Maustaste anklicken. Es
erscheint ein Auswahlfenster. Hier aktiviert man „als Administrator
öffnen". Danach funktioniert der serielle Zugriff wie unter den älteren
Systemen.
Siehe auch:
Serielle Schnittstellen unter Windows 7
Probleme mit den Fusebits
Einige Anwender sind auf Probleme bei der Initialisierung
gestoßen oder hatten Probleme, wenn der Chip mit LPmikroISP auf 9,6 MHz
umgestellt wurde. Es gab Situationen, in denen der Tiny13 von keiner Software
mehr angesprochen werden konnte. Normalerweise sollte aber mit LPmikroISP alles
wieder richtig eingestellt werden können, d.h. man stellt den Controller zuerst
wieder zurück auf 1,2 MHz und kann dann neu initialisieren.
In den Fällen, wo dies nicht mehr funktioniert hatte, war
oft eine virtuelle Schnittstelle an einem USB-Seriell-Wandler oder ein Laptop
beteiligt. In beiden Fällen ist die Signalspannung mit ca. 6 V geringer als bei
einer RS232 mit ca. 10 V. Ralf Beesner hat herausgefunden, dass es hilfreich
sein kann, die 100-kΩ-Widerstände auf der Platine gegen 22 kΩ auszutauschen,
wie es auch beim ISP-Adapter zum PingPong gemacht wurde. Die Theorie dazu: Die
zu weiche Ansteuerung über 100 kΩ kann zu einem Verschmieren der Signalflanken
führen, wobei dann einzelne Bits falsch übernommen werden. (Ralf Beesner: Möglicherweise werden die
(Fuse-) Bits bei der Übertragung zu stark verschliffen und es kommt für das
Fusebit SPIEN statt einer 0 eine 1 an.)
Siehe auch: Arduino rettet verfuste ATtinys
Tiny13 stand alone
Frage
Ein auf der LP- Platine programmierter Attiny 13, der in Verbindung zum
Laptop tadellos funktioniert, funktioniert nicht auf einer normalen
Platine / Steckboard. Das Programm ist also definitiv fehlerfrei.
(Spannung ist vorhanden, Reset-Pin nach + über 20 kOhm
und 100 nF nach Masse , alle Verbindungen sind okay). Ich habe
auch auf einen 2. nagelneuen Controller, wie im Buch beschrieben, den
Bootloader installiert und mit meinem Programm "beschrieben". Aber auf
externer Platine läuft nichts. Kann der Bootloader irgendwie
deaktiviert werden? Ich habe das Gefühl, das der µC auf
Signale vom Bootloader wartet.
Lösung: Das Problem ist auch
im Handbuch erwähnt: Der Pin PB2, auf dem der Tiny3 Daten
empfängt, ist hochohmig. Man muss ihn mindestens mit einem
Widerstand an GND legen, sonst kann es passieren, dass der Controller
meint, er soll neu geflasht werden.
Erfolgmeldung: Es klappt. Von 10 kOhm bis zum Kurzschluss funktioniert alles von PB2 bis nach Masse geschaltet.