iL-TROLL
der freundliche Professor

Fragen, Tipps und Feedback

Bitte verwenden Sie die neue E-Mail-Adresse:

(aktueller Ansprechpartner ist: Wolfram Harth)

Hier erscheinen Antworten zu häufig gestellten Fragen, allgemeine Tipps und Anmerkungen von Kunden.



Feedback FAQs und Tipps
Würfelprogramm modifiziert (X. Müller) Compiler-Layout
Congratulations Hilfe! Mein iL-TROLL-Chip lässt sich nicht mehr programmieren
Die ersten Programmierschritte (B.Töpelmann) Funktionstest 5: Allerdings blinkte auch die LED D4
Danke! Interruptproblem
Die AD-Wandler beeinflussen sich gegenseitig


Feedback

1.
Hallo,
ich habe das Würfelprogramm entwas verändert. U.a.: Leuchtdioden werden während des Tastendruckes ausgeschaltet. Dadurch enfällt das störende Flimmern während des Tastendruckes. Auch den Wert in der LOOKUP-Tabelle für das Muster 2 und 3 habe ich so korregiert, dass es mit den Angaben der LEDs und IO-Leitungen übereinstimmt. DOWNLOAD
Viele Grüße
X. Müller
zurück zum Seitenanfang

2.
Dear Mr Stefan Lehmann,
thank for prompt delivering iL-TROLL. You have done a great deal of work and effort in the microcontrolers PIC.
We appreciate it. I use iL to teach students.
Best Regards
B. Borowik Ph.D
T. Academy Poland
zurück zum Seitenanfang

An Ing.Büro Lehmann :
Ich habe mein erstes Projekt mit dem iL-Troll-Chip fertig gestellt und es läuft problemlos :
Zur Akku-Pflege eine Lade-Entlade-Steuerung für 2 St. Bleigel-Akkus von motorbetriebenen Golfwagen - alle 7 Tage eine 3-stündige Entladung, nach der 4.Woche eine 5-stündige Entladung - dazwischen natürlich wieder Aufladung ( immer wieder ein neuer Zyklus, den ganzen kommenden Winter lang ).
Ich möchte für weitere Projekte zusätzlich bestellen :   3 St. iL_TROLL - Chip 

Mit freundlichen Grüßen, H.Tiefenthaler
zurück zum Seitenanfang

Hallo Troll-Team 
Ich habe das Buch "PIC-Microcontroller-Programierung" mir gekauft weil ich es lernen will, und Kompliment das Buch ist für mich als Anfänger sehr leicht zu verstehen. Aber um das alles mal zu versuchen möchte ich mir eure Testplatine bestellen. ...
Danke schon mal im vorraus. Und hoffe ich bekomme bald ein Mail von euch. Kann es kaum mehr erwarten einen PIC mal selber zu programmieren.

Mfg Rene Resl
zurück zum Seitenanfang

Hallo Hr. W. Harth,
ich habe mir das Buch PIC Microcontroller Prog. gekauft und möchte gerne eine Platine, PIC und die Spule bestellen. In dem Buch steht das man als Erstkäufer Rabatt bekommt. Soll ich die Seite herausreißen oder wird Ihrerseits auf Vertrauensbasis verkauft. Das Buch ist überhaupt sehr gut geschrieben für ältere Bastler.
Danke schon einmal für Ihre Mühe.
Mit freundlichen Grüßen
P. A.
zurück zum Seitenanfang

3.
Die ersten Programmierschritte
Herr Töpelmann hat in meheren kleinen Programmen seine ersten Programmierschritte "dokumentiert". Diese Beispiele sind sicher sehr hilfreich, denn sie vertiefen das Kapitel 5. (DOWNLOAD)
zurück zum Seitenanfang

4.
Hallo Hr. Lehmann,
danke für ihre Unterstützung ( Super Service). Habe das Programm* nach ihren Angaben abgeändert.
Läuft jetzt super.
Danke nochmals
W. G.
(*) Programm mit einem etwas ungewöhnlichen Interruptablauf.

FAQs und Tipps

1.
Die Symbole für die Compilierfunktion usw. haben sich geändert. Statt einer Spirale ist nun ein gelber Trichter zu sehen. Statt der Brille (Einschalten der Farbdarstellung von Schlüsselworten)  LET etc.
zurück zum Seitenanfang

2.
In ganz seltenen Fällen trat das Phänomen auf, dass sich der iL-TROLL-Chip plötzlich nicht mehr programmieren ließ. Ursache hierfür war das BASIC-Programm und das Ausführen des END-Befehls. Für alle Compilerversionen vor 5.7-0 gilt daher, dass der END-Befehl wohl vorhanden, aber nicht aufgerufen werden darf. Dies geschieht am einfachsten mit einer Endlosschleife (ENDE:   GOTO ENDE)  vor dem END. Falls es aber bereits passiert ist, haben wir eine Anleitung zur Problemlösung vorbereitet. Sie finden diese im allgemeinen Downloadbereich.

3.
Sehr geehrter Herr Lehmann,

vor einiger Zeit habe ich bei Ihnen den Bausatz zum IL - Troll gekauft. Wie es in Ihrem Buch geschildert war, lötete ich jede Funktionseinheit ein und machte anschließend den Funktionstest. Jeder Funktionstest war auch erfolgreich. Nachdem ich den IL - Troll eingesetzt hatte und die Platine an die Spannungsquelle anschloss blinkte das mittlere der neun LED's. Der Lautsprecher funktionierte auch soweit. Allerdings blinkte auch die LED D4. Nach Lötbrücken und kalten Lötstellen hatte ich bereits gesucht gehabt und keine gefunden. Was mir aber auffiel, dass die Widerstande R66, R70 und R71 nicht die in der Materialliste angegebenen 220k Ohm hatten.
Vielleicht ist Ihnen dieses Problem bekannt, so dass Sie mir freundlicherweise weiterhelfen könnten.
Mit freundlichen Grüßen T. Gisder

Sehr geehrter Herr Gisder,
bei manchen iL-TROLL-Bausteinen ist ein etwas modifiziertes Programm am Anfang programmiert. Bei dieser Version blinkt auch die LED4 mit. Diese Programmversion ermöglicht auf diese Weise neben der iL-TROLL-PLatine auch den Roboter AS106 zu testen. Die Widerstände R66, R70 und R71 haben mit dieser Testfunktion überhaupt nicht zu tun. So wie Sie die Funktionen geschildert haben, ist die Platine in Ordnung.
Mit freundlichen Grüßen
Stefan Lehmann

Vielen Dank für die schnelle Antwort; dann kann ich ja endlich loslegen
mfg T. Gisder

4.
Hallo Hr. Lehmann
ich  "Kämpfe" zur Zeit mit einem Zeitproblem. Mein Prozessor ist  ein PIC16F628  ( 4Mhz interner Takt ) und meine Software ist  iL_Bas16PRO ( Editor und Compiler ). Ich möchte folgendes Programmieren:
Alle 20ms soll ein Interrupt ausgelöst werden und in eine Interruptroutine verzweigt werden. Nur bring ich diese Funktion mit den Basic-Befehlen "Clock" und Clock1" nicht her. Kann ich dieses Problem mit dem Timer0  und der Funktion INTPROC lösen, oder muss ich diese Sache in Assembler programmieren?
Können Sie mir Bitte eine Hilfe für mein Problem geben?. In den FAQ habe ich nichts gefunden.

Vielen Dank im voraus für Ihre Bemühungen
G. W.

Hallo,
natürlich können Sie die Interrupts auch "zu Fuß" programmieren, auch in BASIC.
Das längste Interruptintervall beim CLOCK-Befehl ist 10 ms. Intern wird die Variable TIMERX auf 100 gezählt bevor die 16-Bit Clockvariable inkrementiert wird.
Wenn Sie das Ganze "zu Fuß" machen wollen, müssen Sie die entsprechenden Einstellungen ermitteln.
Mit LET OPTION_R=%00000111 wird der Vorteiler und die Vorteilerrate eingestellt. Ggf sind hier Anpassungen notwendig, falls Sie noch den RB0-Interrupt benutzen wollen. Mit dieser Einstellung kommen die Interrupts alle 65,5 ms. Steht der Option-Wert auf %00000110 beträgt die Interruptrate 32,77 ms. Bei %00000101 sind es 16,39ms, bei %00000100 ca. 8,2ms. Sie sehen, dass es bei diesem Quarz nicht möglich ist, genau auf 20 ms zu kommen. Das Problem hat auch der Compiler. Die einzige Möglichkeit besteht darin, die Interrupts häufiger auftreten zu lassen, und diese entsprechend zu zählen. Bei Option = %00000000 ergibt sich ein Wert von 512us. Für 20 ms benötigt man etwas mehr wie 39 Interrupts. Das Problem ist aber, dass diese Interrupts nun sehr oft auftauchen und deshalb die Gesamtleistung des Programmes u.U. zu stark reduziert wird. Aber das hängt natürlich vom Einzelfall ab.

RES T0IF setzt das Timer-Interruptflag zurück (man weiß nie, wie es gerade steht).

SET T0IE gibt den Timer0-Interrupt frei
SET GIE gibt die Interrupts global frei

Nun müssen Sie in ihrer Interruptroutine, die mit INTPROC beginnt und mit INTEND abgeschlossen wird, dafür sorgen, dass bei einem Timer0-Interrupt das richtige passiert. Dazu prüfen Sie innerhalb dieser Routine das T0IF-Bit. Ist es 1, dann war es ein Interrupt vom Timer0. Sie müssen dieses Bit innerhalb dieser Routine wieder zurücksetzen. Achten Sie auch darauf, dass innerhalb der Interruptroutine keine komplexen Befehle verwendet werden. Ein INC oder DEC geht in Ordnung, bei anderen Befehlen kann es kritisch werden. Da es ein REENTRENCE-Problem gibt, müssen Sie in solchen Fällen die internen Compilervariablen mit STACK retten oder Sie unterbinden das Aufrufen von Interrupts innerhalb komplexer BASIC-Befehle durch die Option GIED beim INTERRUPT-Befehl.
Die Problematiken von oben ändern sich übrigens nicht, wenn Sie auf Assembler umsteigen würden.

Ich hoffe, ich konnte Ihnen etwas weiterhelfen.
Mit freundlichen Grüßen
Stefan Lehmann

5.
Hallo Herr Lehmann,
zuerst möchte ich ich loswerden, daß ich Ihr iL-Troll System und Ihr Buch sehr gelungen und interessant finde.

Ich habe noch eine Frage zum IL-Troll:
Ich versuche 2 Analogsignale über Port RA0 u. RA1 einzulesen.  Leider beeinflussen sich die Werte gegenseitig:
Wenn der Widerstand (In der IL-Troll original Schaltung) (P31) Rra0=10KOhm und (P32) Rra1=0Ohm ist, Zeigt das angeschlossene LCD Display für den Wert RA1 nur max einen Dezimalwert von 131 statt 255 an. (dh.: Regelbereich 0-131 dezimal wenn der zweite Wert 0 ist). Sobald Rra0 auf ca. 5KOhm erhöht wird, zeigt das Display richtig an.

Die Eingangsspannungen an den Ports sind richtig ( 0V Pin2 / +5,0V Pin3) .  Der Fehler scheint nicht vom Widerstandsnetzwerk sondern vom PIC zu kommen. Dafür spricht auch: Wenn ich nur einen Analogwert auslese, zeigt das Display auch wieder richtig an: 0-255 (unabhängig von der Stellung des Potis am Nachbar Portpin) . Ich habe versucht eine Wartezeit zwischen das Auslesen der beiden Werte einzubauen. Auch ca. 1 Sek. - kein Erfolg. Gleiches Problem. Das Phänomen zeigt sich sowohl in meiner selbst aufgebauten Schaltung als auch auf der original IL-Troll Platine.

Ist dies ein bekanntes Problem? Gibt es zufällig schon eine Lösung dafür? In der FAQ auf Ihrer Homepage und bei Google habe ich nichts gefunden.

Das Progrämmchen:
loop:
        wait 500
        adinp 1,adwert1
        lcdwrite 4,1,adwert1," Hz"
        wait 500
        adinp 0,adwert2
        lcdwrite 4,13,adwert2," Sek"
        if TasteOK=0 then goto main
        goto loop

Für einen Tipp wäre ich sehr dankbar.

Viele Grüße
Christian Kastner
--------------
Hallo Herr Kastner,
das Problem ist der relativ große Haltekondensator. Wenn zwischen den Kanälen umgeschaltet wird, kann er sich nicht innerhalb der zur Verfügung stehenden Zeit auf den neuen Wert einstellen.
Abhilfe schafft ADDELAY. Hier wird eine zusätzliche Verzögerung zwischen dem Kanalumschalten und dem eigentlichen Abtasten eingefügt. Da dieses Phänomen u.a. von der Taktfrequenz, der Auflösung des Wandlers und des Innenwiderstandes der Signalquellen abhängig ist, habe ich keine konstante Zeit (maximaler Wert) für diese Wartezeit benutzt, sondern eben ADDELAY implementiert. Den gleichen Effekt erhalten Sie übrigens, wenn Sie den jeweiligen Kanal 2x lesen und dabei den ersten Wert einfach verwerfen. ADDELAY ist aber besser.
Darf ich ihre E-Mail (mit/ohne Namen) in den FAQs veröffentlichen?

Mit freundlichen Grüßen
Stefan Lehmann
--------------
Hallo Herr Lehmann,
vielen Dank für die schnelle Info. Ich hab's gleich ausprobiert und es funktioniert.
Klar dürfen sie meine Frage in die FAQ aufnehmen. Und gegen meine Namensnennung habe ich keine Einwände.

Viele Grüße
Christian Kastner




Seit 25 Jahren entwickeln und fertigen wir Hard- und Software nach ihren Wünsche
PIC is a Trademark of Microchip, Arizona
iL-TROLL ist ein Markenzeichen von Ing.Büro Lehmann, Hausach

.