Anzeige:
THEMA: Einstellen einer DCC langen Adresse
THEMA: Einstellen einer DCC langen Adresse
Wiencirz* - 07.10.10 14:04
Beim Ausprobieren der Einstellungen für Lange Adresse im DHP160 ist mir aufgefallen, das man mit dem Handregler Trix mit updatechip und der FCC der Anweisung in der Betriebsanleitung nicht folgen kann da es nicht richtig funktioniert ( oder ich bin zu doof dazu )
Hier steht:
Lange Lokadresse (CV 017 / 018): Die lange Lokadresse ist eine 14-Bit Adresse, die sich aus den CV’s 17 und 18 zusammensetzt, wobei die CV 017 den oberen Teil der Adresse und die CV 018 den unteren Teil der Adresse darstellen. Für die lange Adresse ist etwas Arithmetik erforderlich (die von den meisten Programmier-Einrichtungen selbsttätig durchgeführt wird):
( {CV 017} - 192 ) * 256 ) + {CV 018}. Zusätzlich muss zur Verwendung der langen Lokadresse in den Einstellungen (CV 029) das Bit 5 (Wert 32 = Lange Adresse
verwenden) eingeschaltet werden.
Adresse aus CV17 - 192 ) * 256 damit komme ich nicht klar.
Wenn ich jedoch die gewünschte Lokadresse durch 256 dividiere, den sich ergebenden Wert vor dem Komma mit 192 addiere, und dann für CV 18 192 abziehe und den Wert mit 256 multipliziere und in CV18 eintrage, dann funktioniert es.
Wo mache ich da in der D&H Programmieranleitung etwas falsch.
Gruß Gunter
Hier steht:
Lange Lokadresse (CV 017 / 018): Die lange Lokadresse ist eine 14-Bit Adresse, die sich aus den CV’s 17 und 18 zusammensetzt, wobei die CV 017 den oberen Teil der Adresse und die CV 018 den unteren Teil der Adresse darstellen. Für die lange Adresse ist etwas Arithmetik erforderlich (die von den meisten Programmier-Einrichtungen selbsttätig durchgeführt wird):
( {CV 017} - 192 ) * 256 ) + {CV 018}. Zusätzlich muss zur Verwendung der langen Lokadresse in den Einstellungen (CV 029) das Bit 5 (Wert 32 = Lange Adresse
verwenden) eingeschaltet werden.
Adresse aus CV17 - 192 ) * 256 damit komme ich nicht klar.
Wenn ich jedoch die gewünschte Lokadresse durch 256 dividiere, den sich ergebenden Wert vor dem Komma mit 192 addiere, und dann für CV 18 192 abziehe und den Wert mit 256 multipliziere und in CV18 eintrage, dann funktioniert es.
Wo mache ich da in der D&H Programmieranleitung etwas falsch.
Gruß Gunter
Hallo Gunter,
das kommt mir auch etwas komisch vor. Soweit ich das verstehe stehen im CV 017 von der 14 Bit Adressen die oberen 6 bits. Das heist die bits 7 und 8 von CV 017 werden für was anderes verwendet und müssen ausmaskiert werden.
1100.0000 binär = 192 dezimal
Aber diese 192 einfach abziehen haut nur hin wenn bit 7 und 8 immer gesetzt also 1 sind. Sobald eines davon 0 ist klappt nicht mehr.
z.B Adresse = 1000 dezimal
CV 017 = xx00.0011 CV 018 = 1110.1000 binär
Nu wirds interresant....
Sind nun die beiden xx = 0 dann ist der Wert CV 017 in dezimal = 3. Wenn ich davon 192 abziehe kommt eine negative Zahl raus und das mal 256. Demm geht eindeutig nicht :p
Sind die beiden xx = 1 dann ist der Wert CV 017 in dezimal = 195. Davon abgezogen 192 gibt 3.
3 x 256 = 768 dazu noch CV 018 = 232 dezimal addiert = 1000
Du siehst hängt von den beiden obersten bits 7 und 8 ab obs klappt oder nicht.
Korrekt wäre den Wert CV 017 mit 0011.1111 (63dez) "UND" zu verknüpfen das löscht die oberen 2 bits und man kann den erhaltenen Wert mit 256 multiplizieren.
Viele Grüße
Bernd
PS. Der Punkt bei den binären Zahlen dient nur der bessern lesbarkeit
Edit: eine 1 vergessen :)
das kommt mir auch etwas komisch vor. Soweit ich das verstehe stehen im CV 017 von der 14 Bit Adressen die oberen 6 bits. Das heist die bits 7 und 8 von CV 017 werden für was anderes verwendet und müssen ausmaskiert werden.
1100.0000 binär = 192 dezimal
Aber diese 192 einfach abziehen haut nur hin wenn bit 7 und 8 immer gesetzt also 1 sind. Sobald eines davon 0 ist klappt nicht mehr.
z.B Adresse = 1000 dezimal
CV 017 = xx00.0011 CV 018 = 1110.1000 binär
Nu wirds interresant....
Sind nun die beiden xx = 0 dann ist der Wert CV 017 in dezimal = 3. Wenn ich davon 192 abziehe kommt eine negative Zahl raus und das mal 256. Demm geht eindeutig nicht :p
Sind die beiden xx = 1 dann ist der Wert CV 017 in dezimal = 195. Davon abgezogen 192 gibt 3.
3 x 256 = 768 dazu noch CV 018 = 232 dezimal addiert = 1000
Du siehst hängt von den beiden obersten bits 7 und 8 ab obs klappt oder nicht.
Korrekt wäre den Wert CV 017 mit 0011.1111 (63dez) "UND" zu verknüpfen das löscht die oberen 2 bits und man kann den erhaltenen Wert mit 256 multiplizieren.
Viele Grüße
Bernd
PS. Der Punkt bei den binären Zahlen dient nur der bessern lesbarkeit
Edit: eine 1 vergessen :)
Beitrag editiert am 07. 10. 2010 16:09.
Hallo in die Runde
hier gibts einen netten Rechner für lange DCC- Adressen
http://www.opendcc.org/info/decoder/dcc_cv.html
Viele Grüße
Katerchen
hier gibts einen netten Rechner für lange DCC- Adressen
http://www.opendcc.org/info/decoder/dcc_cv.html
Viele Grüße
Katerchen
Arnold_Huebsch - 10.10.10 21:16
Nur registrierte und eingeloggte User können Antworten schreiben.
Einloggen ->
Noch nicht registriert? Hier können Sie Ihren kostenlosen Account anlegen: Neuer N-Liste Account
Zum Seitenanfang
© by 1zu160.net;