Symbol www.digital-bahn.de Symbol
Shop Forum Datenschutzerklärung Suche Kontakt

Funktions-Dekoder mit CV Programmierung

Diese Seite beschreibt eine Software-Variante, die auf verschiedenen Platinen eingesetzt werden kann. Als besonderes Feature ist hier die CV-Programmierung integriert.
achtung3 (1K) Es ist im Moment nur eine DCC-Version verfügbar. Ein Einsatz mit dem Motorola-Protokoll ist bisher nicht möglich achtung3 (1K)

Download / CV Programmierung / Beispiele

 
Es begab sich zu der Zeit, als alle Zentralen DCC sprachen und damit CVs via Programmiergleis konfigurieren können. Selbst der Marktführer aus Göppingen hat inzwischen seine Zentrale um DCC Funktion erweitert. In jener Zeit sah ich es als gegeben an, endlich die CV-Programmierung in meine Software zu integrieren.
Und hier ist sie nun: meine Funktions-Dekoder Software Variante, die über CVs zu konfigurieren ist. Es handelt sich hier um eine Software, die insbesondere für Licht in Waggons oder Loks gedacht ist. Die Basis diente die F-Dekoder Licht Software deren Funktions-Umfang übernommen wurde. Weitere Erweiterungen wie z.B. Blink-Effekte für Sonder-Fahrzeuge, Bremslicht-Funktion für Strassenbahnen und andere nette Erweiterungen sind hier geplant.
 
Hier die Eigenschaften
 
Die Software kann auf den folgenden Platinen den Dienst (sinnvoll) verrichten:

zurück zum Anfang nach Oben

Download

DCC Firmware Download
Pixel
disk ProtokollDCC
Name16f688_fdek_cv_dcc_063.hex
VersionV0.63 vom 05.08.2011
ProzessorPIC 12F683 / 16F684 / 16F688
ID-ValueCxxx
Shop Bestell-Nummer 16F688: pic688-00h-d
-
für den Einsatz auf WeichZwei / WaLD kann auch der 8-polige PIC bestellt werden
(Funktionen CV-Lesen und LISSY ist dann eingeschränkt! - siehe Text):
12F683: pic683-00h-d
vordefinierte
Adressen
Lok 3 - F1 (Ausgang 1 ein / aus)
Lok 3 - F2 (Ausgang 2 ein / aus)
Lok 3 - FL (Ausgang 3/4 fahrtrichtungsabhängig)
Lok 3 - F5 (Ausgänge Hell / Dunkel)
Änderungen V0.63: Flackern bei Bremslicht reduziert, CV-Programmierung auch für schnelle Zentralen wie Roco MultiMaus ermöglicht
V0.62: Optimierung beim Speichern ins EEprom reduziert Flackern z.B. bei Fahrtrichtungsumkehr
V0.61 CV15/16 hinzu, LISSY hinzu
V0.59 neue Funktionen: CV54, Bremslicht, Blinker
V0.56 Adressen übernehmen bei Exit aus Sevice Mode
V0.55 Exit aus ServiceMode ermöglicht
V0.54 Ausgabe von 0 beim Lesen von unimplementierten CVs
V0.53 Rückmeldeimpuls verlängert wg. Problem beim CV-Lesen
V0.52 erste Veröffentlichung

zurück zum Anfang nach Oben

CV Programmierung

Grundsätzliches

Diese Software beherrscht das CV-Programmieren und auslesen im sog. "direct Mode". Diese Programmier-Art sollte jeder CV-Programmer / Zentrale beherrschen, seit 2002 ist "direct Mode" für DCC-Konforme Zentrale lt. NMRA Pflicht. In der Uhlenbrock Intellibox ist die z.B. unter "DCC-Program." > "CV-Prog bytew." zu finden.
Nicht implementiert ist das sog. "paged CV Adressing"

Besonderheit: Dekoder auslesen benötigt Lastwiderstand

Auf dem Programmiergleis können CVs ausgelesen werden. Die Rückmeldung von Dekoder zur Zentrale geschied hierbei durch einen Strom-Impuls von 60 mA (Dauer 6 ms). Nun muss man also irgendwie 60mA "verbraten", um diesen Strom-Impuls zu generieren. Hierfür werden dann einfach alle Ausgänge des Dekoders eingeschaltet. Dumm nur, wenn dann immer noch nicht 60 mA zusammenkommen. Und das ist nunmal bei LED-Dekodern nicht ungewöhnlich ("damals" im Zeitalter der Glühlampen war das kaum ein Problem...).
Das bedeutet in der Praxis: Wer CVs mit WeichZwei, LED oder WalD programmieren möchte, hat evtl. keine funktioierende Rückmeldung. Ein Auslesen von CVs oder die OK-Meldung nach dem Programmieren geht dann nicht. Das Programmieren selber hingegen schon, denn die Daten zum Dekoder können trotzdem problemlos übertragen werden. Eine Lösung wäre hier ein Lastwiderstand von ca. 220 Ohm parallel an einen Ausgang zu hängen. Blöd ist hier dann, dass auch im normalen Betrieb bei eingeschaltetem Ausgang zusätzlich einfach 60mA "verbrannt" werden. Wer einen unbenutzen Ausgang frei hat, kann hier den Last-Widerstand anhängen (und sollte dann im Betrieb darauf achten, dass dieser Ausgang nicht eingeschaltet ist).
Auf der neuen FippS Platine habe ich entsprechend dieser Problematik einen Ausgang des PICs reserviert, an dem der Last-Widerstand bereits auf der Platine angeschlossen ist.

implementierte CVs

CV Name Vorgabe-Wert zu. Bereich Anmerkung
1 Kurze Adresse Lok 3 1...127 Dies ist die Kurze Lok-Adresse. Der Wert aus diesem Register wird verwendet, wenn eine Adresse < 128 programmiert wird. Für größere Adressen wird dann CV17/18 verwendet (CV29 Bit #5 beachten!)
 
Bei den meisten Zentralen werden die CV1/17/18 und CV29 Bit #5 automatisch entsprechend der Adresse programmiert, sodass das Informatik-Studium in diesem Fall nicht mehr zwingend erforderlich ist....
7 Versions-Nummer tbd. tbd. Lesen auf dieses Register gibt den ID Code für diese Software aus
8 Hersteller-ID 64 64 Lesen auf dieses Register gibt die Hersteller-ID (dez. '64' für digital-bahn) aus. Ein Schreib-Vorgang auf diese CV führt zu einen RESET der CV-Register!
15/16 Decoder Lock (Dekoder Sperren) 1 0..255 Über diese Register kann der Dekoder gesperrt werden. Dies ist nützlich, wenn mehrere Dekoder in einer Lok / Waggon arbeiten. Problematisch ist dies aber dann, wenn man CVs eines Dekoders programmieren oder auslesen will, denn alle Dekoder in der Lok fühlen sich in diesem Moment angesprochen. Mit Hilfe der CVs 15 und 16 kann man sich das Öffnen der Lok trotzdem sparen, denn der Dekoder lässt Schreiben und Lesen auf CVs nur dann zu, wenn in CV15 und CV16 der selbe Wert steht. Bei einem gesperrten Dekoder kann nur CV15 geändert werden!
Vorgehen:
  1. vor dem Einbau in die Lok: jeder Dekoder bekommt eine individuellen Wert für CV16, z.B. 1 für den Lok-Dekoder (der ebenfalls CV15/16 unterstützten muss!), 2 für den Fipps. Am Besten programmieren Sie auch gleich CV15 auf den selben Wert, sonst ist der Dekoder nämlich bereits gesperrt!
  2. nach dem Einbau in die Lok: will man nun CVs eines Dekoders ändern oder lesen, so schreibt man zunächst in CV15 den Wert für den Dekoder, den man bearbeiten will. In unserem Beispiel würde man hier eine 2 Schreiben, um den FippS zu bearbeiten. Alle Dekoder (auch die gesperrten) übernehmen nun CV15.
  3. jetzt können CVs gelesen und geschrieben werden. Nur FippS reagiert, da nur für FippS gilt, das CV15 = CV 16
Die Funktion birgt natürlich gewisse Gefahren. Haben Sie CV16 umprogrammiert, so ist der Dekoder für CV Lesen und Schreiben taub, solange CV15 nicht den selben Wert hat. Seien Sie also sparsam mit den Ziffern für CV16. Beschränken Sie sich auf einen kleinen Zahlenbereich (z.B. 1-5), sodass man notfalls durch Ausprobieren von Werten für CV15 eine Chance hat, den die Blockierung aufzuheben. Sonst kann es eine langweilige und abendfüllende Veranstaltung werden, wenn man nicht mehr weiß, welcher Wert in CV16 steht.
Als letzte Chance zum Aufheben der Blockierung bleibt dann ggf. nur ein neues Brennen des PIC oder ein Auslesen des HEX-Files aus dem PIC. Der Manipulator kann dann die CV-Werte anzeigen.
17/18 extendet Adress (lange Adresse) Lok 1
(CV17 = 192
CV18 = 1)
1..9999 In diesen Register steht die Lok-Adresse, wenn Adressen > 127 vergeben werden. Dafür muss in CV29 das Bit #5 auf 1 gestellt sein und es werden die Werte aus diesen Registern genommen. Bei den meisten Zentralen passiert dies automatisch, sobald Adressen >127 vergeben werden. In dem Fall muss man sich hier gar nicht um die Werte in CV17/18 kümmern.
 
Trotzdem sei hier die Funktion erklärt:
Soll z.B. eine Adresse 4444 vergeben werden, so kommt man mit 8 Bits (also einem CV-Register) nicht aus. 4444 ergibt in hex 11 5C (binär: 1 0001 0101 1100), das sind also 15 Bits. CV17 enthält die unteren 8 Bits, in CV18 werden die verbeibenden Bits untergebrach.
Er ergibt sich somit für CV 17: 0101 1100 = dez. '92'
Für CV18 bleiben übrig: 1 0001. Allerdings müssen hier die Bits 6 und 7 nach DCC-Norm dann auch noch eine '1' bekommen, sodass sich als binärer Wert ergibt: 1101 0001 = dez. '209'
Anders herum kann man wie folgt aus den Werten die Adresse berechnen:
(CV18 - 192)*256 + CV18 = (209 - 192)*256 + 92 = 4444
29 Konfiguration 0
(d.h. Bit ist #5 nicht gesetzt)
0..255 Konfiguration lt. NMRA:
Bit #0 = '1' (d.h. +1) : ohne Funktion
Bit #1 = '1' (d.h. +2) : ohne Funktion
Bit #2 = '1' (d.h. +4) : ohne Funktion
Bit #3 = '1' (d.h. +8) : ohne Funktion
Bit #4 = '1' (d.h. +16) : ohne Funktion
Bit #5 = '1' (d.h. +32) : erweiterte Adressen aus CV17/18 verwenden
Bit #6 = '1' (d.h. +64) : ohne Funktion
Bit #7 = '1' (d.h. +128): ohne Funktion
48 Dekoder Betriebsart 1 0 0..255 Grundlegende Betriebsart des Dekoders:
Bit #0 = '1' (d.h. +1) : Dumm-Mode (kein Wiederherstellen des Zustandes beim Start)
Bit #1 = '1' (d.h. +2) : bisher ohne Funktion
Bit #2 = '1' (d.h. +4) : bisher ohne Funktion
Bit #3 = '1' (d.h. +8) : bisher ohne Funktion
Bit #4 = '1' (d.h. +16) : bisher ohne Funktion
Bit #5 = '1' (d.h. +32) : bisher ohne Funktion
Bit #6 = '1' (d.h. +64) : bisher ohne Funktion
Bit #7 = '1' (d.h. +128): bisher ohne Funktion
50 Verzögerung 1 0 0..255 definiert die Einschalt-Verzögerung mit einer Schrittweite von 0.5 sec.
'0' = keine Einschaltverzögerung
52 PWM-Wert 1 2 0..15 definiert die Helligkeit, wenn die Ausgänge im Status "DUNKEL" sind
'15' = hellste Stufe
53 PWM-Wert 2 15 0..15 definiert die Helligkeit, wenn die Ausgänge im Status "HELL" sind
'15' = hellste Stufe
54 Länge des Neon-Effektes 4
(ca. 2 sec.)
0..255 definiert die Länge des Neon-Effektes in einer Schrittweite von 0.5 sec.
'0' = kein Neon Effekt
'1' = Neon Effekt beim Einschalten im Neon-Mode ca. 0.5 sec.
'2' = Neon Effekt beim Einschalten im Neon-Mode ca. 1.0 sec.
usw.
61 Blinker Frequenz 5
(ca. 1 Hz)
1..255 definiert die Blinker-Frequenz (Länge der AN / AUS-Phase x 0.1 sec)
'1' = Blinkfrequenz ca. 10 Hz (d.h. jeweils 0.1 sec AN / AUS)
'2' = Blinkfrequenz ca. 2.5 Hz (d.h. jeweils 0.2 sec AN / AUS)
'3' = Blinkfrequenz ca. 1.7 Hz (d.h. jeweils 0.3 sec AN / AUS)
'4' = Blinkfrequenz ca. 1.25 Hz (d.h. jeweils 0.4 sec AN / AUS)
'5' = Blinkfrequenz ca. 1 Hz (d.h. jeweils 0.5 sec AN / AUS)
usw.
62 Bremslicht Dauer 4 1..255 definiert die Bremslicht-Dauer
Die Dauer des Bremslichtes errechnet sich aus diesem Wert und der Fahrstufen-Differenz. Dieser Wert wird entsprechend der Motor-Eigenschalften so eingestellt, so dass die Verzögerung des Motors (insbesondere durch die Bremsverzögerung des Motor-Dekoders) zur Bremslicht-Dauer passt.
63 Bremslicht Schwelle 4 1..255 definiert die Schwelle, ab welcher Fahrstufen-Differenz das Bremslicht eingeschaltet wird. Geringe Fahrstufen-Reduzierung muss ja nicht gleich ein "Bremsen" bedeuten, sondern wäre eher als "Ausrollen" (ohne Bremslicht) zu bezeichnen:
'1' = wird die Fahrstufe um 1 reduziert, so wird das Bremslicht eingeschaltet
'2' = wird die Fahrstufe um 2 reduziert, so wird das Bremslicht eingeschaltet
'3' = wird die Fahrstufe um 3 reduziert, so wird das Bremslicht eingeschaltet
'4' = wird die Fahrstufe um 4 reduziert, so wird das Bremslicht eingeschaltet
'5' = wird die Fahrstufe um 5 reduziert, so wird das Bremslicht eingeschaltet
usw.
64 Bremslicht Dauer Stand 16 1..255 definiert die Nachleucht-Dauer des Bremslichtes, wenn die Fahrstufe '0' erreicht wird. Dadurch kann z.B. eingestellt werden, wie lange der "Fahrer" im Stand auf der Bremse stehen bleibt. Übrigens führt eine Beschleunigung immer auch zu einem Ende des Brems-Lichtes (sowohl im Stand alsauch während der Fahrt).
115 nur Lissy: Zug-Kategorie 1 1-4 hier wird die Zug-Kategorie definiert, die im LISSY-System genutzt wird.
140 Mapping
Befehl 1
001

(F1)
Adresszuordnung (Mapping) für Befehl 1 (führt zu Aktion definiert in CV150)
 
Hier wird die Funktions-Nummer für den Befehl 1 definiert:
001 = F1
002 = F2
003 = F3
... usw....
012 = F12 ... usw....
028 = F28
 
Die Funktionen F13 bis F28 sind ab Firmware V0.70 nutzbar
141 Mapping
Befehl 2
002
(F2)
Adresszuordnung (Mapping) für Befehl 2 (führt zu Aktion definiert in CV151)
 
siehe CV 140
142 Mapping
Befehl 3
003
(F3)
Adresszuordnung (Mapping) für Befehl 3 (führt zu Aktion definiert in CV152)
 
siehe CV 140
143 Mapping
Befehl 4
004
(F4)
Adresszuordnung (Mapping) für Befehl 4 (führt zu Aktion definiert in CV153)
 
siehe CV 140
144 Mapping
Befehl 5
(Umschalten HELL / DUNKEL)
005
(F5)
Adresszuordnung (Mapping) für Befehl 5 (führt zu Umschaltung HELL/DUNKEL)
 
siehe CV 140
145 Mapping
Befehl
vorgesehen für weitere Befehle, noch keine Funktion
146
147
148
149
150 Betriebs-Art
Out 1
1
(Neon-Effekt)
0..255 Definiert die Betrieb-Art für Ausgang 1 (geschaltet mit Befehl 1, dieser wird in CV140 definiert):
000 = normale Schalt-Funktion (Dauerlicht ohne einen Licht-Effekt)
001 = Neon-Effekt beim Einschalten
002 = Bremslicht
004 = Blinker
128 = Dauer-Licht fahrtrichtungsabhängig V, geschaltet mit FL
130 = Bremslicht fahrtrichtungsabhängig V
192 = Dauer-Licht fahrtrichtungsabhängig R, geschaltet mit FL
194 = Bremslicht fahrtrichtungsabhängig R
151 Betriebs-Art
Out 2
1
(Neon-Effekt)
0..255 Definiert die Betrieb-Art für Ausgang 2 (geschaltet mit Befehl 2, dieser wird in CV141 definiert):
siehe CV 150
152 Betriebs-Art
Out 3
128
(fahrtrichtungs-
abhängig V)
0..255 Definiert die Betrieb-Art für Ausgang 3 (geschaltet mit Befehl 3, dieser wird in CV142 definiert):
siehe CV 150
153 Betriebs-Art
Out 4
196
(fahrtrichtungs-
abhängig R)
0..255 Definiert die Betrieb-Art für Ausgang 4 (geschaltet mit Befehl 4, dieser wird in CV143 definiert):
siehe CV 150

Beispiele CV-Konfigurationen

2 Ausgänge fahrtrichtungsabhängig schalten

Die Software ist bereits mit den voreingestellten Parametern so konfiguriert, dass man mit FL fahrtrichtungsabhängige Ausgänge schalten kann. Hier noch mal die vordefinierten Parameter, die für diese Funktionsart nötig sind:
 
CV 150 = 1 (Ausgang 1 soll Schaltausgang mit Neon-Effekt und unabhängig von Fahrtrichtung sein)
CV 151 = 1 (Ausgang 2 soll Schaltausgang mit Neon-Effekt und unabhängig von Fahrtrichtung sein)
CV 152 = 128 (Ausgang 3 soll Schaltausgang abhängig von Fahrtrichtung sein, geschaltet mit FL / F0, Fahrtrichtung V)
CV 153 = 192 (Ausgang 4 soll Schaltausgang abhängig von Fahrtrichtung sein, geschaltet mit FL / F0, Fahrtrichtung R)

4 unabhängige Schaltausgänge ohne Neon Effekt

Die Funktionen der Ausgänge werde alle auf normale Schaltfunktion gesetzt:
CV 150 = 0 (Ausgang 1 soll Schaltausgang ohne Neon-Effekt und unabhängig von Fahrtrichtung sein)
CV 151 = 0 (Ausgang 2 soll Schaltausgang ohne Neon-Effekt und unabhängig von Fahrtrichtung sein)
CV 152 = 0 (Ausgang 3 soll Schaltausgang ohne Neon-Effekt und unabhängig von Fahrtrichtung sein)
CV 153 = 0 (Ausgang 4 soll Schaltausgang ohne Neon-Effekt und unabhängig von Fahrtrichtung sein)
 
Um die Schalt-Funktionen auf andere F-Tasten zu legen, werden diese CVs angepasst:
CV 140 = 04 (Ausgang 1 soll auf F4 reagieren)
CV 141 = 05 (Ausgang 2 soll auf F5 reagieren)
CV 142 = 06 (Ausgang 3 soll auf F6 reagieren)
CV 143 = 07 (Ausgang 4 soll auf F7 reagieren)

Umschalten zwischen 2 Beleuchtungs-Stufen mittels eines weiteren F-Befehl

Die Helligkeit wird mit dem 5. Befehl umgeschaltet. Vordefiniert ist hier F5 (von Lok3). Die Umschaltung der Helligkeit hat keine Wirkung auf die fahrtrichtungsabhängigen Ausgänge sowie in der Betriebsart "Blinker" oder "Bremslicht".
 
Um die Lokadresse zu ändern, muss diese über CV1 (oder CV17/18 bei langen Adressen) angepasst werden.
CV144 definiert, mit welcher F-Nummer umgeschaltet wird (vordefiniert hier F5)
 
CV 53/54 definieren die Helligkeits-Stufen

Straßenbahn mit Bremslicht und Blinker

Es werden hier 2 Ausgänge für die fahrtrichtungsabhängige Bremslicht-Funktion benötigt:
CV 150 = 130 (Ausgang 1 soll Bremslicht Vorne sein)
CV 151 = 194 (Ausgang 2 soll Bremslicht Hinten sein)
 
Um die Bremslichter mit einer Funktions-Taste zu aktivieren, werden beide Ausgänge auf die selbe F-Taste gelegt (hier F3):
CV 140 = 03 (Ausgang 1 soll auf F3 reagieren)
CV 141 = 03 (Ausgang 2 soll auf F3 reagieren)
 
Zusätzlich kann ein Blinker an Ausgang 3 und Ausgang 4 angeschlossen werden:
CV 152 = 04 (Ausgang 3 soll Blinker sein)
CV 153 = 04 (Ausgang 4 soll Blinker sein)
 
Auch hier werden die F-Tasten neu zugeordnet (hier F6 und F7):
CV 142 = 06 (Ausgang 3 soll auf F6 reagieren)
CV 143 = 07 (Ausgang 4 soll auf F7 reagieren)
 

zurück zum Anfang nach Oben