RE: ATtiny85 DCC-Dekoder 16 Funktionen

#1 von Bodo , 23.11.2018 17:15

Hallo zusammen,

ich hab´ mal wieder was angefangen … passt aber irgendwie nicht so richtig zu den vorhandenen ähnlichen Threads. Ich wollte sehen, was in einen ATtiny so alles reinpasst und habe einen DCC-Dekoder auf ATtiny-Basis mit Schieberegistern kombiniert. Vorab also schon mal direkt: Klar - mit einem Arduino geht´s genau so gut oder besser. Dann bleiben nach Abzug der drei Ports für die Schieberegister und den Port für das DCC-Signal sogar noch mehr als einer übrig. Die "Dekoder-Hardware" orientiert sich am Digispark und der Schaltung von Robokalle mit dem Vorteil, dass der StepDown-Regler an der Digitalspannung nicht direkt heiß wird. Anwendung könnte das ganze in einem Diorama oder Modul finden, wo man nicht viele Schaltdekoder verbauen will. Oder wenn man auf der MS2 lieber zu einer Lokadresse die Funktionstasten bedient, als zwischen 16 Weichenadressen hin- und herspringt.

Mit den Funktionstasten F0 bis F15 der MS2 werden die Ausgänge der ersten beiden Schieberegister geschaltet. Da dann immer noch Platz war, können mit weiteren Schieberegistern Effekte gesteuert werden - in diesem Beispiel erstmal ein Lauflicht und eine Verkehrsampel (welche im ausgeschalteten Zustand dann gelb blinkt). Weitere bzw. andere Effekte wären auch noch denkbar … Wegen der Beschränkung auf 16 Funktionen habe ich die Effekt-Schieberegister jetzt auch auf F0, F1, usw. gelegt.



Als Ausgangs-Sketch habe ich Dec_17LED_1Ftn von Geoff Bunza aus den Beispielen zur NmraDcc-Library verwendet. Hier noch ein Auszug aus dem Coding, wie die Funktionstastenzustände auf die Bits der Schieberegister umgesetzt werden:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
...
for (int i = 0; i < 2; i++) { // Für jedes Schalt-Schieberegister-Modul ...
for (int j = 0; j < 8; j++) { // Für jeden Ausgang ...
if( function_key[(i*8)+j]) {
shiftValue[i] = switchLEDs (j,true,preValue[i]); // Ausgang-Bit setzen
}
else {
shiftValue[i] = switchLEDs (j,false,preValue[i]); // Ausgangs-Bit löschen
}
shiftoutLEDs(modulZahl); // Unterprogramm zur Ausgabe der Daten an die Schieberegister
}
...

byte switchLEDs (byte ledPos, boolean onOff, byte preValue) {
byte newValue = 0;
if (onOff) {
newValue = bitSet(preValue,ledPos); // LED einschalten, wenn onOff = true
}
else {
newValue = bitClear(preValue,ledPos); // LED ausschalten, wenn onOff = false
}
return newValue;
}
 



Falls ich es irgendwann mal schaffe, das tatsächlich in eine hübsche Anwendung zu packen, werde ich weiter berichten. Fragen sind natürlich erlaubt und werden gerne beantwortet, sofern es nicht nur ein lapidares "stell´ mal den gesamten Sketch hier ein" ist …

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.471
Registriert am: 28.04.2005
Homepage: Link
Gleise C-Gleis, Lenz 0
Spurweite H0, 0
Steuerung MS2 & CS2
Stromart Digital


RE: ATtiny85 DCC-Dekoder 16 Funktionen

#2 von autoview , 24.11.2018 12:39

Hallo Bodo,

wie immer, eine coole Sache - ich bin mit meinen Versuchen vor gut zwei Jahren 'hängen' geblieben, habe alles noch so auf meinem Schreibtisch liegen, ich muss einfach mal wieder anfangen ... eventuell sollten wir doch mal einen neuen Workshop ins Auge fassen für das kommende Frühjahr 2019, und wenn es nur um einen Erfahrungsaustausch bzw. das vorstellen der bis dahin gesammelten Versuchsanordnungen ist. Immerhin habe ich mit den Platinen eine Beleuchtung für einen Bausatz aus unserem Auhagen Seminar eingebaut, das ist schon sehenswert.

Gruß

Norbert


Gruß & Hp1

Norbert

Märklin H0 C-Gleis Anlage mit ESU ECoS 2 / Version 4.0.2, Rückmeldung über LDT HSI-s88-USB, SB Steuerung mit Railware 7.17 unter Windows 10; Spur G Anlage mit Märklin CS-1 / ESU 4.1.2 CSR Update sowie ESU MC-II Handregler mit Version 1.0.15


 
autoview
InterRegio (IR)
Beiträge: 117
Registriert am: 29.04.2007
Homepage: Link
Gleise C-Gleis, LGB Gleis
Spurweite H0, G
Steuerung Central Station 1 mit ESU Update, ECOS 2
Stromart Digital


RE: ATtiny85 DCC-Dekoder 16 Funktionen

#3 von ergunov , 25.11.2018 15:50

Hi Bodo
What shift register do you use and why did you not apply the IC2 bus.
I design wagon decoder. I choose between ATtiny85 but with IC2 bus, since 4 outputs are few, or ATtiny84 with 11 outputs, which is almost enough.


Vyacheslav
H0 ?R?a?i?l?i?o?n? ?&? ?M?R?C?E?
Now Canada & America
CN and CP as well as NS
facebook
youtube


ergunov  
ergunov
RegionalExpress (RE)
Beiträge: 78
Registriert am: 09.10.2016


RE: ATtiny85 DCC-Dekoder 16 Funktionen

#4 von Bodo , 26.11.2018 07:59

Hi Ergunov,

1) I use 74HC595 shift registers together with ULN2803 Transistor Arrays.
2) It´s simple and it works ... no wire-library, no module-adresses - only shiftout() ... .

OK - I2C ist more flexible. I use it together with Arduino, when there are useful components using I2C (like Adafruit Servo Driver or lcd-displays).

Best regards, 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.471
Registriert am: 28.04.2005
Homepage: Link
Gleise C-Gleis, Lenz 0
Spurweite H0, 0
Steuerung MS2 & CS2
Stromart Digital


   


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