wiki:FrequentQuestions

Frequently Asked Questions

ADA-IO reagiert merkwürdig

  • Mein ADA-IO-Modul liefert etwa einmal in der Minute eine ellenlange Liste mit absurden Messwerten, reagiert aber sonst normal auf Befehle.

Sie haben vermutlich den EEPROM-Bereich nicht programmiert. Im unprogrammierten Zustand sind alle Trigger-Flags gesetzt und der Trigger-Timer steht auf 65536 Millisekunden ($FFFF). Flashen Sie immer auch den EEPROM-Bereich. Ab Version 1.381 der ADA-IO-Firmware wird eine Warnmeldung beim Einschalten ausgegeben, wenn der EEPROM-Bereich nicht initialisiert ist. (cm)

Platinenlayouts doppelseitig?

  • Warum gibt es keine Platinenlayouts für die doppelseitigen Platinen?

Inwieweit es sinnvoll ist, ein paar hundert Durchkontaktierungen (bei den DDS- DCG- und DIV-Platinen) selbst zu legen und dann stundenlang auf Fehlersuche zu gehen, mag dahingestellt sein. In der Vergangenheit (meint: in den letzten 18 Jahren) haben wir bei unseren Projekten deshalb keine doppelseitigen Layouts mehr herausgegeben, ganz einfach, um uns den Support für missglückte Ätzungen vom Hals zu halten. Wenn Sie allerdings ein wenig unter "Browse Source" stöbern, dann werden Sie... Aber keinem verraten! (cm)

  • Könnten Sie mir dann nicht auch die Gerber-Files, wenn möglich auch die Layouts im [Eagle/Target?/OrCAD/Sprint]-Format zumailen? Mein Bekannter arbeitet zufällig in einer Leiterplatten-Firma.

NEIN!

Null Ohm statt Leiterbahn?

  • Bei der IFP Platine gab es den Widerstand R1 mit 0 Ohm, welcher (laut Text in c't 10/07) ausschliesslich zum Durchmessen benötigt wurde. Folglich habe ich ihn wieder ausgelötet. Nun Frage ich mich wie das mit R3 (auch 0 Ohm) bei der ADA-IO Platine ist.

R3 auf der ADA-IO-Platine ist als Drahtbrücke einzulöten, R1 auf IFP dagegen NICHT (bzw. nur zum Überprüfen der Spannungen). Detaillierter: Drahtbrücke R3 verbindet Analog- und Digital-Masse. Trennt man R3 auf, lässt sich leicht überprüfen, ob nicht doch irgendwo ein Kurzschluss zwischen den Massen besteht, was nicht sein darf (ohne ATmega32 und ohne Steckkarten messen!). Deshalb keine Leiterbahn. (cm)

Flachkabelentwirrung

  • Wie werden die Flachbandkabel-Stecker montiert? Und wie sollen die auf dem Foto sichtbaren Sub-D-Buchsen angeschlossen werden?

Auf den Platinen ist Platz zum Einlöten von Wannen-Steckverbindern ohne Verriegelung vorhanden. Pin 1 ist links von der Kodierkerbe auf der gleichen Seite mit einem Dreieck oder Pfeil gekennzeichnet, der gehört auf den Platinen natürlich auch auf Pin 1 (kleines Quadrat, oft mit einer "1" daneben). Die Flachbandkabelstecker müssen so angepresst werden (z.B. in einem kleinen Schraubstock), dass die farbig gekennzeichnete Ader zum Pfeil/Dreieck? hin weist -- und zwar auf beiden Enden. Von welcher Seite das Kabel in den Stecker geführt wird, ist egal. Allerdings sollten Sie für eine aufgeräumt wirkende Verkabelung das Kabel zum Platinenrand zeigen lassen. Mit Zugentlastung ist dabei die zusätzliche Schlaufe einzukalkulieren.

Die Anschlussbelegung der auf der ADA-IO-Frontplatte vorgesehenen 9pol. Sub-D-Buchsen möchte ich niemandem vorschreiben, schlage aber die bei Sub-D-Anpress-Steckern übliche Reihenfolge vor: Flachkabel-Ader 1 (farbig) auf Buchsen-Pin 1, Ader 2 auf Buchsen-Pin 6 (wg. der anderen Zählweise bei Sub-D) usw. bis Ader 9 auf Buchsen-Pin 5, Ader 10 (zweite Masse) bleibt übrig und wird nicht eingepresst/angeschlossen. Oft finden sich derartige Kabel in alten PCs (COM-Anschluss), aber bisweilen auch mit abweichenden Belegungen -- von fleißigen Taiwanern in Heimarbeit handverlötet. (cm)

ADA-IO meldet sich, reagiert aber nicht

  • Ich habe die IFP und die ADA-IO verbunden und das Terminalprogramm korrekt eingerichtet. Ich erhalte beim Einschalten auch die Willkommensmeldung der ADA-IO. Danach nimmt sie aber keine Befehle mehr an und reagiert nicht. Wo liegt das Problem?

Du hast die von der IFP kommende Leitung warscheinlich in PL2 der ADA-IO gesteckt (mittlere, 10-polige der drei Buchsen am hinteren Rand). Auch wenn die Nummerierung dazu verleitet: PL2 ist der Ausgang der Busschleife! Die Startmeldung wird bei gesetzten Jumpern JP1/2 zwar weitergeleitet, Befehle kommen aber nie beim Prozessor an. Das Problem lässt sich durch Umstecken in PL3 (Eingang) beheben.

Eine andere Ursache könnten ein versehentlich aktivierter Handshake oder die Verbindungsparameter im Terminalprogramm sein. Korrekt ist die Einstellung 38400 Baud / 8 Bit / keine Parität / 1 Stopbit -> oder kurz 38400 8N1 und deaktivierter Handshake

PonyProg will .HEX-Datei nicht lesen

  • Ich habe die aktuelle Firmware aus dem Source-Verzeichnis heruntergeladen, aber PonyProg kann die .HEX- und .EEP-Dateien nicht einlesen.

Leider lässt das Trac-System kein "Speichern mit der rechten Maustaste" zu, in der abgespeicherten Datei steht nur HTML-Code. Klicken Sie stattdessen auf das ZIP-File, das System sollte dann den Download anbieten. Sie können die Dateien auch direkt über https://www.heise.de/svn/ctlab downloaden, hier stellt sich das Problem nicht.

AD16-8 ohne Funktion

  • Meine AD16-8- und DA12-8-Karten funktionieren nicht, obwohl ich die neueste Firmware aufgespielt habe. Die Referenzspannung ist zumindest da.

Sie haben versehentlich das JTAGEN-Fuse-Bit des ATmega32 gesetzt (gelassen - Auslieferungszustand!), dann funktioniert der ATmega32-Port C nicht vollständig, der den Analog-Multiplexer ansteuert. Bitte beachten Sie die Hinweise auf der FirmwareFlashen-Seite.

Jetzt geht's, aber die Messwerte springen schon in der zweiten Nachkommastelle stark, wenn ich den Referenzspannungs-Jumper stecke.

Wenn Sie vergessen, die interne Referenz des ATmega32 auf dem ADA-IO-Modul mit "WEN=1!" und "REF=0!" abzuschalten, herrscht Uneinigkeit auf der Leitung, d.h. die Schaltung oszilliert. (cm)

Höhere Baudraten?

  • Mit dem SBD-Befehl kann man ja die Baudrate der Module hochsetzen. Bis wohin kann ich gehen?

De facto gibt es derzeit noch keinen vernünftigen Grund, die Baudrate zu erhöhen. Zwar könnte die Schnittstellen-Hardware deutlich mehr, aber die Messlatenzen bleiben trotzdem, so dass man nicht viel gewinnt. Nach meiner Erfahrung und bei meinen Mustern geht 57600 Bd bei 16 MHz Prozessor-Takt noch problemlos, mit 18,432-MHz-Quarz ebenso. Die Analog-Kanäle sind (schon hardwareseitig) für die Erfassung von Gleichspannungs-Größen oder niederfrequenten Änderungen (< 10 Hz) gedacht, da braucht man nicht mehr. Natürlich wird es Leute geben, die eine Temperatur-Sonde 50.000 mal in der Sekunde abfragen wollen, aber es reichen auch 50 oder 0,05 Abfragen. Wenn ich irgendwann mal ein Speicherskop- oder LA-Modul machen sollte, sähe die Sache anders aus. Das liegt aber noch in weiter Ferne -- schließlich muss ich auch noch andere Artikel schreiben...

  • Was ist denn der Grund für die Beschränkung auf 57600 Bd?

Zum einen gibt es bei dieser Standard-Baudrate durch den "ungeraden" Teiler bei 16 MHz Takt schon einen Fehler von ca. 2% -- mehr darf man nicht riskieren. Außerdem können bei Baudraten >>57600 einzelne Zeichen des Befehls verloren, weil der Receive-Interrupt für die A/D- und D/A-Wandlungen ca. 100 Mikrosekunden abgeschaltet werden muss und er das eingetroffene Zeichen nicht rechtzeitig abholen kann, weil dem ATmega32ein RxD-FIFO fehlt (erst beim ATmega644 vorhanden). Der Befehl kommt dann verstümmelt an, und es gibt eine Fehlermeldung. Bei meinen Versuchen bei 115200 Bd mit 18,432-MHz-Quarz jeder 100. Befehl. Leider kommt man beim 644 nicht um eine Source-Anpassung herum. (cm)

Eigen-Parser

  • Ich möchte eigene Erweiterungen für das c't-Lab in C oder Bascom schreiben, weil ich den Pascal-Compiler nicht kaufen will. Wie funktionert der c't-Lab-Parser?

Einen toleranten UND platzsparenden Parser zu schreiben, ist nicht ganz trivial. Der im c't-Lab hat gewisse Vereinfachungen, vor allem bei der Plausibilitätsprüfung der Parameter. Der Parser sammelt eingehende Zeichen zunächst in einem String, bis ein CR oder CR/LF auftritt. Dann startet folgender Mechanismus:

Zeilen mit einem "#" am Anfang werden gleich an den OptoBus-Ausgang durchgereicht und intern verworfen (weil Messwert von einem anderen Modul).

Der Parser sucht zunächst nach einem Doppelpunkt. Wenn vorhanden, nimmt er die Zahl vor dem Doppelpunkt als Modulnummer. Stimmt die Zahl mit der über die Jumper eingestellte Modul-Adresse NICHT überein, wird die Befehlszeile wie oben an den Ausgang durchgereicht und verworfen.

Dann sucht er nach Buchstaben. Findet er einen, geht er davon aus, dass man ein Mnemonik eingegeben hat. Die Buchstaben sammelt er, bis er auf einen Nicht-Buchstaben (Leerzeichen, Sonderzeichen oder Zahl) stößt. Dann schaut er in einer Tabelle (Array) nach, welcher SubChannel? dem Mnemonik entspricht. Findet er keinen entsprechenden Eintrag, ist der Befehl falsch geschrieben oder unbekannt, und es gibt eine Fehlermeldung. Ohne Mnemonik nimmt er die (erste oder die dem Doppelpunkt folgende) Zahl direkt als SubChannel?-Angabe.

Zahlen hinter dem Mnemonik (keine Zahl bedeutet "0") werden als positive Offsets zur Mnemonik-SubChannel?-Entsprechung (z.B. SCL hat SubCh 200, SCL 1 => 200+1 => 201) gewertet, um einen eindeutigen SubChannel? zu bekommen. Leerzeichen können weggelassen werden.

Steht hinter dem Mnemonik, SubChannel? oder SubChannel?-Offset ein "?", handelt es sich um eine Abfrage, und der gewünschte Wert wird ausgegeben.

Trifft der Parser dagegen auf ein "=", handelt es sich um einen (Ausgabe-)Befehl. Die Zahl hinter dem "=" ist der einzustellende Wert. Leerzeichen und Nicht-Zahlen werden ignoriert. Wird ein "!" am Ende gefunden, bestätigt der Parser das Akzeptieren mit einer "OK"-Statusmeldung.

Nach diesem Muster sind

0:20? {Modul-Adresse ist jetzt 0}
val 20?
VAL20?
val 20 ?

gleichwertig, ebenso wie

SCL?
SCL 0?
200?
VAL 200?

oder

0:VAL 20=1.5! {Modul-Adresse ist jetzt 0}
0:20 = +1.5
20=1.5

Nähere Hinweise zu den zulässigen Befehlen finden sie in der Syntax-Übersicht. Hoffe, damit einige Klarheiten beseitigt zu haben. (cm)

Zwei Module an einer Stromversorgung?

  • Kann ich zwei c't-Lab-Module auch zusammen an einen IFP- oder PS3-2-Ausgang hängen, um Netzteile zu sparen?

Natürlich -- aber es wird nicht funktionieren, weil mit Panel der zulässige Strom der 5V-Schiene überschritten wird. DDS verbraucht auch bei den plusminus 15V viel Strom. DCG ist hier relativ sparsam, aber die galvanische Trennung (Opto-isolation) zwischen den Modulen, die eine problemloses Hintereinanderschalten z.B. für eine symmetrische Laborversorgung erlaubt, wäre dahin -- es entstünde ein Kurzschluss.

Last modified 21 months ago Last modified on Jan 25, 2016, 11:13:38 AM