RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#426 von MicroBahner , 16.08.2018 12:12

Zitat

die schreibst dass deine Loconet Decoder mit dem Nano nicht laufen, wegen des Timers. Liegt das jetzt nur an den Moba Tools?

Hallo Ulrich,
ja, das liegt an der Kombination MobaTools <-> Loconet-Lib. Beide benötigen einen 16-Bit Timer, und der AtMega328 hat nunmal nur einen.
Auf einem UNO/Nano wollen deshalb beide den Timer 1 benutzen und kommen sich da also in die Quere.

Auf einem Mega benutzt die LocoNet Lib automatisch den Timer 5, auf UNO/Nano und Leonardo/Micro den Timer 1.
Die MobaTools benutzten immer dann den Timer 3, wenn er existiert, also auf Leonardo/Micro und auf dem Mega.
Dadurch gehen sich die beiden Libs auf Mega und Leonardo/Micro elegant aus dem Weg - Auf UNO/Nano kollidieren sie.

LocoNet ohne MobaTools und MobaTools ohne LocoNet funktionieren auch auf einem UNO/Nano. Da die nmraDCC-Lib keinen TImer benötigt, funktioniert es da auch auf einem UNO/Nano zusammen mit den MobaTools.


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#427 von Kriwatsch , 16.08.2018 12:25

Hallo
Ich habe das bisher so verstanden, dass der Decoder in der hier vorgestellten Konfiguration mit dem AT328P einen zweiten unabhängigen Timer benötigt, für Loconet Baust Du das Ganze mit einem Mega auf dann hast Du mehr als einen Timer. Daraus folgt für mich, mit UNO,NANO nur entweder - oder, weil die nur einen Timer haben.
Ciao
Micha


 
Kriwatsch
InterRegio (IR)
Beiträge: 230
Registriert am: 26.10.2015
Ort: Dresden
Spurweite N
Stromart DC, Analog


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#428 von MicroBahner , 16.08.2018 12:32

Hallo Micha,
ja so ist das. Aber auch der ATmega32u4 auf Leonardo/Micro hat schon 2 16-Bit Timer ( Timer1 und TImer3 ). Deshalb braucht es nicht unbedingt einen Mega. Und der proMicro ist genauso kompakt wie der Nano und nur wenig teurer.


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#429 von Kriwatsch , 16.08.2018 12:46

Hallo Franz-Peter
Der Mega war als Beispiel genannt. Wichtig ist ein zweiter unabhängiger Timer Welchen man dann nimmt - eigener Gusto! Habe aus China wieder was bekommen
Ciao
Micha


 
Kriwatsch
InterRegio (IR)
Beiträge: 230
Registriert am: 26.10.2015
Ort: Dresden
Spurweite N
Stromart DC, Analog


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#430 von Murdock412 , 29.09.2018 22:35

Hallo,

nach längerer Abwesenheit durch Urlaub und Wetter melde ich mich dann auch mal wieder. Mittlerweile habe ich meine Eigenbau-Arduinos einwandfrei zum laufen bekommen und steuere mit jedem davon 8 Servos über die z21 per Tablet. Die vormals aufgetauchten Probleme mit Cv`s, die sich verselbstständigen oder allgemeinen Problemen, die zu totaler Funktionslosigkeit führten, haben sich mittlerweile erledigt.

Allerdings taucht jetzt doch ein neues, interessantes Problem auf, zu dem ich hier noch nichts weiter gefunden habe. Sobald ich mehrere meiner Decoder in meine Steuerung einbinde ( jeder mit eigenem "DCC auf Arduino"-Adapter ), stellt irgendein anderer Decoder seine Funktion ein. Tausche ich die ankommende DCC-Spannung, funktionieren entweder beide oder gar keiner. Problematisch wird dieses Phänomen mit steigender Anzahl Decoder ( drei hab ich momentan gleichzeitig aktiv), da dann das hin- und Hertauschen der DCC-Spannung bis alles funktioniert sehr aufwändig und nervig wird. Auch steuern die Decoder jetzt teilweise nicht mehr mehrere Servos gleichzeitig, wenn dies per Fahrstrasse in der App angefordert wird. Ist nur ein Decoder angeschlossen, klappts einwandfrei.

Da im Einzelbetrieb soweit alles klappt, sollte es nicht an den Platinen liegen. Versorgt werden die Arduinos über die 5 Volt eines PC-Netzteils, die DCC-Spannung der z21 liegt bei ca. 17 Volt aus dem Standard-Netzteil, dass der z21 beilag.

Damit dann zu meiner Frage: Hat jemand das gleiche Problem (gehabt) und weiß Rat?


Murdock412  
Murdock412
Beiträge: 8
Registriert am: 20.07.2014


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#431 von black5 ( gelöscht ) , 30.09.2018 09:55

Moin,

Zitat

Tausche ich die ankommende DCC-Spannung, .... da dann das hin- und Hertauschen der DCC-Spannung...

Versorgt werden die Arduinos über die 5 Volt eines PC-Netzteils, die DCC-Spannung der z21 liegt bei ca. 17 Volt aus dem Standard-Netzteil, dass der z21 beilag.



Was bitte verstehst du unter "Tausche ich die ankommende DCC-Spannung"? Tauschst du da die rechte Klemme/Schiene mit der linken Klemme/Schiene ? Oder wie muss ich mir das vorstellen.

Und haben deine Netzteile alle die Masseanschlüsse miteinander verbunden (gemeinsame Masse). Und wie sieht es aus mit dem Netzteil für die Servos? Wo kriegen die ihre Versorgungsspannung her und hast du da auch an die gemeinsame Masse gedacht?

So viele Fragen am Sonntag Morgen

Ulrich


black5

RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#432 von fbstr , 30.09.2018 12:00

Zitat

Da im Einzelbetrieb soweit alles klappt, sollte es nicht an den Platinen liegen. Versorgt werden die Arduinos über die 5 Volt eines PC-Netzteils, die DCC-Spannung der z21 liegt bei ca. 17 Volt aus dem Standard-Netzteil, dass der z21 beilag.



Moin,
ich bin jetzt absolut nicht der Arduino-Experte, aber beim Arduino Nano wird als Spannungsversorgung 7-12V angegeben.
Deshalb habe ich bei mir eine 5V Spannungsversorgung für die Servos und 9V Spannungsversorgung für den Arduino.

Könnte es daran liegen dass Deine 5V nicht ausreichen?


Gruss
Frank
---------------------------------------------------------------------------------------------------------------------
MobaLedLib Wiki
Projekt "Bahnpark Augsburg"
Stummitreff BB: jeden 3. Freitag im Monat im Haus Sommerhof in Sindelfingen


 
fbstr
Metropolitan (MET)
Beiträge: 2.541
Registriert am: 28.08.2016
Ort: Stuttgart
Gleise Peco Code 75, Trix C
Spurweite H0, H0e
Steuerung YD7001, MobaLedLib, MirZ21, Lenz LZV100
Stromart DC, Digital


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#433 von Siki , 30.09.2018 14:39

Es ist korrekt das die Arduino's einen Spannungsregler haben und dieser mit min. 7V versorgt werden sollte, da der Regler immer ein bisschen Spannung vernichtet. Allerdings gibt es für den fall das man schon saubere 5V hat auch den "RAW" Eingang, dieser umgeht den Spannungsregler, aber dann muss die Spannung stabil sein...
Im falle des Arduino Nano's ist der RAW Pin gleich dem 5V Pin, man kann diesen nutzen, aber wenn die Spannung mal über 5V geht ist der Arduino am Ende...

Lg Simon


Siki  
Siki
InterRegio (IR)
Beiträge: 133
Registriert am: 27.04.2015


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#434 von Murdock412 , 30.09.2018 15:48

Tach, danke schonmal für die vielen Antworten und Ideen. Ich versuche mal die grundlegenden Fragen zu beantworten.

Zitat
Was bitte verstehst du unter "Tausche ich die ankommende DCC-Spannung"? Tauschst du da die rechte Klemme/Schiene mit der linken Klemme/Schiene ? Oder wie muss ich mir das vorstellen.


Ja, genau so ists im Prinzip gemeint. Ich habe eine Hauptverteilerleiste, von dieser wird alles versorgt.

Zitat
Und haben deine Netzteile alle die Masseanschlüsse miteinander verbunden (gemeinsame Masse). Und wie sieht es aus mit dem Netzteil für die Servos? Wo kriegen die ihre Versorgungsspannung her und hast du da auch an die gemeinsame Masse gedacht?



Ich habe eine DCC-Spannung (z21) und eine 5 volt Spannungsversorgung, die jeweils den dazu gehörenden bereich versorgen. Diese beiden Spannungen sind logischerweise voneinander getrennt. Auf der 5 Volt-Ebene hat dementsprechend alles eine gemeinsame Masse.

Zitat
Könnte es daran liegen dass Deine 5V nicht ausreichen?



die 5 Volt greife ich mir an meinem Desktop-PC-Netzteil ab, die sollten relativ stabil und leistungsstark sein.
Verbaut habe ich wie schon erwähnt Eigenbaudecoder, basierend auf dem Atmel 328p. Diese sollen lt. Datenblatt mit 5Volt betrieben werden. Davon hatte ich vorher insgesamt 10 Stück als Steuerung für Servos, Relais und LEDs in Betrieb, allerdings klassisch mit Schaltern und Reed-Kontakten angesteuert. Dies hat auch einwandfrei funktioniert. Wenn ich raus gefunden habe, wie ich Bilder direkt vom Rechner einfüge, kann ich gerne die entsprechende Hardware zeigen.


Murdock412  
Murdock412
Beiträge: 8
Registriert am: 20.07.2014


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#435 von MoBa_Alfred , 01.10.2018 15:18

Hallo Simon,

Zitat

..... Allerdings gibt es für den fall das man schon saubere 5V hat auch den "RAW" Eingang, dieser umgeht den Spannungsregler, aber dann muss die Spannung stabil sein...
Im falle des Arduino Nano's ist der RAW Pin gleich dem 5V Pin....


Damit bin ich nicht ganz einverstanden.
Der RAW Eingang ist bei den Arduinos immer der Eingang für "ungeregelte" Spannung (ca.7-20V) und geht über den Spannungsregler.
Der RAW Pin ist bei vielen Arduinos auch als "VIN" bezeichnet.
Sicher geregelte 5V kann man in die +5V oder VCC Pins einspeisen.

Quelle: Arduino Schematics und arduino.cc


Grüße
Alfred


=================================
Mä-M-Gleisanlage und C-Gleisanlage, Digital mit MoBaSbS und TrainController 10
H0e Module mit DR5000(YD7001) und multiMAUS
und aus Altbeständen 6021, IB und MobileStation
=================================


 
MoBa_Alfred
InterCity (IC)
Beiträge: 541
Registriert am: 19.10.2006
Gleise C-Gleis, M-Gleis, Roco H0e Gleis
Spurweite H0, H0e, Z
Steuerung MoBaSbS
Stromart Digital, Analog


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#436 von black5 ( gelöscht ) , 01.10.2018 17:36

Ich würde die Nanos nach Möglichkeit über Vin mit Spannung versorgen, nach Möglichkeit 7 bis 9 Volt. Versorgt man sie über den 5 Volt Pin besteht die Gefahr daß bei einer zu hohen Spannung (+10%) der atmega hochgeht, ebenso besteht die Gefahr wenn ich den USB Anschluss einstecke zum Programmieren das entweder der PC/Laptop einen mitkriegt oder der 5 Volt Regler auf dem nano.
Bei der 3,3 Volt Variante können 4 Volt den Tod des Nanos bedeuten.
@Murdock
Wie steuerst du die Servos an, direkt mit den digital Pins?
Und wieso ändert sich das DCC verhalten wenn du die Anschlüsse tauschst - DCC sollte ein symetrisches Rechtecksignal sein - ausser du hast viele extended Zero Signale, weil bei dir irgendetwas analoges angesteuert wird.
Ulrich


black5

RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#437 von MicroBahner , 01.10.2018 18:13

Zitat

Und wieso ändert sich das DCC verhalten wenn du die Anschlüsse tauschst - DCC sollte ein symetrisches Rechtecksignal sein

Ich denke auch, dass man hier ansetzen müsste. Da stimmt etwas nicht. Das Verhalten darf nicht davon abhängen, mit welcher Polarität das DCC-Signal angeschlossen ist.


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#438 von Murdock412 , 13.10.2018 22:42

Hi,

ich mal wieder. So wie es scheint, habe ich die Lösung gefunden. Die 5 Volt aus meinem Tower-PC-Netzteil waren wohl nicht die saubersten, obwohl messtechnisch dauerhaft 5,122V anstanden. Nur beim Schalten der Servos brach die ab und zu auf 5,064V ein. ich habe jetzt einfach mal zwei 1000µF-Kondensatoren in auf die Einspeisung geklemmt und siehe da: Alles läuft wie gedacht.


Murdock412  
Murdock412
Beiträge: 8
Registriert am: 20.07.2014


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#439 von 211064 , 19.10.2018 21:17

Hallo Franz-Peter, hallo DIY-Zubehördecoder-Community,

zunächst: Danke dir, Franz-Peter, für die ganze Arbeit, die Du in diesen DIY-Decoder steckst! rost: Und allen anderen, die hier kommentiert haben auch - ich habe viel gelernt. Aber wohl nicht genug, denn ich kriege den Decoder nicht ans Laufen.

***Hat sich erledigt, sorry. Ich hätte früher schlafen gehen sollen ops: . Aber wer den eigentlichen Sketch nicht hochlädt, der kann den Decoder nicht ans Laufen kriegen. ***


Viele Grüße
Christoph

Bekennender Marzibahner

Mein aktuelles Projekt: Spyck/Niederrhein
Meine eingelagerte kleine Segmentanlage


 
211064
EuroCity (EC)
Beiträge: 1.224
Registriert am: 08.11.2014
Homepage: Link
Spurweite H0
Stromart DC, Digital


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#440 von volkerS , 20.10.2018 02:02

Hallo Christoph,
du hast hoffentlich den Leds einen Vorwiderstand spendiert. Sonst ist möglicherweise A0 und A3 zerstört und noch mehr.
Volker


volkerS  
volkerS
ICE-Sprinter
Beiträge: 5.998
Registriert am: 14.10.2014


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#441 von 211064 , 20.10.2018 06:52

Guten Morgen,

@Volker: Ja, habe ich. Aber das war ja nicht das Problem ...


Viele Grüße
Christoph

Bekennender Marzibahner

Mein aktuelles Projekt: Spyck/Niederrhein
Meine eingelagerte kleine Segmentanlage


 
211064
EuroCity (EC)
Beiträge: 1.224
Registriert am: 08.11.2014
Homepage: Link
Spurweite H0
Stromart DC, Digital


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#442 von 211064 , 20.10.2018 12:32

Hallo Franz-Peter, hallo DIY-Zubehördecoder-Community,

im zweiten Anlauf - mit *.ino-Datei - leuchtet beim Start des Decoders die LED an A0. ABER: Ich kann genau einmal schalten. Sprich: Wenn ich mit der Lokmaus2 einen Schaltbefehl gebe, wechselt der Decoder von A0 auf A1. Die LED an A0 blendet ab, die an A1 blendet auf. Aber ich kann nicht wieder zurück auf die LED an A0 schalten. Erst mit RESET am Board leuchtet die LED an A0 wieder und das Spiel kann von vorne beginnen. Es ist zum Mäusemelken! Jeder weitere Weichenbefehl aus der Lokmaus bewirkt nichts. Das gleiche Verhalten zeigt sich auch an A3/A4, also mit der nächsten Adresse.

Bodo hat vorgesehen, in der DCC-Zubehoerdecoder.h-Datei

1
 
#define FIXMODE INIMOD
 

zu setzen, damit A5 bzw. beim LS-Decoder A7 frei bleiben können. Das habe ich gemacht. Ich habe es auch mit NORMALMODE versucht - das bringt keine Änderung. Tja, jetzt stehe ich wie der Ochs vor'm Berg und weiß nicht weiter. Kann mir bitte jemand auf die Sprünge helfen?!

Der Code meiner DCC-Zubehoerdecoder.h:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
 

 
/* Universeller DCC - Zubeh&#246;rdecoder
**************************************************************************************************
* Beispieldatei f&#252;r L i c h t h a u p t s i g n a l e (ohne Vorsignale am gleichen Mast).
F&#252;rs Forum habe ich den Kommentar weggelassen
*/
#define ENCODER_DOUBLE // Eigenschaften des Drehencoders (Impulse per Raststellung)
 

// vom Anwender &#228;nderbare Parameter um den Zubeh&#246;rdecoder an die verwendete HW anzupassen
 
// Beispiel f&#252;r Variante mit Licht-Ausfahrsignal mit Vorsignal, mit Betriebsmode Led an Pin 13 (interne Led)
 
//----------------------------------------------------------------
// Hardwareabh&#228;ngige Konstante ( nicht per CV &#228;nderbar)
//----------------------------------------------------------------
const byte dccPin = 2;
const byte ackPin = NC;
 
// Eing&#228;nge analog: ( Bei Nano und Mini - Versionen kann hier auch A7 und A6 verwendet werden, um mehr
// digital nutzbare Ports freizubekommen.
// beim UNO sind A7+A6 nicht vorhanden! )
#define FIXMODE NORMALMODE
const byte betrModeP = A7; // Analogeingang zur Bestimmung des Betriebsmodus. Wird nur beim
// Programmstart eingelesen!
const byte resModeP = A6; // R&#252;cksetzen CV-Werte + Mittelstellung Servos
 
// Eing&#228;nge digital (die Ports A0-A5 lassen sich auch digital verwenden): ---------
 
// Drehencoder zur Servojustierung ...........
//#define ENCODER_AKTIV // Wird diese Zeile auskommentiert, wird der Encoder nicht verwendet.
// Die Encoder-Ports werden dann ignoriert, und k&#246;nnen anderweitig
// verwendet werden.
const byte encode1P = NC; // Eingang Drehencoder zur Justierung.
const byte encode2P = NC;
// ............................................
//-------------------------------------------------------------------------------------------------------
// Betriebswerte ( per CV &#228;nderbar ) Diese Daten werden nur im Initiierungsmodus in die CV's geschrieben.
// Der Initiierungsmodus l&#228;sst sich per Mode-Eingang aktivieren oder er ist automatisch aktiv, wenn keine
// sinnvollen Werte im CV47 stehen.
//-------------------------------------------------------------------------------------------------------
const byte DccAddr = 17; // DCC-Decoderadresse
const byte iniMode = 0x50 | AUTOADDR | ROCOADDR ; // default-Betriebsmodus ( CV47 )
const int PomAddr = 50; // Adresse f&#252;r die Pom-Programmierung ( CV48/49 )
 

//Konstante f&#252;r Lichtsignalfunktion
#define SIG_DARK_TIME 300 // Zeit zwischen Dunkelschalten und Aufblenden des neuen Signalbilds
#define SIG_RISETIME 500 // Auf/Abblendezeit
 
// Ausg&#228;nge: mit NC gekennzeichnete Ausg&#228;nge werden keinem Port zugeordnet. Damit k&#246;nnen Ports gespart werden,
// z.B. wenn bei einem Servo kein Polarisierungsrelais ben&#246;tigt wird
const byte modePin = 13; // Anzeige Betriebszustand (Normal/Programmierung) (Led)
 
#define MAX_LEDS 16 // default ist 16. Kann auf die tats&#228;chlich benutzte Zahl reduziert werden, um RAM zu sparen.
// Pro Softled werden 19 Byte ben&#246;tigt

const byte iniTyp[] = { FSIGNAL2, FSIGNAL0, FSIGNAL2, FSIGNAL0, FSIGNAL2, FSIGNAL0, FSIGNAL2, FSIGNAL0, FSIGNAL2, FSIGNAL0 };
const byte out1Pins[] = { A0, NC, A3, NC, 3, NC, 6, NC, 9, NC };
const byte out2Pins[] = { A1, NC, A4, NC, 13, NC, 7, NC, 10, NC };
const byte out3Pins[] = { A2, NC, A5, NC, 5, NC, 8, NC, 11, NC };

const byte iniFmode[] = { 0, 0b000100, 0, 0b000100, 0, 0b000100, 0, 0b000100, 0, 0b000100 };
const byte iniPar1[] = { 0b001001, 0b110001, 0b001001, 0b110001, 0b001001, 0b110001, 0b001001, 0b110001, 0b001001, 0b110001 };
const byte iniPar2[] = { 0b100010, 0b100110, 0b100010, 0b100110, 0b100010, 0b100110, 0b100010, 0b100110, 0b100010, 0b100110 };
const byte iniPar3[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
const byte iniPar4[] = { 0b000101, 0, 0b000101, 0, 0b000101, 0, 0b000101, 0, 0b000101, 0 };
//------------------------------------------------------------------------------------
 
 


Viele Grüße
Christoph

Bekennender Marzibahner

Mein aktuelles Projekt: Spyck/Niederrhein
Meine eingelagerte kleine Segmentanlage


 
211064
EuroCity (EC)
Beiträge: 1.224
Registriert am: 08.11.2014
Homepage: Link
Spurweite H0
Stromart DC, Digital


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#443 von Bodo , 20.10.2018 13:23

Hallo Christoph,

Zitat

Bodo hat vorgesehen, in der DCC-Zubehoerdecoder.h-Datei

1
 
#define FIXMODE INIMOD
 

zu setzen, damit A5 bzw. beim LS-Decoder A7 frei bleiben können. Das habe ich gemacht. Ich habe es auch mit NORMALMODE versucht - das bringt keine Änderung. Tja, jetzt stehe ich wie der Ochs vor'm Berg und weiß nicht weiter. Kann mir bitte jemand auf die Sprünge helfen?!




... ist vermutlich nur ein Kopierfehler, da fehlt ein E:

1
 
#define FIXMODE INIMODE
 


Meiner Meinung nach sollte der Dekoder (ohne Programmierung) erstmal so betrieben werden, um auszuschließen, dass er falsche Werte aus dem EEPROM verwendet.

Außerdem macht die Belegung so nur begrenzt Sinn - wenn Du nur ein zweibegriffiges Signal verwendest, solltest Du auch nur "FSIGNAL2" verwenden - denn wenn Du in Deinem Beispiel mit Adresse 17 anfängst, wäre die nächste (für A3 und A4) bei Dir 19 (weil 18 die zweite Adresse des ersten Signals ist.

Versuche es doch mal (keep it simple) mit
[Code]
#define FIXMODE INIMODE
const byte iniTyp[] = { FSIGNAL2, FSIGNAL2 };
const byte out1Pins[] = { A0, A3 };
const byte out2Pins[] = { A1, A4 };
const byte out3Pins[] = { NC, NC };
const byte iniFmode[] = { 0, 0 };
const byte iniPar1[] = { 0b001, 0b001 };
const byte iniPar2[] = { 0b110, 0b110 };
const byte iniPar3[] = { 0, 0 };
const byte iniPar4[] = { 0, 0 };
//------------------------------------------------------------------------------------
[/code]

Viele Grüße, Bodo


Die Freiheit des Menschen liegt nicht darin, dass er tun kann, was er will, sondern dass er nicht tun muss, was er nicht will. (Jean-Jacques Rousseau)

Meine Anlage - Meine Dauerbaustelle
Platinen für Modellbahn- und Arduino-Anwendungen


 
Bodo
InterCityExpress (ICE)
Beiträge: 2.475
Registriert am: 28.04.2005
Homepage: Link
Gleise C-Gleis, Lenz 0
Spurweite H0, 0
Steuerung MS2 & CS2
Stromart Digital


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#444 von 211064 , 20.10.2018 21:25

Hallo Bodo,

danke für deinen Beitrag. Das fehlende "E" war (leider) nur ein Kopierfehler hier im Forum. In der h-Datei steht korrekt "INIMODE". Ich werde die Software noch einmal "frisch machen", also die bisher verwendeten DCC-Zubehoerdecoder-Dateien löschen und die zip-Archive von Decoder und Bibliotheken neu entpacken. Vielleicht hat sich irgendwo ein Fehler eingeschlichen.
Die LEDs dienen nur dem Test. Wenn ich mit dem Decoder klarkomme, soll er zwei zweibegriffige und ein dreibegriffiges Signal ansteuern.


Viele Grüße
Christoph

Bekennender Marzibahner

Mein aktuelles Projekt: Spyck/Niederrhein
Meine eingelagerte kleine Segmentanlage


 
211064
EuroCity (EC)
Beiträge: 1.224
Registriert am: 08.11.2014
Homepage: Link
Spurweite H0
Stromart DC, Digital


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#445 von 211064 , 02.11.2018 14:43

Tach zusammen,

gestern hatte ich die Muße, mir den Decoder noch einmal vorzuknöpfen. Alles noch einmal auf Anfang, also die Decoder-Software und die Bibliotheken noch einmal frisch heruntergeladen und in eine frische Arduino-IDE-Installation eingebracht - jetzt funktioniert es!

Damit stehe ich vor der nächsten Frage. Ich möchte an den Decoder 3 2-begriffige Signale mit gemeinsamem Pluspol direkt anschließen. Damit das funktioniert, muss ich Bit7 in der Zeile const byte iniFmode auf 1 setzen, richtig? Leider weiß ich nicht, wie das geht ... ops: In Bodos Beispiel, (das ich um eine Spalte FSIGNAL2 ergänzen werde) steht in der Zeile const byte iniFmode eine 0. Da es sich um Bit7 handelt, glaube ich kaum, dass ich dort nur eine 1 reinschreiben muss. Aber was dann? Vielleicht so wie in der Beispieldatei in der gleichen Zeile, Spalte FSIGNAL0 und dort an 7. Stelle eine 1? Also so:

1
2
3
4
5
6
7
8
9
10
11
12
 
#define FIXMODE INIMODE
const byte iniTyp[] = { FSIGNAL2, FSIGNAL2 };
const byte out1Pins[] = { A0, A3 };
const byte out2Pins[] = { A1, A4 };
const byte out3Pins[] = { NC, NC };
const byte iniFmode[] = {0b000110, 0b000110 };
const byte iniPar1[] = { 0b001, 0b001 };
const byte iniPar2[] = { 0b110, 0b110 };
const byte iniPar3[] = { 0, 0 };
const byte iniPar4[] = { 0, 0 };
//------------------------------------------------------------------------------------
 
 



Was bedeutet das "b" in diesen 0/1-Reihen?


Viele Grüße
Christoph

Bekennender Marzibahner

Mein aktuelles Projekt: Spyck/Niederrhein
Meine eingelagerte kleine Segmentanlage


 
211064
EuroCity (EC)
Beiträge: 1.224
Registriert am: 08.11.2014
Homepage: Link
Spurweite H0
Stromart DC, Digital


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#446 von MicroBahner , 02.11.2018 16:11

Hallo Christoph,

Zitat

Was bedeutet das "b" in diesen 0/1-Reihen?

das 'b' bedeutet, das diese Zahl in Binärschreibweise angegeben ist. Also jede Stelle hinter dem b entspricht einem Bit. Für ein Byte sind das also bis zu 8 Stellen.

1
2
3
4
5
6
7
8
9
10
 

0b00000000
| ||^-Wert f&#252;r Bit 0
| |^--Wert f&#252;r Bit 1
| ^---Wert f&#252;r Bit 2
| ...
^---------Wert f&#252;r Bit 7

z.B. nur Bit 7 gesetzt:
0b10000000
 

Da führende Nullen nicht geschrieben werden müssen, können da auch weniger als 8 Stellen stehen, wenn die höherwertigen Bits '0' sind.
Das erleichtert die Schreibweise, wenn es eigentlich nicht um den Zahlenwert des Byte geht (0...255), sondern jedes Bit eine individuelle Bedeutung hat. Dann muss man nicht in Dezimal umrechnen. Wenn Du statt des binären '0b10000000' dezimal '128' schreiben würdest, wäre es dasselbe.


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#447 von 211064 , 03.11.2018 17:58

Hallo Franz-Peter,

vielen Dank für die Erklärung. Wieder etwas gelernt . Ich habe 0b1 eingetragen, jetzt kann ich das Signal direkt ansteuern. Allerdings geht es beim Start des Decoders nicht auf HP0 (es handelt sich um ein zweibegriffiges Einfahrsignal), sondern auf HP1. Um das zu vermeiden, kann ich die signalseitigen Anschlusskabel vertauschen - oder ich tausche die Werte von iniPar1 und iniPar2, verstehe ich das richtig?
Das ist für das 2-begriffige Einfahrsignal nicht entscheidend, aber demnächst kommt noch ein dreibegriffiges dazu, da müsste ich ja die beiden Werte ebenfalls vertauschen, wenn ich das richtig verstanden habe.


Viele Grüße
Christoph

Bekennender Marzibahner

Mein aktuelles Projekt: Spyck/Niederrhein
Meine eingelagerte kleine Segmentanlage


 
211064
EuroCity (EC)
Beiträge: 1.224
Registriert am: 08.11.2014
Homepage: Link
Spurweite H0
Stromart DC, Digital


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#448 von MicroBahner , 03.11.2018 22:50

Hallo Christoph,

Zitat

Ich habe 0b1 eingetragen,

Wo hast Du dies eingetragen? 0b1 bedeutet, dass Bit 0 gesetzt ist., Bit7...Bit1 sind 0.

Zitat

Um das zu vermeiden, kann ich die signalseitigen Anschlusskabel vertauschen - oder ich tausche die Werte von iniPar1 und iniPar2, verstehe ich das richtig?

ja, das sollte aufs Gleiche hinauslaufen. Letztendlich kommt es immer darauf an, was Du an welchem Pin angeschlossen hast, und wie Du sie dann in den Parametern konfigurierst.
Vielleicht zeigst Du mal die entsprechenden Zeilen der Konfiguration, und schreibst, welche Singal-Led an welchem Pin angeschlossen ist.


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#449 von 211064 , 04.11.2018 10:45

Hallo Franz-Peter,

danke für deine Antwort zu so später Stunde.

Zitat

Hallo Christoph,

Zitat

Ich habe 0b1 eingetragen,

Wo hast Du dies eingetragen? 0b1 bedeutet, dass Bit 0 gesetzt ist., Bit7...Bit1 sind 0.




Und ich dachte, ich hätte es verstanden ...

Dein Beispiel:

Zitat
z.B. nur Bit 7 gesetzt:
0b10000000


und den Hinweis, dass man die führenden Nullen nicht schreiben muss, habe ich so verstanden, dass man Bit 7 mit 0b1 setzt. Weil die Bits von rechts nach links gezählt werden, habe ich gedacht, dass die "führenden" Nullen auch von rechts nach links gedacht sind. Offensichtlich nicht .

Meine Parameter (ich habe Bodos Vorschlag aus #443 angewendet) sehen im Moment so aus:

1
2
3
4
5
6
7
8
9
10
 
const byte iniTyp[]     =   { FSIGNAL2, FSIGNAL2, FSIGNAL2 };
const byte out1Pins[] = { A0, A2, A3 }; // rote LED
const byte out2Pins[] = { A1, A3, A4 }; // gr&#252;ne LED
const byte out3Pins[] = { NC, NC, NC };

const byte iniFmode[] = { 0b1, 0b1, 0b1 };
const byte iniPar1[] = { 0b001, 0b001, 0b001 };
const byte iniPar2[] = { 0b110, 0b110, 0b110 };
const byte iniPar3[] = { 0, 0, 0 };
const byte iniPar4[] = { 0, 0, 0 };
 



Ich werde jetzt "0b10000000" in iniFmode schreiben und dann berichten, wie die Signale reagieren.


Viele Grüße
Christoph

Bekennender Marzibahner

Mein aktuelles Projekt: Spyck/Niederrhein
Meine eingelagerte kleine Segmentanlage


 
211064
EuroCity (EC)
Beiträge: 1.224
Registriert am: 08.11.2014
Homepage: Link
Spurweite H0
Stromart DC, Digital


RE: Arduinobasierter DIY Zubehördecoder V7.0.0 freigegeben

#450 von MicroBahner , 04.11.2018 11:01

Zitat

und den Hinweis, dass man die führenden Nullen nicht schreiben muss, habe ich so verstanden, dass man Bit 7 mit 0b1 setzt. Weil die Bits von rechts nach links gezählt werden, habe ich gedacht, dass die "führenden" Nullen auch von rechts nach links gedacht sind. Offensichtlich nicht .

Hallo Christoph,
das ist eigentlich ganz genauso wie bei Dezimalzahlen. Wenn dein Stromzähler daheim eine 8 stellige Anzeige hat, und da steht '00003600', dann hast Du 3600 kwh verbraucht. Die Nullen links sind irrelevant, und können weeggelassen werden. Wenn Du die Nullen rechts weglassen könntest würde es billig .

Aber Vorsicht bei C/C++, wenn da nur eine führende 0 steht ( ohne die Kennzeichner 'b' oder 'x' ), wird die Zahl als 'Oktalzahl' interpretiert:
0b10111 - Binärzahl (identisch mit 0b0001011)
0x17 - Hexzahl ( identisch mit 0x0017 )
027 - Oktalzahl (identisch mit 0027 )
23 - Dezimalzahl ( nicht identisch mit 023 )
alle 4 Varianten oben stellen letztendlich die gleiche Zahl dar. D.h. bei C/C++ darfst du bei Dezimalzahlen keine führenden Nullen schreiben.

Mit dem richtigen Wert bei iniFmode sollten deine Signale im Ruhezustand dann auch Hp0 anzeigen.


viele Grüße
Franz-Peter
Ein 'elektromechanisches' Stellwerk
Der (ehemalige) 'Eisberg'


 
MicroBahner
Metropolitan (MET)
Beiträge: 2.833
Registriert am: 28.11.2012
Ort: Mittelfranken
Gleise Tillig Elite
Steuerung Eigenbau
Stromart Analog


   

Lenz Booster LV102 mit Booster Mangementsystem BMS-D von Boll
rtDrive Lenz Digikeijs DR5000

  • Ähnliche Themen
    Antworten
    Zugriffe
    Letzter Beitrag
Xobor Einfach ein eigenes Forum erstellen
Datenschutz