mikrocontroller.net

Forum: Projekte & Code DCC Decoder


Autor: maddax (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe mir einen funktionierenden DCC Decoder auf Basis des Tiny 15
gebastelt. Das ganze ist jedoch eingeschlafen, da ich das Layout für
die Platine in SMD nicht so richtig klein gekriegt habe. Auf dem
Prüfstand mit den Tiny 15 in DIL lief das ganze problemlos. Ich hoffe
mein Code hilft für eure Projekte. Den Code für einen Encoder für
Langsamfahrstellen oder Signalhalte werde ich auch noch einstellen.

mfg DXM

Autor: maddax (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier noch der Encoder. Ich hoffe er läuft.

mfg DXM

Autor: leif (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DCC:

National Model Railroad Association's Digital Command Control
Standards and Recommended Practices. DCC is simply the best form of
model railroad control available.

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo DXM

Wie siehts bei der Hardware aus, ich habe vor da noch Lichtfunktion und
weiteres einzubauen...
Die F-Ausgänge ist klar, bei mehr mA Transistoren, aber wie siehts bei
der Ansteuerung des Motors aus, könnte ich diesen gleichsetzen mit z.B.
den Schaltplan von dem Lokdecoder LD-G5 von Tams? (mir geht es dabei um
die Hardware)

Gruß
Patrick

Autor: maddax (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier der einfache Schaltplan für Eagle 4.11.
Der L272D kann 1000 mA, das leicht locker für Spur N.
Für H0 oder größer müsste man nachrechnen.

mfg dxm

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Super, danke!

Also 1000mA reichen auch für H0-Loks, H0-Lokdecoder haben meist auch
nicht mehr mA.
Bei älteren Loks vieleicht problematisch

Gruß
Patrick

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nochmal ich,

welchen Wert haben die Widerstände R1 - R6 (R5 & R6 klar)
Und welche Z-Diode ist eingebaut?
und was soll da zwischen 4 und 6 sitzen (beim Elko)

Danke im Vorraus

Gruß
Patrick

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> welchen Wert haben die Widerstände R1 - R6 (R5 & R6 klar)

R1 berechnet sich aus dem gewünschten Strom über die Z-Diode, der
Z-Spannung (üblicherweise 5V als AVR-Betriebsspannung) und der Höhe der
Digitalspannung.

R2 sollte so bemessen sein, dass sie Eingangs-Schutzdioden des AVRs
nicht überlastet werden. Es liegt schließlich die Digitalspannung an.
R2 wird also recht hochohmig sein.

R3 und R4 bilden einen Spannungsteiler zum Erzeugen der halben
AVR-Spannung als Schaltschwelle für den L272. Da sie die
Betriebsspannung des AVRs belasten, sollten sie recht hochohmig sein.
Grenzen setzt der Eingangswiderstand des (Power-)OPVs.

R5 und R6 ist ja klar, richtet sich nach Spannung zwischen AVR-Ausgang
und Transistorbasis und dem Basisstrom für 5 bis 10-fache Übersteuerung
des Transistors für sauberen Schaltbetrieb. Und natürlich nach der
Belastbarkeit des Ausgangs des AVRs.

Da der Basisstrom die AVR-Betriebsspannung belastet, muss er (als
wechselnde Last) bei der Berechnung von R1 und der Z-Diode
berücksichtigt werden.

Mit etwas Grundwissen solltest du alle Widerstände berechnen bzw.
schätzen können. Wenn nicht, dann solltest du dir vor dem Weitermachen
dieses Grundwissen aneignen. Mit P=U*I und U=R*I, sowie etwas Englisch
zum Lesen der Datenblätter solltest du vorerst zurechtkommen.

> Und welche Z-Diode ist eingebaut?

Da die Z-Diode zum Erzeugen der Betriebsspannung des AVRs dient, sollte
ihr Wert der zulässigen Betriebsspannung entsprechen. Wenn ich mich
recht erinnere, waren das 5V. Eine 5V1 dürfte also brauchbar sein.

> und was soll da zwischen 4 und 6 sitzen (beim Elko)

Das sind Pin 4 und 6 des Power-OPVs (L272), also dessen
Stromversorgungspins. Denn ohne Stromversorgung kann der nunmal
schlecht den Motor treiben.

Diese Fragen hättest du dir auch selbst beantworten können, wenn du die
Schaltung analysiert hättest und dabei die Datenblätter der ICs
herangezogen hättest.

Übrigens würde ich jedem IC noch einen 100nF-Keramik-Chipkondensator
spendieren, möglichst dicht an den Power-Pins.

...

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Hannes!

Danke für deine Antwort,

also mit der Z-Diode, das hatte ich mir mit 5V1 gedacht, da die
Versorgungsspannung des tinys ja meistens 5V beträgt, aber es hätte ja
auch 3V sein (bei tiny15L).
Die Beschaltung mit den beiden Pins 4 und 6 hatte ich mir allerdings
noch nicht angeschaut, da ist das Nachfragen einfacher, die Elektronik
ist mir gut vertraut, mir ist z.B. klar das der Widerstand zum
"DCC-Eingang" sehr hochohmig sein muss, der Controller verkraftet da
nicht unbedingt eine so hohe spannung.
Jedoch wenn ich die exakten Daten haben kann ist es doch umso besser
:-)

Gruß
Patrick

Autor: Bernhard S. (bernhard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Hier der einfache Schaltplan für Eagle 4.11.

Interessantes Projekt, könntest Du uns bitte den Schaltplan als jpg
oder als pdf zur Verfügung stellen, denn leider hat nicht jeder
Eagle 4.11.

Danke

Bernhard

Autor: Klaus Ruebsam (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
>denn leider hat nicht jeder Eagle 4.11.

aber jeder kann es sich kostenlos und ganz legal bei
http://www.cadsoft.de/ in der jeweils aktuellsten Version herunterladen
und damit sogar Platinenlayouts und Schaltpläne bearbeiten! Für die, die
jedoch weder Windoof noch Linux als Betriebssystem verfügbar haben, habe
ich den Schaltpan von maddax als JPEG beigefügt.

Gruss,

Klaus

Autor: Bernhard S. (bernhard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@KLAUS

Danke für die jpg-Datei und für den Link zum Download von eagle

Gruß

Bernhard

Autor: Thomas Riesen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen

Mit Interesse habe ich diese Beiträge gelesen. Ich selber suche
schon länger Code für einen DCC-Decoder (Weichen, Signale) auf
Basis von Bascom-AVR. Hat hier jemand Erfahrung?

Freundliche Grüsse
Thomas Riesen

Autor: Klaus Ruebsam (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
BASCOM-Sourcen für etwas so Timing-Kritisches ? Also wirklich alles, was
ich bislang für DCC gesehen habe (auf Hardwareseite) war mit
Microcontrollern (früher PIC, in letzter Zeit häufiger AVR) realisiert
und in Maschinensprache geschrieben. Mit Ausnahme einer DCC-Zentrale,
die sich der Pins der seriellen Schnittstelle bedient; die war soweit
ich mich richtig erinnere in Visual-C geschrieben.

Schau die mal die Seite http://www.avr-asm-tutorial.net/ an. Assembler
ist wirklich nicht so kompliziert wie man anfangs denkt. Und der Source
von maddax ist wirklich gut kommentiert. Wenn Du Dir zusätzliche die
Docs der NMRA reinziehst (siehe
http://www.dcc.info/standards_rps/index.html) ist es kein Hexenwerk.
Vorteil für Dich: Du hast mit den Sourcen von maddax einen
funktionierenden Code mit dem Du anfangen kannst; die gesamte
Entwicklungsumgebung ist kostenlos (AVRstudio) und das
"Programmiergerät" für die AVRs kannst Du mit Bauteilen aus der
Grabbelkiste zusammenlöten und die AVRs anschließend mit PonyProg
(wieder kostenlos) programmieren.

So, ich hoffe ich habe genug Begeisterung rüberbringen können. Viel
Erfolg!!! Und lass uns an Deinen Ergebnissen teilhaben.

Gruss,

Klaus

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Klaus:

Völlig richtig...

<provokation>
Aber BASCOM vermittelt den Eindruck, dass man das auch realisieren
kann, ohne sich mit der Materie vertraut machen zu müssen. Denn BASIC
ist ja "kinderleicht", das macht man doch mit links und vierzig
Fieber...
</provokation>

Ich programmiere in ASM, das ist einfacher und übersichtlicher als
BASCOM.

...

Autor: pic16x84 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
It is possible to make a 'DCC decoder' with basic (look at the
qoutes).
I was looking for a basicsource for quite a time. Until I decided NOT
to use the real NMRA protocol, but to focus on the function itself:
trying to have a train (h0 in my case)controlled by on onboard micro.
I now use the ATTINY13 (onboard PWM, onboard osc) and try to time the
micro as good as it gets.
In my case, between 14 and 18 cycles (depending on OSC) means a
startBIT
After receving the startBIT, between 6 and 9 cycles means a '1', and
between 10 and 14 means '0'. All other values mean error and start
over. Even in the real NMRA protocol it is advisable to tranmit the
same info for about 5 times in a row. The same with my protocol.
Try to experiment.....

Autor: Klaus Ruebsam (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi pic16x84

I´m not quite understanding what you are trying to say. On one hand you
write that a DCC-Decoder (conformant to NMRA) is possible with BASIC
(which I personally doubt) on the other hand you write that you "focus
on the function itself", what ever that means and "your protocol",
which sounds to me as being NOT DCC (according to NMRA specs). However
perhaps I just didn´t get the point you tried to make. Would you please
clarify?

Kind regards,

Klaus

Autor: pic16x84 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
NMRA is a protocol to "Digitally Command Control" a train. So the
function is NOT the NMRA protocol but (Digitally) Control a Train.
The NMRA protocol has strict 'rules' about timing, bits and bytes.
It is very difficult if not impossible to control a train with the NMRA
protocol in BASIC!

What is the problem if you don't focus on the strict timing of the
NMRA protocol.Use your own protocol ! Think of items like asking for
attention from a train. In my case I transmit a '1' for lets say 10
milliseconds. After that I transmit an address package. In this package
a '1' is only ' 5' milliseconds instead of 10. a '0' is about 2
milliseconds.
My decoder detects the upflank, waits till the downflank and sees if
its 10, 5 or 2 milliseconds. When it has nothing to do (the PWM does
its job independantly) it waits untill a new 10 milliseconds
startpulse. After the startpulse it reads 16 bits. 8 for the adress and
8 for the function (speed and lights). It decodes the 2-bytes, refreshes
the PWM (if the address byte equals the trainnumber) and...waits for the
10 millisecond startbit.

Yes, if I miss a pulse, the train ERRORS.. So what, I transmit the same
info about 5 times in a row. So I can transmit less packages than the
NMRA protocol. So what, I don't have 256 trains to control at
once....

Think what you want (function: control a train) and think HOW you want
to do it (protocol). If you persist using the NMRA protocol...think of
ASM and NOT BASIC.


Hope this helps.

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Wenns jetzt darum geht mehr Ausgänge zu haben muss man ja auf einen
anderen Atmel umspringen, ich dachte da an den ATtiny2313, da beide aus
der Tiny-Reihe sind hoffe ich das das anpassen nicht allzu schwer ist,
kann mir einer von euch sagen, wenn er sich den Code mal so durchschaut
ob es da Stellen gibt die bei dem tiny2313 eine andere Bezeichung haben
bzw. angepasst werden muss?
Und wie siehts um den internen Takt aus?

Danke
Patrick

Autor: Klaus Ruebsam (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Patrick,

ohne mir den Code jetzt im Detail angeschaut zu haben fallen mir da
folgende Punkte ein:

Sprungvektoren: Tiny 15 hat 9 Vektoren der Tiny2313 hat 19 !!! Hier
solltest DU in jedem Fall DummyVektoren eintragen. Ja, wer sauber
programmiert brauch die nicht, aber sicher ist sicher, tut ja keinem
weh.

Watchdog: hat der tiny15 nicht

Takt: Hier musst Du sicherlich Hand anlegen. Ist aber kein Hexenwerk.

Ansonsten fallen mir auf Anhieb keine weiteren Punkte ein. Daß die
beiden Tinys nicht Pin-kompatibel sind muss ich wohl nicht erwähnen
:-)

Viel Erfolg und veröffentlich doch die geänderten Sourcen ruhig hier im
Forum sodaß wir alle was davon haben. Dank im voraus.

Gruß

Klaus

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, naja ob der Tiny15 Watchdog hat oder nicht ist ja egal ;-)
Brauch ich ja dann ebenfalls nicht wenn ich auf tiny2313 wechsle...
Mit den Vektoren muss ich mir mal anschauen.

gruß
Patrick

Autor: Georg Dankesreiter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Patrik,

möchte meine Eigenentwicklung im Fahrbereich auch auf DCC umstellen.Da
meine Selbstbaudecoder mit dem AT90S2313 aufgebaut sind und mit dem
eingebauten UART arbeiten, wäre Hardwaremässig ein Umbau möglich.

Mein Hauptproblem ist der Takt, da der At90s2313 mit 8 Mhz getaktet
wird und ich maddax seinen Code nicht so hinbekomme das er mit 8 Mhz
die Empfangszeiten einhält.

Da ich mit RVK Basic arbeite und mich mit Assembler nicht auskenne
hätte es mich interessiert ob dein Vorhaben gelang.


Mit freundlichen Grüssen

Georg

Autor: Mario Mai (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

hat auch jemand einen Schaltplan für einen DCC-Decoder mit
Lastregelung?

Gruß
Mario

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe ich glaube mal auf der Webseite von TAMS gesehen.

...

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe mich bis jetzt noch nicht drum gekümmert, zu viele andere
Sachen sind noch zu tun, aber in absehbarer Zeit will ich mich da dann
auch mal ran setzen und probieren, im  Keller liegt auch noch ein neuer
Brenner der noch fertig gelötet werden muss...

Gruß
Patrick

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Klaus

"Sprungvektoren: Tiny 15 hat 9 Vektoren der Tiny2313 hat 19 !!! Hier
solltest DU in jedem Fall DummyVektoren eintragen. Ja, wer sauber
programmiert brauch die nicht, aber sicher ist sicher, tut ja keinem
weh."

Ganz im Gegenteil !

Wenn man dort RETIs einträgt, verschleiert man Programmierfehler nur
und sucht dann tagelang an der falschen Stelle.
Auch ein Sprung zu 0x0000 verwirrt mehr, als das er hilft.

Wenn man schon an nicht benutzten Interrupts was einträgt, dann einen
Sprung zu einer Routine, die den Fehler deutlich signalisiert, z.B.
eine LED blinken läßt.

Alles andere ist witzlos.


Peter

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh, da oben sollte eigendlich nur einmal meine Antwort stehen, warum da
3mal das gleich steht, fragt nicht mich, ist nicht beabsichtigt, bitte
2 löschen...

Gruß
Patrick

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ist nicht beabsichtigt...

Schuldhaft verursachte Verkehrsunfälle sind auch nicht beabsichtigt.

> bitte 2 löschen...

Wer sollte das tun??
Die derzeit zwei aktiven Moderatoren haben genug Anderes und
Wichtigeres zu tun. Du wirst wohl damit leben müssen, dass jeder Leser
sieht, dass du gleich dreimal geantwortet hast...

;-)

...

Autor: Thomas Riesen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ihr habt ja allo so tolle Ideen. Hat aber nun einer von euch einen
lauffähigen Code für den AVR2313 (Bascom oder Assembler)? Zur Zeit
möchte ich wirklich nur einfach Schaltbefehle decodieren..

Autor: Holger Seider (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Funktioniert dieser DCC Decoder Code wirklich.
Funktionen F1 F2 gehen, aber die PWM spinnt.
Habt Ihr auch die Erfahrung gemacht.

Autor: Thomas Riesen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welchen Code hast du denn nun implementiert?
Einen Bascom-Code? Wenn ja, welchen, und wie
würde ich da rankommen?

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Einen Bascom-Code?

Solch zeitkritische Dinge (DCC-Decoder) lassen sich eigentlich nur
vernünftig mit Interrupt-Programmierung realisieren. Da BASCOM wohl bei
jedem Interrupt alle Register sichert und wiederherstellt, wird das
einfach zu langsam. Mit BASCOM wirst du also keinen vernünftig
arbeitenden DCC-Decoder realisieren können, es sei denn, der
BASCOM-Hersteller löst das in ASM und bietet das als weiteren Baustein
(Bibliothek) für den "Baukasten" BASCOM an.

Ich würde ja versuchen, ein ASM-Programm dafür zu schreiben, aber mir
fehlt das Equipment. Ich habe seit Jahrzehnten keine Modellbahn mehr
und daher auch keine DCC-Zentrale. Und ich glaube kaum, dass du mir
eine DCC-Zentrale sponsern willt, damit ich Programme für einige
verschiedene Decoder schreiben kann/soll. - Oder?

...

Autor: maddax (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,
welche Probleme macht denn der PWM. Wenn die Schaltfunktionen
funktionieren kann nicht mehr viel sein. Beim Test mit dem DDW-Server
ist mir aufgefallen daß er bei Full-Speed auf einmal Zero sendet. Ist
wohl ein Überlauf im DDW-Server selber. Da ich aber selber keinen
C-Compiler zum Korrigieren habe, habe ich mich darum nicht gekümmert.
Stelle doch mal die Belegung deiner EEProm-Variablen ein. Vieleicht ist
nur ein Parameter oder die Oszillatorkalibrierung krumm. mfg dxm

Autor: Holger Seider (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Die EEPROM - Variablen sind ok.
Die PWM "schwingt". Das hört sich blöd an, ist aber so.
Ich habe mit dem Oszi nachgemessen.
Sie geht erst auf den eingestellten Wert (mit den eingestellten
Verzögerungszeiten)und dann "rapide" wieder auf WERT NULL.
Danach geht das ganze wieder von Vorne los.

Autor: maddax (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich finde nichts. Der PWM wird nur durch den Interupt gesteuert:

TIM1_OVF: ;Beschleunigungs/Verzögerungszähler
    ;bei Timer 1 = 1,6 MHz wird der
    ;Interupt wid demnach alle 6250 Hz ausgelöst
    ;die kürzeste Rampen-Zeit ist 0,12 Sec für den Sprung von  0 auf 252
bei IncVAL = 0
    ;die längste Rampen-Zeit ist 31,3 sec  für den Sprung von 0 auf 252
bei IncVAL = 255


    ldi TEMPI, 3    ; Verzögerungsfaktor
    inc IncCNT1    ; erhöhe Zähler
    cp IncCNT1, TEMPI
    brne OVF1
    clr IncCNT1    ; lösche Beschleunigungszähler
    inc IncCNT

          cp ISTSpeed, SOLLSpeed; vergleiche IST <> SOLL
    breq Gleich    ; wenn Wert nicht gleich
    brsh DECSpeed    ; wenn Wert größer gleich
    brlo INCSpeed    ; wenn Wert kleiner

Gleich:    clr IncCNT    ; lösche Beschleunigungszähler
    clr IncCNT1    ; lösche Beschleunigungszähler
    reti                  ; Rücksprung und Interupts wieder einschalten

INCSpeed: cp IncCNT, IncVAL  ; vergleiche Beschleunigungszähler
    brne OVF1    ; Springe wenn kleiner
    clr IncCNT    ; lösche Beschleunigungszähler
    clr IncCNT1    ; lösche Beschleunigungszähler
    inc ISTSpeed    ; erhöhe Speed
    rjmp PWMOut     ; weiter

DECSpeed: cp IncCNT, DECVAL  ; vergleiche Beschleunigungszähler
    brne OVF1    ; Springe wenn kleiner
    clr IncCNT    ; lösche Beschleunigungszähler
    clr IncCNT1    ; lösche Beschleunigungszähler
    dec ISTSpeed    ; verringere Speed

PWMOut:   tst  ISTSpeed    ; ist Speed 0
    brne OUT    ; dann 0 ansonsten Out
    ldi  TEMPI,0b01000101  ; Timer/Counter1 PWM vom
          out  TCCR1,TEMPI  ; Ausgang trennen
          cbi  PortB, PB0  ; alles auf Null
          reti                  ; Rücksprung und Interupts wieder
einschalten

OUT:    sbrs DCCReg, DIR  ; wenn Fahrtrichtung vorwärts
    rjmp REV    ; überspringe setzen Ausgang rückwärts

    cbi  PORTB, PB0  ; setze Ausgang für vorwärts
    out  OCR1A, ISTSpeed  ; Wert für Speed nach Timer 1 Compare
    ldi  TEMPI,0b01100101  ; Timer/Counter1 PWM
    out  TCCR1,TEMPI  ; Ausgang direkt
    reti                  ; Rücksprung und Interupts wieder einschalten

REV:    sbi  PORTB, PB0  ; setze Ausgang für rückwärts
    out  OCR1A, ISTSpeed  ; Wert für Speed nach Timer 1 Compare
    ldi  TEMPI,0b01110101  ; Timer/Counter1 PWM
    out  TCCR1,TEMPI  ; Ausgang indirekt

OVF1:    reti                  ; Rücksprung und Interupts wieder
einschalten

Vieleicht ist der Stützkondensator C2 zu klein gewählt und der Tiny15
geht in Reset. Dann ist für 20ms im Programmiermodus tote Hose an den
Ausgängen. Danach läuft er wieder im DCC Modus hoch.
mfg dxm

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum sicherst du eigentlich in tim1_ovf das SREG nicht?

In den anderen ISRs machst du es doch. Bei der umfangreichen Mainloop
ist das auch unbedingt erforderlich.

Ob da noch weitere Fehller sind, weiß ich nicht, so tief bin ich jetzt
auf die Schnelle nicht vorgedrungen.

...

Autor: franz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
habe die Schaltung aufgebaut und mit AVR-Studio 4.12 Build 460
uebersetzt. Getestet mit Roco Lokmaus 2 und Booster,
CV-Programmierung ok., Adresse laesst sich aendern.
F1 und F2 ok, Motor ruckt auch beim Programmieren.
Fahren --- ohne Funktion ---
(Die 5V macht ein Regler 78L05, Stuetzkondensatoren genug vorhanden.)
mfg franz eff

Autor: maddax (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

ich habe gestern noch mal den Prüfstand hervorgekramt und einen Fehler
im Mehrzugbetrieb gefunden. Tauscht doch mal die paar Zeilen aus:

SpeedCalc:;Speed Berechnung 14 und 28 Fahrstufen

    mov TEMP2, ByteB  ; Daten sichern
    tst ISTSpeed    ; schreibe Richtung nur
    brne Speed28    ; wenn Speed 0

Das Register für die Fahrstufen wird sonst falsch gesichert.
Wenns funzt bitte melden, vielleicht mach ich dann doch noch mit mehr
Funktionen und anderen Controllern weiter.

mfg dxm

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auf jeden Fall wäre Interesse an mehr Ausgängen (F0, Licht, F3, F4...)
sowie an anderen Atmels (ATtiny2313...) meinerseits da.
Das umbauen des Codes auf den 2313er, was ich ja machen wollte, habe
ich bis jetzt noch nicht in Angriff genommen, mir fehlt die Zeit
momentan...

Gruß
Patrick

Autor: maddax (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

hier  habich noch mal eine Version die ganz gut aussieht. Das SREG wird
jetzt auch gesichert. Der Betrieb mit kurzer oder langer Adresse läuft
jetzt über CV29. Die Hersteller CVs 7 und 8 sind schreibgeschützt.
Dafür habe ich jetzt keinen Platz mehr für Consistbetrieb, braucht bei
den neuen Steuergeräten eh keiner mehr.
Die Fahrtrichtungsumkehr ist nun nur mehr bei komplettem Stillstand
möglich. Feedback von Euch würde mich freuen. Weiß jemand einen Weg
einen Tiny15 zu programmieren ohne ihn einzulöten ?
mfg dxm

Autor: franz eff (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
habe heute die neue Version kompiliert. Es gibt immer noch den
Error weil "Out" in Zeile 262 kein Label sein darf.
Das war wieder schnell geaendert. Die Default-Adresse im eep
setze ich uebrigens nach NMRA immer auf 3. Nach dem Flashen
habe ich den Tiny schnell fliegend in meine vorbereitete Lok
eingesetzt. Anbei mal ein Bild: BTTB BR81 Baujahr 1979.
Alle Teile fliegend am Rahmen, der Tiny sitzt spaeter dann
mal vorne auf dem Motor.
Lok aufs Gleis, Lokmaus eingestoepselt und Lok ruckte kurz.
Die an angeschlosse LED reagierte bei F-Tasten nicht. Durch
Rechtsdrehen am Regler fing die LED plötzlich an heller zu werden.
Beim Linksdrehen ging sie dann langsam wieder aus und beim
Ueberschreiten von Null leuchtete sie ploetzlich hell. Motor ohne
Funktion. Dann habe ich an der Lokmaus 14 Fahrstufen eingestellt. Jetzt
fuhr die Lok plötzlich los, liess sich aber nicht regeln. Dafuer
funktioniert jetzt Funktion tadellos, ich kann Licht ein und
ausschalten. Zum Schluss habe ich versucht die Lokadresse zu
programmieren, es ging nicht, uebrigens das ging mit der
Vorgaengerversion noch. Habe den alten EEPROM-Inhalt noch gesichert.
Bei Conrad im Business-Bereich gibt es uebrigens Adapter wo die SO-IC
eingespannt werden, leider nicht ganz billig...

Autor: remo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mal ne ganz doofe Frage:
DCC und das Motorola/Märklin Protokoll sind nicht zufällig kompatibel?

Hat jemenad einen Signal/Weichendekoder auf Atmel Basis für das
Motorola /Märklin Protokoll, um ein bischen Code zu spicken, möchte
nicht gerne das Rad neu erfinden.

Danke Remo

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sind nicht kompatibel. Märklin Infos (zumindest brauchbare Links)
findest du vermutlich bei Herrn König (mal suchen).

...

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe den Code ebenfalls kompiliert, das Out zu Outx geschrieben
damit es geht und da gerade Zeit da war mal den Code an den tiny2313
angepasst jedoch fehlt mir jetzt noch das anpassen der Zeiten (87µs
usw...) da mein tiny2313 mit 4Mhz laufen möchte...
Die Testschaltung ist schon aufgebaut.

Gruß
Patrick

Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Unter http://www.opendcc.de haben ich einen Zubehördecoder für DCC inkl.
Source veröffentlicht. ATtiny2313, geschrieben in C (mit dem gcc
(winavr)).

Gruß Wolfgang

Autor: Patrick (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Moin Moin,
So ich habe nun auch mal, neben den Anpassen auf den tiny2313 (welchen
ich warscheinlich doch nicht nehme), den Code auf einen tiny15 gebrannt
und meine Roco-Lokmaus raus geholt und aufgebaut, nach ein ganz klein
wenig Zeitanpassung beim Timer laufen auf jeden Fall schon mal die
Funktionstasten F1 & 2 problemlos.
Den OP habe ich noch nicht angeschlossen, da alles in DIL aufgebaut ist
und ich keine Lust hatte den OP in SMD da dran zu löten...
Anbei ein Bild, da sieht man noch die Testschaltung mit dem eigendlich
eingesetzen tiny2313, um den tiny15 zu testen habe ich mal schnell
einen Sockel im Sockel im Sockel gebaut ;-).
Die Tage werde ich mal die Ansteuerung des Motors anschauen...

Gruß
Patrick

Autor: manu (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
In maddaxs DCC Encoder steckten noch ein paar Fehler drin (u.a. Timer0
nur einmal initialisiert, Timing falsch). Ich habe mir die Freiheit
genommen diese zu korrigieren. Getestet wurde der Code mit Hilfe eines
Oszilloskops und einem DCC Protokoll-Dekoder und scheint soweit zu
funktionieren.

Have fun,
 manu

Autor: Frysk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Manu,

Ich bin neugierig geworden. Hast du vielleicht einen schaltplan für die
encoder?

Frysk

Autor: manu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...also einen Schaltplan gibt es dazu eigentlich nicht, bzw. steht alles
in der ASM-Datei drin. An Pin5 (PB0) kommt ein geeigneter Booster hin.
Diese lassen sich einfach selber bauen (Halbbrücke/Vollbrücke) -
Anleitungen/Anregungen findet man z.B. bei www.opendcc.de (links unter
Booster) oder in den Anleitungen von Tams Elektronik.

manu

Tiny15 Anschlussbelegung:
;RESET        PB5 = 1  8 = VCC
;        PB4 = 2  7 = PB2
;             PB3 = 3  6 = PB1
;             GND = 4  5 = PB0 DCC Ausgang

Autor: Frysk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Manu,

Danke, es ist Mir klar. Ich habe zu hause einen Lenz Booster.
Kan ich den encoder auch direkt ansliesen an diesen Booster?

Frysk

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ist hier ja ein klasse Forum.
Als typischer Nachbauer von DCC Decoder auf Atmelbasis verfolge ich mit
interresse diese Thread hier.
Bin seit längerem auf der Suche nach einem reinem Funktionsdecoder so
mit 8-12 Ausgängen, die man  über F1-F12 Ein- und Auschalten kann und
bei dem man die Ausgänge beliebig dimmen kann. Wenn dann noch eine
Blinkfunktion intergriert wäre, wäre es natürlich megaklasse.
Hat jemand sich mal an so etwas rangemacht?
Gruß aus Hamburg

Thorsten

Autor: Zdenek (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hello DXM,

i was surprised by your simple, attiny15 based DCC loco decoder. 
Yesterday i tried to program tiny15 by PonyProg and make wiring with 
L2722 and my old BTTB loco. The first test was unsuccessfull - reset pin 
of ATTINY on your scheme is "in the air", also PWM outputs to power 
amplifier doesn't work with pull-ups turned off in your source. After 
changing this line

ldi  TEMP1,0b01000011  ;Interupt auf Rise-Flanke, Pull-Up Disabble

to

ldi  TEMP1,0b00000011  ;Interupt auf Rise-Flanke, Pull-Up Enable

was all OK, but PWM frequency for motor in my old BTTB loco was too 
high. Please, which lines i must change to reduce PWM frequency to 
~100Hz ?
Please, can yuo also tell me, in which state (working, development, not 
working, working with problems...) is source code on 
Beitrag "DCC Decoder" ? Have you newer one for 
testing? Thank you for your answer and perfect work on decoder

best regards

Zdenek

Autor: maddax (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hello Zdenek,

try this for your decoder for run parameter:

           ldi  TEMP1,0b01001011  ; 0 0 0 0 Timer/Counter1 is stopped.
           out  TCCR1,TEMP 1  ; 0 0 0 1 CK*16 (=PCK)
                         ; 0 0 1 0 CK*8 (=PCK/2)
        ; 0 0 1 1 CK*4 (=PCK/4)
        ; 0 1 0 0 CK*2 (=PCK/8)
        ; 0 1 0 1 CK für PWM mit 6125 Hz
        ; 0 1 1 0 CK/2
        ; 0 1 1 1 CK/4
        ; 1 0 0 0 CK/8
        ; 1 0 0 1 CK/16
        ; 1 0 1 0 CK/32
        ; 1 0 1 1 CK/64 für PWM mit 97,6 Hz
        ; 1 1 0 0 CK/128
        ; 1 1 0 1 CK/256
        ; 1 1 1 0 CK/512
        ; 1 1 1 1 CK/1024
Caution at TIM1_OVF:

delete!!   in  TEMPS,SREG           ; SREG sichern
    ldi TEMPI, 3    ; Verzögerungsfaktor
    inc IncCNT1    ; erhöhe Zähler
    cp IncCNT1, TEMPI
    brne OVF1
    clr IncCNT1    ; lösche Beschleunigungszähler
    inc IncCNT

because the ramp for speed inc and dec will get to slow.

good luck
dxm

Autor: yjn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe mit der Schaltung folgendes Problem.

In Richtung 'rückwärts' funktioniert der angeschlossene Motor ganz 
wunderbar, in Richtung 'vorwärts' nicht, bzw. nur bei Vollgas.

Die PWM-Signale aus dem Tiny and den OV sehen für beide Richtungen 
gleich aus.

Bei 'vorwärts' 'fehlen' am Ausgang des OV jedoch 2 von 3 Pulsen.

ungefähr so

  +--+  +--+  +--+  +--+
 I  I__I  I__I  I__I  I        rückwärts OK


  +--+              +--+
 I  I______________I  I        vorwärts, nix passiert

Hat jemand eine Idee, woran das liegen kann ?

Danke

Autor: Zdenek (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hello YJN,

if you use higher PWM frequency for older motor driven by L272, 
typically PWM>200 Hz, you can get this results: in one direction goes 
motor OK, but in the reverse direction has motor very low torque. This i 
have tested with many other DIY decoders. You can solve this problem by 
decreasing PWM freq about to 100 Hz.

Zdenek

P.S.: Thanks to DXM for updated code, i'll try it today

Autor: yjn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hello Zdenek,

many thanks for your reply, reducing the PWM frequency get's it all to 
work !

Could you or anybody else in this forum please explain the 
'electr(on)ically' background for this behaviour to me ?

I have searched the whole internet to find informations about this, but 
i could not find anything explaining this ...

thx

yjn

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

@Maddax
Wie hast du den OSCCAL-Wert raus gekriegt, durch messen oder versuchen?

Hast du zufällig auch einen (Cirka)Wert für 4Mhz?

Gruß
Patrick

Autor: maddx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wer lesen kann hats leichter, siehe Datenblatt.
OSCCAL steht beim Tiny 15 im Auslieferungszustand auf Adresse 0 im 
EEprom.
Einfach auslesen ;)

mfg dxm

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> Hast du zufällig auch einen (Cirka)Wert für 4Mhz?

> OSCCAL steht beim Tiny 15 im Auslieferungszustand auf Adresse 0 im
> EEprom.

Muss ich das jetzt verstehen?
Der Tiny15 wird doch auf 1,6 MHz calibriert und nicht auf 4 MHz.

Desweiteren hat jedes Exemplar der calibrierbaren AVRs seine eigenen 
Calibrationsbytes (unverlierbar) im Signature-Space gespeichert. Die 
muss man halt mittels ISP-Programm auslesen und ins AVR-Programm 
übertragen. Ich nutze dazu immer das L-Byte der letzten Flash-Zelle, da 
schreibt ATMEL nämlich auch das Calibrationsbyte hin.

Im Übrigen empfehle ich mal die Appnotes, da ist eine dabei, die sich 
mit der Calibration des internen RC-Oszillators befasst.

...

Autor: Willi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ersteinmal allen ein gesundes und erfolgreiches 2007!
im anhang mal meine version von maddax T15 code. er ist auf meine 
ansprüche verkürzt und erweitert. der t15 hat nunmal nur 1k 
progspeicher. weggelassen habe ich lange add., consist, 128 fahrstufen, 
genaue Vmax begrenzung und F3 Rangiergang. dazugekommen sind Vmax 
begrenzung in 12,5% schritten von 50% bis 100% das reicht in der praxis 
vollkommen aus, fahrtrichtungsabhängige beleuchtung pwm gedimmt, motor 
pwmfreq. veränderbar, merken der letzten geschwindigkeit im eeprom 
(damit riskiert man auf dauer die zellen, hilft aber ungemein bei 
schlechtem schienenkontakt).
die platine ist einseitig 16x40 mm, kann man gut nachbauen, wem sie zu 
groß ist der kann sie in der mitte durchbrechen und umklappen. ist 
einfacher als zweiseitig mit dukos.

gruß willi

Autor: Sebastian Voitzsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

nach sowas habe ich schon lange gesucht. Vor allem, weil der Decoder so 
klein aufzubauen ist.

Mit dem DCC-Format kenne ich mich nicht wirklich aus, daher: kann jemand 
evtl. die Software für einen Funktionsdecoder umstricken?  Ein paar 
reine Schaltausgänge würden genügen...

Danke & Gruße,
Sebastian

Autor: Willi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Sebastian,

schau Dir mal das asm vom meinem T15 DCC Dek an, da ist alles für einen 
Funktionsdecoder schon bei, ist beim T15 nur rauskommentiert. Es sind 
halt keine Ports mehr frei, ich benutze das Grundgerüst aber auch für 
einen s1200 bzw s2313 mit 8mhz Keramikschwinnger oder jetzt auch mit 
einem T2313 und dann reicht das auch für die Funktionsausgänge. Ich 
hänge Dir mal mein File für einen s2313 an. Das habe ich für einen 
Triebwagen geschrieben, bei F1 wird vorm anfahren ein klingeldreiton 
abgespielt und für diese zeit auch ein pin für klingelleuchte gesetzt, 
F2 F3 F4 schalten einfach nur portpins. Ansonsten ist der 
Funktionsumfang genauso wie beim T15 dek.

Viele Grüße
Willi

Autor: Sebastian Voitzsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Willi,

danke für die Antwort - ich hatte den Code in der Tat nur grob 
überflogen schäm

Ich werde das mal ausprobieren - außerdem möchte ich´s noch auf den 
Tiny13 portieren. Soweit ich gesehen habe, ist der fehlende zweite Timer 
der einzige größere Unterschied. Ohne Motor-PWM sollte man aber gut ohne 
auskommen.

Nochmals Danke & Grüße,
Sebastian

Autor: Willi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Sebastian,

das sollte kein Problem sein, Du mußt es nur auf die 4,8 bzw 9,6MHz beim 
T13 anpassen, der T15 läuft nur mit 1,6 MHz. Ich habe auch eine Version 
für einen s1200, der hat auch nur einen Timer, da mache ich die 
Motor-PWM genauso wie die für Licht. Das ist halt nicht so genau, macht 
sich aber in der Praxis überhaupt nicht bemerbar.
Meine Files von oben haben übrigens noch einen Fehler. Ich habe 
vergessen das Reverse bit beim Lichtsetzen mit zu beachten( 
Motorrichtung wir gedreht, Lichtausgänge bleibenaber in der alten 
Richtung), muß ich noch änderen.

Gruß Willi

Autor: Willi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nocheinmal kurz, Licht bei rev_betrieb ist doch i.o.
gruß willi

Autor: Sebastian Voitzsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Willi,

ich habe den Code jetzt auf AVR-GCC und den Tiny13 portiert. Als Takt 
habe ich 9,6MHz mit Divisor 8 genommen, also 1,2 MHz. Die Konstanten 
habe ich entsprechend angepaßt - funktioniert einwandfrei. Den 
Programmiermodus konnte ich noch nicht testen - habe nur eine Roco 
Lokmaus 1 zum Test (die IntelliBox braucht mein Vater selbst ;-)), aber 
ich sehe da keine Probleme (lediglich beim ACK, aber das ist wohl nicht 
unbedingt nötig, hab´s erstmal auskommentiert). Für eine Licht-PWM 
könnte man evtl. auf 4,8 MHz umsteigen, dann sollte die Genauigkeit 
etwas größer sein. Aber für Licht ist es allemal ausreichend.

Die Platine ist 17x31mm "groß", für die Ausgangstreiber habe ich 
Transistorstufen vorgesehen. 500mA (BC817) sollten für Funktionsausgänge 
reichen (mein Vater will seine Wagen damit beleuchten, die vorgesehene 
LED-Beleuchtung braucht 20mA)

Schaltplan ist der weiter oben gepostete, allerdings habe ich der 
Z-Dioden-Regulierung einen Transistor verpaßt, dann wird der Widerstand 
nicht so belastet - 0,5W sind für SMD ein bißchen fett.

Noch ein Tipp für Deinen Code: das Einlesen der Bytes könnte man wohl 
etwas eleganter per Subroutine lösen - 6x derselbe Codeblock ist nicht 
so effizient. Außerdem solltest Du bei den Portpins und Timing-Werten 
mit Konstanten arbeiten, das erleichtert ggfls. das Portieren auf andere 
Controller (Konstanten in .h-Datei ändern und fertig).

Bei der Hardware halte ich einen 7805 für Overkill, nimmt viel Platz und 
so gut geregelt braucht man´s nicht.

Hat jemand der Beteiligten etwas dagegen, wenn ich den modifizierten 
Schaltplan/Code auf meiner Webseite (www.voitzsch.net) veröffentliche? 
Selbstredend ohne kommerziellen Hintergrund und mit Quellenangabe - 
alles was dort liegt, ist GPL.

Autor: Willi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Sebastian,

-Licht PWM ist absolut unkritisch, ich habe mir der software schon mal 
eine LED bei 1% zum Test! ohne Vorwiderstand betrieben. Die lebt immer 
noch.
-als Treiber verwende ich MOS SN7002 (ist auch im SOT-23)(ich habe die 
Teile halt), das geht dann direkt ohne Vorwiderstand, die machen ca 
200mA Dauerstrom und 700mA Impulsstrom mit, das reicht aus. Wenn ich 
alle Ausgänge benötige nehme ich auch schon mal einen ULN2803 als SMD. 
Der braucht auch wenig Platz.
-der 7805 ist übrigens ein SMD und braucht mit Sicherheit weniger Platz 
als eine z-Diode, ein Widerstand und ein BC !
Ich hatte auch Probleme mit der Abwärme bzw Leistung des Widerstand, 
wobei das noch aus meiner 1. Version mit einem S1200 und ext BrownOut 
stammt, hat sich aber bewährt, kostet 50 Cent und läßt sich einfach und 
Betriebssicher aufbauen.
-mit dem Code hast Du recht, das geht effizienter, aber das stammt von 
maddax das habe ich auch nur übernommen. Der Code ist übrigens für einen 
Tiny15 (bzw bei mir auch noch auf alten 90S1200) ohne SRAM ausgelegt. 
Das bedeutet bei Vorsicht mit verschachtelten Sprüngen und kein 
Push/Pop.
-für meine Codeanteile gilt GPL mit Quellenangabe ist ok

Gruß Willi

Autor: Sebastian Voitzsch (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Willi,

- die MOS SN7002 sind nett - leider bei Segor nur Bestellware; ebenso 
der 7805 im SOT-23. Woher beziehst Du sie? Das ist der Vorteil der 
Transistor-Variante - alles "Stangenware". Der 78L05 scheint mir zudem 
mit 1,80 (Segor) reichlich teuer. Z-Diode, Widerstand und BC bekommt man 
schon hingequetscht ;-)

- Für die Ausgänge müßte man auch Schieberegister vorsehen können - aber 
es gibt wohl keine mit Schaltausgang. Mir langen die 4 Ausgänge aber 
vollkommen - wie gesagt, Wagenbeleuchtung. Da bräuchte es eigentlich nur 
1 Ausgang...

- Den fehlenden SRAM hatte ich nicht bedacht - hatte mich schon darüber 
gewundert, wieso im Code der Stackpointer nicht initialisiert wird 
(dachte, das geschieht wie beim AVR-GCC automatisch)

Habe mal meinen Schaltplan/Platine/Code angehängt, vielleicht nützt es 
wem. Das funktioniert so übrigens nur mit dem 13er, der externe IRQ 
hängt auf Pin PB1 und nicht PB2.

Grüße,
Sebastian

Autor: Sebastian Voitzsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo nochmal,

habe gerade entdeckt, daß es den BSS138 als Lagertyp gibt - mit 0,2A 
kann man schon was anfangen. Außerdem kann man besser zwei Ausgänge 
parallel schalten, wenn´s mal etwas mehr Leistung sein soll. Mal sehen, 
was ich noch so finde...

Grüße,
Sebastian

Autor: Willi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Sebastian,

ich hab die 78L05F (SOT89) von Segor 41 Cent(bei 10er Staffel) mos im 
sot23 gibt es da auch, die hatten mal  welche von Zetex (sind nicht mehr 
im Katalog) die machten 1A!! mit.

gruß willi

Autor: Sebastian Voitzsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Willi,

ich muß wohl mal meine Brille putzen - den 78L05F habe ich nach langer 
Suche auch gefunden. Allerdings ist das Preis-Leistungs-Verhältnis der 
Diodenlösung einiges günstiger - und so knapp ist der Platz nicht.

Für die Ausgänge hatte ich kurz IRF7313 ins Auge gefaßt und mal ins 
Layout eingebaut - aber auch aus Preisgründen schnell wieder verworfen. 
Ich möchte die angepeilten 25 Decoder möglichst günstig realisieren - da 
ist die Transistorlösung ungeschlagen.

Schönen Abend,
Sebastian

Autor: Willi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Sebastian,

ich steh nun mal auf die sicheren sachen und bei 25 Decodern macht das 
höstens 5 euro unterschied. R+Z-Diode+BC kostet auch 25-30 cent und Du 
nußt die Ströme recht genau ausrechnen sonst kocht dir die diode oder 
der Vorwiderstand. Vorteil der z-dioden lösung ist aber auf jedenfall, 
das Du für den elko einen 6V Typ nehmen kannst, das spart richtig 
baugröße!
Ich brauche den aber schon wegen dem TLE (meinem motortreiber) direkt am 
gleichrichter und deswegen ist das für mich kein nachteil.

schönen Abend
willi

Autor: Willi (Gast)
Datum:
Angehängte Dateien:
  • dcc.zip (354 KB, 31348 Downloads)

Bewertung
0 lesenswert
nicht lesenswert
Hallo Sebastian,

so hab ich mir das auch vorgestellt, nützliche Infos ohne viel blabla. 
Mal sehen ob diesen Winter noch ein wenig Zeit übrig bleibt, dann werde 
ich auch mal ein paar Seiten machen.
Ich hab mal ein paar Bilder meiner bisherigen DCC Projekte angehangen 
(mit Codesammlung hat das hier dann nicht mehr viel zu tun), da fehlt 
eigentlich nur noch meine Zentrale, die aber in Anbetracht des 
Preisverfalls einer Roco weichen mußte.
Der Weichendekoder entstand schon 1999 und läuft mit einen 8515 oder 
4414 (geht auch mit mega8515) der fehlt auf dem Bild. Damals waren die 
Avr's noch recht teuer, da hab ich halt für jedes Modul ein 8 fach 
Dekoder gebaut, heute würde ich das nicht mehr so machen und jeder 
Weiche einen eigenen verpassen. Die ursprüngliche Software verwaltet je 
Dekoder zwei vierer Addressblöcke also zb für 8 Weichen und dazu auch 8 
Signale. Wobei bei eine Signalausgang fehlt, der Pin wird für das DCC 
Signal gebraucht. Zur Zeit überarbeite ich gerade die Software, ich will 
die Addressen nicht auf zwei vierer Blöcke festlegen, sondern jeder 
Weiche eine bliebige Addresse zuordnen können, desweiteren will ich 
einen Addressbereich (zB Weiche 1-10) als Fahrstraßen nutzen. Das 
bedeutet ein Weichenausgang hat eine Einzeladdresse und gehört womöglich 
auch zu ein oder div. Fahrstraßen dazu. Das heißt man kann dann auch 
über Zentralen bzw Weichkeypads, die das nicht unterstützen, gleich 
mehrere Weichen als Fahrstarße schalten. Analog dazu sollen auch die 
Signalausgänge von verschiedenen Weichen abhängig sein.
Dann ist da noch mein Universal Zubehör Dekoder, der müßte so ungefähr 
das können, was Du gerade baust. Die Platine ist so aufgebaut, das man 
die rechte Seite auch einfach abschneiden kann. Von links->rechts: 
Gleichrichter und Stabi, Atmel , ULN für 7 Ausgänge oder 2x BC für 2 
Ausgänge bestücken und rechts oben rs232, unten 4 Eingänge.
Mit diesem Aufbau ist das sehr flexibel, ob als Staßenampel, Rückmelder 
oder auch als Zubehördekoder.
Mein erster Lokdekoder noch mit 90S1200 und einer Platine mit massenhaft 
Dukos. Der ist auch so ungefähr 6 Jahre alt, da war der S1200 die 
günstigste Lösung. Da der 1200 nur einen Timer hat ist da die Software 
noch ein wenig mehr verschachtelt als oben beim T15 Dekoder.
Und mein aktueller Dekoder mit Tiny15. Der ist ja schon weiter oben 
beschrieben. Die Platine hab ich einseitig ausgelegt, ich nehme 0,5er 
Material, brech die durch und kelb sie zusammen, dann am Rand 5 Bögen 
angelötet, so spar ich mir die Dukos. Man kann den Motorteil auch nur 
abschneiden, dann hast Du einen klasse Zubehördekoder mit 2 Ausgängen im 
Format 16x20mm. Du bräuchtest noch nicht mal die Software ändern: 
einfach ein Lokaddresse  zuweisen und die beiden Ausgänge machen 
Fahtrichtungsabhängig Licht.
Zum Schluß noch ein paar Bilder von meiner Dekoder Test- und 
Entwicklungsplatine. Da sind noch ein paar IC geparkt und div Versionen 
von Stabis (auch mit z-diode) drauf. LEDs für F1-F4, Licht vor-rück usw.

Viele Grüße
Willi

Autor: Toralf Wilhelm (willi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich nochmal, nicht meckern, aber Adresse wird natürlich nur mit eimem d 
geschrieben.
gruß willi

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Toralf Wilhelm wrote:
> ich nochmal, nicht meckern, aber Adresse wird natürlich nur mit eimem d
> geschrieben.
> gruß willi

Das ist aber nur bei uns so, die Amis schreiben es auch mit 2 "d"s...

Duck & wech...
...

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ihr,

in Gedanken bei der Roco Multimaus wäre eine DCC-Version mit z.B. 8 oder 
12 Ausgängen (bis max. 20 möglich) mal was "feines".
Es wäre z.B. nicht schlecht das Licht einzeln schalten zu können 
(Rangierfahrt = beidseitig weiß, angehängte Wagen = vorn weiß, Schublok= 
hinten rot etc...) macht schon 4 Ausgängen, dann z.B. zwei 
Innenraumleuchten, würde auch nochmal 2 Ausgängen machen, bei festen 
Zugverbänden und eventuell durchgeschleiften Funktionsdraht für 
Innenraumlicht wäre das nochmal ein Ausgang...
Mit den oben genannten "Gedanken" wollte ich auch nur mal fragen ob da 
vieleicht auch schonmal jemand was gemacht hat?
Wegen der Größe und den Ausgängen dann z.B. auf einen SMD mega8, die 
sind auch schön klein.

Patrick

Autor: Toralf Wilhelm (willi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Patrick wrote:

> Wegen der Größe und den Ausgängen dann z.B. auf einen SMD mega8, die
> sind auch schön klein.
>
Hallo Patrick,

an den mega8 habe ich so in Richtung Lastreglung auch schon mal gedacht, 
allerdings eher wegen den AD Wandlern und 8MHz int. Tackt, die Sache mit 
den Funktionsausgängen fällt dabei mit ab.

Gruß Willi

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Toralf Wilhelm wrote:
> Patrick wrote:
>
>> Wegen der Größe und den Ausgängen dann z.B. auf einen SMD mega8, die
>> sind auch schön klein.
>>
> Hallo Patrick,
>
> an den mega8 habe ich so in Richtung Lastreglung auch schon mal gedacht,
> allerdings eher wegen den AD Wandlern und 8MHz int. Tackt, die Sache mit
> den Funktionsausgängen fällt dabei mit ab.
>
> Gruß Willi

Der Mega48 dürfte vermutlich reichen und hat eine kleinere interne 
ADC-Referenz, womit die Strommessung zur Regelung vermutlich einfacher 
wird.

...

Autor: Toralf Wilhelm (willi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hannes Lux wrote:

> Der Mega48 dürfte vermutlich reichen und hat eine kleinere interne
> ADC-Referenz, womit die Strommessung zur Regelung vermutlich einfacher
> wird.
>

Guten Morgen,

der reicht auch. Die Lastreglung, habe ich mir aber über das messen der 
Induktionsspannung immer unmittelbar nach jedem PWM-Impuls gedacht (oder 
auch jedem 10. oder 100. mal sehen wie oft das nötig ist). Dazu hatte 
ich für jede richtung einen Spannungsteiler (wegen der unterschiedlichen 
Polarität) gedacht und die dann je an einen AD Wandlereingang gelegt. 
(Pins sind ja genug vorhanden)
Für mich ist der Aufbau mit möglichst wenig Bauteilen wichtig, weil 
kleiner als 1206 ist für Handarbeit (Platinen herstellen, bestücken) 
richtig Zeitaufwendig.

einen guten tag euch allen
willi

Autor: yjn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

könnte mir jemand ein Schaltbild und Codefragment für einen
Attiny15 mit PWM und Lastregelung zeigen.

Ich kann (mittlerweile) DCC hören und zugehörige PWM Ansteuerung
auf einen DC-Motor machen , bin aber nicht in der Lage den
lasrgeregelten Teil zu kapieren ...

Ich habe nicht die geringste Ahnung, wie ich PWM und LastRegelung
lösen soll !

g
yjn

Autor: Toralf Wilhelm (willi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
yjn wrote:
> Hallo,
>
> könnte mir jemand ein Schaltbild und Codefragment für einen
> Attiny15 mit PWM und Lastregelung zeigen.
>
> Ich kann (mittlerweile) DCC hören und zugehörige PWM Ansteuerung
> auf einen DC-Motor machen , bin aber nicht in der Lage den
> last geregelten Teil zu kapieren ...
>
> Ich habe nicht die geringste Ahnung, wie ich PWM und LastRegelung
> lösen soll !
>
Hallo,
T15 mit Lastreglung, hat meines Wissens noch keiner gemacht. Geht auch 
nur theoretisch. Die Software oben nutzt fast den gesamten Flash. Ein AD 
Wandler hat er, wenn Du aber noch Fahrtlicht haben willst, müsstest Du 
schon den Reset Pin mit nutzen. Ich denke mal, das dafür ein ATmega 
angebracht ist. Der läuft mit 8MHz, hat genug Platz im EEprom, da kann 
man schön Lasttabellen ablegen.
Schönen So Abend noch
Willi

Autor: yjn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich wäre an einem Beispiel interessiert, wie eine Schaltung zur 
Lastregelung
aussieht und wie das mit der Software zusammenspielt. Ich habe versucht, 
das rauszukriegen, bin aber zu sehr Elektronik-Laie, also brauche ich 
was einfaches als Vorlage zum verstehen.

Statt des tiny15 koennte man auch den tiny25 oder tiny45 nehmen, da is 
genug Flash. Die mega's sind zu gross, die passen nicht in eine Lok :)

Danke
yjn

Autor: Toralf Wilhelm (willi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
yjn wrote:
> Hallo,
>
> ich wäre an einem Beispiel interessiert, wie eine Schaltung zur
> Lastregelung
> aussieht und wie das mit der Software zusammenspielt. Ich habe versucht,
> das rauszukriegen, bin aber zu sehr Elektronik-Laie, also brauche ich
> was einfaches als Vorlage zum verstehen.
>
> Statt des tiny15 koennte man auch den tiny25 oder tiny45 nehmen, da is
> genug Flash. Die mega's sind zu gross, die passen nicht in eine Lok :)
>
 Guten Morgen Yin

der mega8 als SMD ist doch kaum größer als der T15. Die Platine wird 
halt wesentlich aufwendiger. Ansonsten hab ich oben schon einmal 
geschrieben, wie ich es plane: Spannungsmessung der 
Motorinduktionsspannung unmittelbar nach einem PWM Impuls. Diese 
Spannung ist schön groß, das bedeutet es reicht ein einfacher 
Spannungsteiler aus 2 Widerständen und einem C parallel zum Eingang aus 
(am besten 2x an je einen AD Wandlereingang für jede Fahrtrichtung wegen 
der Polarität). Um so größer die Belastung des Motors wird, um so mehr 
Strom fließt und um so größer wird die Induktionsspannung. Wenn Du einen 
Ozzi hast siehe es Dir einmal an. Ich denke das läßt sich viel einfacher 
machen als den Strom durch den Motor womöglich über einen Widerstand mit 
Verstärkung oder differenziell am AVR auszuwerten.
Was Du mit dem so gewonnenen Messwert machst, ist eine andere Frage. Ich 
glaube ich würde eine Lasttabelle im EEprom anlegen, so ähnlich wie die 
Tabellen für die Geschwindigkeit je Fahrstufe. So etwas gibt es ja auch 
bei einigen Decodern.
viele Grüße
Willi

Autor: yjn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Willi,

doppelt Danke für die Antworten !

Ich glaube, das Prinzip habe ich verstanden.

Motor dreht in den PMW-freien Zeiten, aus lauter Trägheit, weiter, 
erzeugt dadurch eine Spannung, die proportional zur Umdrehung ist.
Die Umdrehung wird als proportional zur Last angenommen und als Spannung 
gemessen.

Langsame Umdrehung, kleine Spannung, richtig ?
Schnelle Umdrehung, grosse Spannung, richtig ?

Reicht für eine solche Messung an einem induktiven Bauteil ein 
Spannungsteiler aus ?
Müssen nicht noch Dioden und solch Zeug dazu, um die messenden Bauteile 
zu schützen ?

Dazu noch die Frage nach der P und I Regelung, statt einfacher
Tabelle ...

Sorry wenn ich nerve, aber wenn ich wüsste wie es geht, würde ich nicht
fragen ...

tiny15/25/45 als smd sind noch beinahe zu gross :)

g
yjn

Autor: Toralf Wilhelm (willi)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Guten Morgen,

> Motor dreht in den PMW-freien Zeiten, aus lauter Trägheit, weiter,
> erzeugt dadurch eine Spannung, die proportional zur Umdrehung ist.
> Die Umdrehung wird als proportional zur Last angenommen und als Spannung
> gemessen.
>
> Langsame Umdrehung, kleine Spannung, richtig ?
> Schnelle Umdrehung, grosse Spannung, richtig ?

nicht ganz, die Spannung, die er induziert hängt von der Energiemenge 
ab, die beim letzten Impuls aufgenommen wurde. Oder anderst gesagt, im 
Leerlauf ohne Last, fließt bei jedem Impuls nur der Leerlaufstrom durch 
den Motor. Nur diese Energiemenge erzeugt dann eine Induktionsspannung. 
Wenn der Motor nun belastet wird steigt der Strom je Impuls proportional 
zur Last an und deswegen ist auch mehr Energie im Kern (Rotor) 
vorhanden, die dann auch eine größere Induktionsspannung erzeugt.

> Reicht für eine solche Messung an einem induktiven Bauteil ein
> Spannungsteiler aus ?

siehe Anhang

> Müssen nicht noch Dioden und solch Zeug dazu, um die messenden Bauteile
> zu schützen ?

nein wenn der Spannungsteiler hochohmig genug ist reichen die internen 
Dioden im AVR aus

> Dazu noch die Frage nach der P und I Regelung, statt einfacher
> Tabelle ...

hab ich auch noch keine Erfahrungen, aber ich denke es gibt bei Leerlauf 
der Lok eine bestimmte Induktionsspannung (die ist vom Motor abhängig). 
Die Spannung wird mit steigender Fahrstufe etwas größer (logisch der 
Ansteuerimpuls wird ja auch länger). Diese Werte je Fahrstufe würde ich 
als Ausgangswerte nehmen ( egal ob als Tabelle für jede Fahrstufe oder 
nur als Kuver/Gerade mit Anfangs und Endwert). Wenn jetzt die Last 
steigt, steigt auch die induktionsspannung, wenn sie sinkt (weil du 
bergab fährst) sinkt die induktionsspannung. Du muß jetzt nur noch 
daraus eine Reglung ableiten. Ich würde das ausprobieren (jetzt hab ich 
mich als Praktiker geoutet).

> Sorry wenn ich nerve, aber wenn ich wüsste wie es geht, würde ich nicht
> fragen ...

andere Gedankengänge sind manchmal ganz hilfreich.

> tiny15/25/45 als smd sind noch beinahe zu gross :)

Mal im ernst, was hällst Du vom tiny24/44/84, der ist noch gut Lötbar 
hat genug Ausgänge, AD Wandler usw.

gruß Willi



Autor: J.Schöbel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Willi


>nicht ganz, die Spannung, die er induziert hängt von der Energiemenge
>ab, die beim letzten Impuls aufgenommen wurde. Oder anderst gesagt, im
>Leerlauf ohne Last, fließt bei jedem Impuls nur der Leerlaufstrom durch
>den Motor. Nur diese Energiemenge erzeugt dann eine Induktionsspannung.
>Wenn der Motor nun belastet wird steigt der Strom je Impuls proportional
>zur Last an und deswegen ist auch mehr Energie im Kern (Rotor)
>vorhanden, die dann auch eine größere Induktionsspannung erzeugt.

ich glaube da irrst du dich. Stell dir vor du drehst den Motor mit 
konstanter Drehzahl, dann ist auch die Spannung die am Motor rauskommt 
konstant und nur von der Drehzahl abhängig. Eine Spannung muß dazu nicht 
vorher angelegt werden da der Motor als Generator arbeitet. Das was du 
meinst ist sicher eine Spannungsspitze die unmittelbar nach abschalten 
der Spannung entsteht.

Die Lastregelung soll eine konstante Geschwindigkeit bei Laständerung
ermöglichen. Dazu wird die Spannung am Motor in den Ansteuerpausen 
gemessen.Die Spannung ist proportional zur Drehzahl und damit zur 
Geschwindigkeit.
Die Regelung muß jetzt bei einer Abweichung vom Sollwert nachregeln.
Ob die Regelung dann als P PI oder PID Regler ausgelegt wird hängt von 
den Möglichkeiten des Programmierers ab.

Ich find übrigens auch den tiny 24/44/84 recht interressant.

Autor: Toralf Wilhelm (willi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo J,

ich glaub wir versehen uns falsch. Gemessen wird in der Impulspause. 
Allerdings ist die Spannung, die dort zu messen ist nicht nur von der 
Drehzahl abhängig sondern auch von dem Strom der geflossen ist.
Beispiel: Impulsbreite für 100 Umdrehungen, Motor läuft ohne Last, jetzt 
wird der Motor belastet, (drehzahl würde abfallen) wir ändern die 
Impulsbreite auf wiederum 100 Umdrehungen. Die Induktionsspannung ist 
aber größer trotz gleicher Drehzahl und gleicher Spannung. Die Spannung 
lag aber jetzt länger an, sprich es floß länger Strom ->  es wurde mehr 
Energie in die Motorspule gesteckt und somit wird auch die 
Induktionsspannung größer. Diese Induktionsspannung liegt nur 
unmittelbar nach dem Impuls an!
Ich meine nicht die Generatorspannung, die der Motor wie Du richtig 
schreibst induziert, wenn man ihn einfach dreht. Ich meine die 
Gegeninduktionsspannung, die die Motorspule, beim abschalten des 
Ansteuerimpuls erzeugt (auch wenn der Motor überhaupt nicht dreht).
Ich denke wenn man die Generatorspannung nutzen will, müßte man egal wie 
die PWM freq. ist Ansteuerpausen zum messen einfügen. Die Gegeninduktion 
der Motorspule, kann man aber sofort nach dem Ansteuerimpuls messen, es 
müßte nur eine min Impulspause vor dem nächsten Impuls eingefügt werden. 
Der AVR speichert den Wandlereingang zwischen so das auch nicht einmal 
die Wandlerzeit berücksichtigt werden müßte (das trifft aber immer zu).

gruß willi

Autor: J.Schöbel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Willi

ich hab das schon verstanden was du meinst. Es erscheint mir aber 
ziemlich kompliziert zu sein diese Spannung vernünftig zu messen und 
daraus einen Wert für die Regelung abzuleiten. Das was du messen willst 
ist ein relativ kurzer Impuls wogegen die erzeugte Generatorspannung 
einen etwa konstanten Wert liefert. Im letzten MIBA Digitalsonderheft 
ist die Wirkunsweise eines lastgeregelten Dekoders erläutert mit 
entsprechenden Oszillogrammen. Es wird nur die Generatorspannung 
gemessen und damit eine Drehzahlregelung (=Geschwindigkeitsregelung) 
erreicht.So machen es zumindest die Profis.
Aufgrund der kleinen Abmessungen für Lokdekoder beschränke ich mich erst 
mal auf Zubehördekoder. Mein erstes Projekt ist ein Zubehördekoder der 8 
Servos ansteuern kann.

Viele Grüße

Autor: Willi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
das Teil habe ich irgendwo, muß ich mir mal ansehen.
Gruß Willi

Autor: Silvio Luisoni (lui)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich möchte mir einen Decoder für meine LGB-Loks bauen.
Welchen Motortreiber nehme ich da am besten? 3A Müsste er schon 
verkraften.
Oder kann man dazu mehrere Treiber parallel schalten?

Autor: Willi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Morgen,

@ Silvio, da hast Du doch Platz ohne Ende, such mal nach H-Brücke das 
kannst Du doch mit 4 FETs machen.

@ J.Schöbel, bin inzwischen bei der Generatorspannung angekommen, mache 
vier Messungen und nehme den Mittelwert.

Gruß Willi

Autor: Volker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo an Alle,

ich verfolge den Beitrag schon länger und nun hab ich auch die Zeit zum 
Basteln. Vorab hätte ich da mal paar Fragen zum Encoder;

Frage 1:
Theoretisch müßte ich doch wenn ich nur ein und die selbe Lok ansteuern 
würde zb.: folgende Pakete senden,

Leerzeichen bitte wegdenken dienen nur zur besseren Übersicht.

11111111111111 0 00000011 0 01110111 0 01110100 1   // LOK
11111111111111 0 11111111 0 00000000 0 11111111 1   // Leerlaufpaket

Lok_Licht =1;
Lok_Richtung =1;
Lok_Speed = 0x07;
DCC_Adressbyte= 0x03;

vom Timing sieht es auch auf dem Oszilloskopen gut aus nur leider fährt 
meine Lok nicht los. Hat jemmand eine Idee wodran das liegen könnte?

Frage 2:

Muss am Anfang noch irgendwas gesendet werden, dass die Loks wissen nun 
im Digitalbetrieb? Oder fehlt bei mir noch eine Art Initialisierung?


Gruß Volker

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,

ich hab mir jetzt die nullen und einsen nicht komplett angesehen, aber 
ich mal gelesen, dass die nachricht nach 5ms wiederholt werden muss. Ist 
das bei dir der fall?

gast

Autor: Volker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich sende diese 2 Pakete in einer endlosschlaufe. Und das Idle Paket 
braucht ja länger als 5ms somit müßte Lok 3 danach doch wieder 
ansprechbar sein,...


Volker


Autor: Willi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Volker,

hatte auch einmal einen Encoder gebaut. Habe einfach nur die benötigten 
Pakete in Endlosschleife gesendet. Leerlaufpaket habe ich nicht 
gesendet. Wenn Dein Booster ok ist müßte das eigentlich gehen. Hier noch 
mal ein die Grundlagen in deutsch: 
http://www.lokodex.de/mo/m_digital_dccprot01.htm
Ich hoffe Herr Lindecke hat nichts dagegen.

Gruß Willi

Autor: Volker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Willi,

vielen Dank für den Tip! Nun läuft die Lok nach meinen Kommandos :-)


MfG Volker

Autor: Paul Baumann (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
Ich habe mir mal erlaubt, die Schaltung von Maddax zu dimensionieren und 
aufzubauen. Jetzt habe ich das Problem, nicht zu wissen, welches 
Programm
die aktuellste Version ist. Das Programm von Willi wird wohl nicht damit 
laufen können, da in dessen Schaltung der Pin6 vom Attiny15 ein 
Inhibit-Signal für seinen "Booster" ausgibt, während bei Maddax dort das 
Vor/Rück-
Signal ausgegeben wird.

Frage: Kann mir jemand das letzte Programm, das auf Maddax´Schaltung
       basiert als Hex-Datei senden?

MfG Paul

Autor: thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nabend zusammen,

Bräuchte eure Hilfe;

wie wird bei langen Adressen das Prüfbyte gebildet?

Adressbyte1 ^ Adressbyte2 ^ Datenbyte1 ^ Datenbyte2 = Prüfbyte

gruß Thomas

Autor: Willi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thomas,

genau so. Es werden immer alle gesendeten Bytes xor verknüpft. Das 
ergibt dann das Prüfbyte.

Gruß Willi

Autor: thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nabend,

hab follgendes Problem, kann Loks ansteuern usw, nur leider bekomm ich 
bei Roco Loks (hierbei, ist mir das speziel aufgefallen) nicht ans 
leuchten. Wird das Licht dort anders angesteuert?

01110111 Datenbyte
   L

Licht müßte doch so aktive sein, wenn das das Datenbyte so aussieht,...


MfG Thomas

Autor: Erwin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Thomas
Welchen von den verschiedenen Quellcodes hast Du in Betrieb? Kannst Du 
ihn mal hierher posten? Ich bin nämlich genau so schlau, wie Paul weiter 
oben.

Gruß Erwin

Autor: Willi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thomas,

bei 14 oder 28/128 Fahrstufen?
14-> Lichtbit wird im Fahrbefehl mit übertragen.
28-> Lichtbit (FL) wird über extra Befehl mit der Funktionsgruppe F1-F4 
übertragen.

Gruß willi

Autor: Paul Baumann (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
Ich habe mal den Lokdecoder von Maddax aufgebaut und getestet. (siehe 
Bild)
Ergebnis:

(mit 4 verschiedenen Modellbahnmotoren)

mit dem Programm vom 15.9.05 funktionieren die beiden Funktionsausgänge, 
aber der angeschlossene Motor läuft nicht.

mit dem Programm vom 9.7.06 funktionieren die Funktionsausgänge,
aber der Motor dreht immer in die gleiche Richtung. Stop funktioniert.

Mit den Änderungen von Zdenek am 26.10.06 und Maddax am 30.10.06
funktionieren wieder nur die Funktionsausgänge aber der Motor nicht.

Es müßte also in dem Code vom 9.7.06 die Stelle gesucht werden, an der 
das Richtungssignal ausgewertet wird. Irgendwas ist da im Argen, nur 
leider sind méine Assemblerkenntnisse zu gering, um selbst zu finden, 
woran es liegt. Maddax selbst ist "weg von der Modellbahn" :-(

MfG Paul





Autor: Paul Baumann (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Es ist vollbracht!! :-)

Ich hänge mal das jetzt funktionierende Programm an. Es läuft auf der 
Schaltung von Maddax, die ich weiter unten im Tread dimensioniert hatte. 
Ich habe die Bezeichnung einer Sprungmarke ändern müssen, da der 
vorherige Name eine reservierte Bezeichnung war. Weiterhin habe ich noch 
nach dem Vorschlag von Zdenek die Pulsweitenfrequenz auf ca. 100Hz 
heruntergenommen.

Mit Bascom wäre das nicht passiert, weil dort schon bei der Eingabe von 
reservierten Befehlen als Sprungmarkenname eine Fehlermeldung kommt.

Assembler ist schon ein hartes Brot. :-))

Ohne die ausführliche Kommentierung von Maddax wäre "alles zu spät" 
gewesen.


MfG Paul

Autor: thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Willi

Hallo Willi kannste mir mal in Bit-form ein Beispiel angeben für 28 
Fahrstufen + Fehlerprüfung + Licht an, weil bei mir hängt es irgendwo 
und ich find den Fehler nicht,...

thz Thomas

Autor: Arno (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Paul,
Das ist super.
Ich hatte selbst versucht die Schaltung von Maddax nachzubauen und bin 
an den gleichen Problemen gescheitert wie du am Anfang. Die Schaltung 
von Willi habe ich nachgebaut. Die funktioniert sehr gut, aber das Löten 
von SMDs ist bei mir eher Glücksache (zu breite Finger und 
Altersweitsichtigkeit) deshalb gefällt mir dein Aufbau viel besser. 
Würdest du ggf. noch dein Platinenlayout posten?
Danke.
Mfg
Arno

Autor: Paul Baumann (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
So, hier sind die EAGLE-Dateien für den Decoder von Maddax. Ich weise 
darauf hin, daß die Schaltung von ihm entwickelt wurde. Lediglich das 
Layout und  diese Dimensionierung stammt von mir. Vielleicht kriegt es
jemand noch kompakter hin.
Fragen zum Programm KANN ich nicht beantworten, da ICH NICHT der 
PROGRAMMIERER bin.

Die Schaltung wurde mit einem Eigenbau-Booster am Rechner getestet. 
Darauf läuft der DDW-Server und das Programm Rayliplan. Zum 
Programmieren der
Adressen u.s.w. wurde Rayliprog verwendet. Vier verschiedene Motoren von 
PIKO, ROCO und GÜTZOLD laufen prima damit.
Da auch ich nicht mehr der Jüngste bin und die Augen das "SMD-Granulat"
nicht mehr erkennen können, habe ich alles auf DIL-Basis ausgelegt.
Für H0 geht das meist noch. :-)

So, FF!
(Fiel Fergnügen)

Paul

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach so; über Einbaubeispiele würde ich mich freuen. Wenn das Layout 
kommerziell genutzt wird, gibt es Mecker vom Meister, wie Werner schon 
sagte.

Mehl:*lexi*et*everymail*.*net

Alles ohne Sterne, wegen der kleinen Spamroboterchen ;-)

Paul

Autor: Willi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Morgen,

@Thomas:

Kurze Addressierung FL ein:
Preamble 0 Adresse 0 Daten 0 Prüfbyte 0 ->
1111111111 0 0AAAAAAA 0 10010000 0 EEEEEEEE 0

Schau mal hier: http://www.digital-bahn.de/info_tech/dcc.htm

@Arno:

Wenn Du die Schaltung in DIL aufbaust, dann würde ich es auch mit dem 
L272 als Endstufe machen (8 Pins klein simple Ansteuerung).
Als SMD (wenn der gesammte Aufbau halt noch kleiner werden soll) ist für 
mich der Kurzschlußschutz im TLE mit seinen SO20 mehr Wert als die etwas 
kleinere Bauform (SO16) des L272.

@Alle:

Zur Entstufe, kennt jemand eine kleine(re) SMD H-Brücke (mind 
25V/1A/temp und  Kurzschluß-Schutz/Bezahl-/Beschaffbar) ?

Gruß Willi

Autor: Gordon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Willi

kleiner Fehler im Format. Nach dem Prüfbyte kommt eine 1. Die kann auch 
schon Bestandteil der nächsten Präambel sein.

Viele Grüße

Autor: Willi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Morgen,

@Gordon

Du hast natürlich Recht! Am Ende jedes Befehls kommt immer ein highbit!
Aber so ist das nunmal, wenn man nur schnell mal etwas abschreibt, genau 
dieser Fehler ist auch bei meinen obrigen Link vorhanden und hier auch 
nur bei den Befehlen für die Funktionsgruppen.

Viele Grüße Willi

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe zufällig eine weitere, sehr interessante OpenSource-Quelle 
gefunden:

http://www.opendcc.de/

Insbesondere der Zubehördekoder 
(http://www.opendcc.de/modell/opendecoder/opendecod...) 
erscheint mir sehr ausgereift. Grundlage war wohl der Acc-Dekoder von 
http://www.bahn-in-haan.de/ aber, wie beschrieben, deutlich verbessert!

Gruß,

Klaus

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Klaus
Ich habe die Variante 1 mit Attiny2313 aufgebaut. 3 Stück davon arbeiten 
prima auf meiner Anlage.

MfG Paul

Autor: Sigmar Walter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Tag,
ich habe das Programm von Willy 
http://www.mikrocontroller.net/attachment/19777/T1...
benutzt, aber so wie es ist, scheint es nicht zu funktionieren.
Auf Programmierimpulse z.B. für eine neue Adresse spricht der Decoder 
an,
die Lok ruckt kurz, aber nur 1 Funktionsausgang geht, Motor wird im 
Fahrbetrieb nicht angesprochen. Hat auch jemand das gleiche Problem?

Beim Assemblieren mit dem AVR-Studio bringt es eine Menge Warnungen,
dass eine ungerade Zahl von Bytes im EEprom-Bereich sein soll aber keine
Fehlermeldung an sich.

Gruß Sigmar

Autor: Willi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Sigmar,

wenn Du mein Programm nimmst, mußt du auch den TLE als Motorendstufe 
nehmen! Es geht nicht mit einem L272!
Ansonsten sieh Dir mal den EEprominhalt an, Erklärung am Ende vom asm. 
Die Werte für Vmin,max usw sollten schon einigermaßen sinnvoll sein.

Gruß Willi

Autor: Sigmar Walter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Willi
Danke erst mal für Deine Antwort. Ich habe tatsächlich die Schaltung von
Paul mit dem L272 benutzt und dachte, es geht damit auch. Ich bin halt 
nur
Modellbahner und kein Programmierer/Elektroniker. :-(

Die Schaltung von Paul läuft aber auch mit dessen Programmänderung nur 
in die Rückwärtsrichtung anständig; in Vorwärtsrichtung läuft der Motor 
erst
bei Vollgas los und läßt sich nicht herunterregeln. So ist das Ganze 
leider wertlos für mich. Schade. Da habe ich die Platinen umsonst von 
meinem Kollegen ätzen lassen.

Gruß Sigmar

Autor: Arno (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Sigmar,
ich habe auch den Dekoder von Paul mit dem L272 nachgebaut und habe den 
gleichen Effekt. In der einen Richtung läuft alles gut, in der anderen 
Richtung läßt sich der Motor nicht richtig regeln und die 
Richtungsumschaltung klappt manchmal auch nicht so richtig.
@Paul,
hast du noch einen Tipp für uns? Muss mann ggf. am Motor noch was 
verändern? Entstörkondensator, Vorwiderstand oder sowas?
Danke erstmal.
Gruß Arno

Autor: Paul Baumann (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
@Arno und Sigmar
Ich habe gerade gesehen, daß das Register TCCR1 bei 
Vorwärts/Rückwärtsfahrt noch mit den falschen Werten geladen wurde und 
jetzt auch auf die niedrigere PWM-Frequenz angepasst. Versucht jetzt mal
das Programm. Es MUSS mit der Avr-Studio Version 4.13 übersetzt werden,
weil in der alten Version die Datei Tn15def.inc Fehler bringt.

Assembler ist so schwer zu überblicken. (Seufz!)

Schönes Wochenende und rangiert langsam ;-)

MfG Paul

Autor: Nik (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen!

Ich bin neu hier und habe eure Beiträge mit grossem Interesse gelesen. 
Und weil ich mich im Rahmen der Entwicklung eines Eigenbau-DCC-Decoders 
für H0 mit den selben Fragen herumquälen musste - oder es immer noch tue 
- habe ich mich beschlossen, mal von meinem Projekt zu berichten.

Mein Decoder soll besonders im Bereich der Lokbeleuchtung möglichst 
realistische Funktionalität anbieten, also beispielsweise die 
verschiedenen Scheinwerfermuster, wie sie von den Bahngesellschaften (in 
meinem Fall ist das die SBB) vorgeschrieben werden, anhand einiger 
CV-Flags umsetzen. Das Grundkonzept entstand im Spätsommer 05, und ist 
in mehreren Überarbeitungsschritten immer perfekter geworden. 
Mittlerweile unterstützt die Software 16 individuell gedimmte 
Leuchtkanäle, welche beinahe ohne Einschränkungen konfiguriert werden 
können (z.B. als Fernlichtscheinwerfer deklariert oder mit Effektkanälen 
verknüpft).

Daneben ist der Motorteil genau nach NRMA-Norm implementiert, d.h. mit 
SpeedTable, Motorkurve, Vmin-Vmid-Vmax-Konfiguration etc. Bloss die 
Lastregelung habe noch nicht angegangen; da hinderten mich die selben 
Unsicherheiten wie sie in diesem Thread schon aufgetaucht sind. Aber 
auch dieses Feature ist geplant.

Ich werde mal mein Projektordner nach einigen anschaulichen Dateien 
durchforsten, muss aber noch anmerken, dass ich in diesem Forum wohl ein 
bisschen ein Exot bin, da ich in C programmiere und 
Silabs-Mikrocontroller (z.B. den C8051F310, siehe 
http://www.silabs.com/public/documents/tpub_doc/ds...) 
verwende. Diese Chips sind extrem leistungsfähig (bis zu 25 MIPS) bei 
bloss 5mA, verfügen selbst bei winzigen Massen (ab 3 x 3 mm) über ein 
grosses Repetoire an integrierter peripherer Hardware (PWM, ADC, SPI 
etc.) und können dank JTAG built-in-programmiert und debugged werden.

Doch bevor ihr fragt: nein, ich werde nicht von Silabs gesponsert! :) 
Ich bin nur sehr begeistert von den kleinen Chips, das ist alles. Aber 
ich muss auch zugeben, dass ich noch nicht allzu viele andere Mikros 
genauer unter die Lupe genommen habe; ich lasse mir also gerne die 
Vorzüge der Amtel-Chips erklären. :)

Gruss, Nik

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin moin,
sagt mal wie sieht es eigentlich mit dem Funktionsdecoder aus? Gibt es 
da ne Version die richtungsabhängige und dimmbare Ausgänge hat?

Andi

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
hab gerade gesehen, dass es da schon was gibt. Aber wie es aussieht 
nicht mit langer Adresse :-( Ist das evtl. machbar? Und wäre nicht 
schlecht wenn man die F-Ausgänge getrennt dimmen könnte.

Andi

Autor: Werner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Alle, auf die Frage

Zur Endstufe, kennt jemand eine kleine(re) SMD H-Brücke (mind
25V/1A/temp und  Kurzschluß-Schutz/Bezahl-/Beschaffbar) ?

fällt mir der TLE 4207 G, 0.8A Dauer, 1A Peak, max 45V ein. Ist bei 
Segor zwar auf abgekündigt, kann ich aber bei Infineon 
http://www.infineon.com/cms/en/product/channel.htm... 
immer noch als in Prod. finden. Ev. mit dem alten TLE 4207 verwechselt? 
Ist zwar etwas teurer als der TLE 4205 mit SO20 aber mit DSO14 schön 
klein. Ich hatte ihn mal vor längerem mit einem PIC DCC Decoder und N 
Loks im Einsatz, hat gut funktioniert.

Gruß, Werner

Autor: Ecki Bär (ecki)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
versuch mal den ata6826
hab ein datenblatt angehaengt

gruss eckard

Autor: Paul Limpens (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Mit wachsender Interesse habe ich die Diskussionen verfolgt die hier 
Ablaufen. Da ich einen sehr interessierter Mitleser bin Frage ich mich 
ob es nicht einfacher ist fuer die Menschen die mit den Software fuer 
die ATMELS nicht so Bekannt sind (wie ich!), einfach auch die HEX Files 
zu hinterlegen zum direkten Programmieren in die Prozessoren. Auch ist 
es mir nicht ganz klar mit welchen Programm ich die ASM Files umsetzen 
sollte in dass HEX Format. Fuer die Richtige Programmierfreaks ist dies 
natuerlich ueberhapt keine Frage, aber fuer mich als normaler 
"Endverbraucher" schon! Ich habe schon ettliche PIC Prozessoren 
programmiert, aber immer mit HEX Files die von den Entwickler 
mitgeliefert wurden. Auf meine Homepage gibt es diverse Beispiele 
hierzu.

Uebrigens zur Frage nach eine Brauchbare und auch gut Beschaffbare H 
Bruecke kann ich die ZXMHC6A07T8 der Fa. Zetex Empfehlen. Es ist eine 
1,5A 60V H Bruecke. Habe ich gekauft bei Reichelt und kostet € 1,25. 
Datenblatt ist beigefuegt

Gruss aus den Niederlanden,

Paul

http://members.home.nl/pamali/

Autor: ruebi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Paul,

kurze Antwort: siehe www.atmel.com/products/avr/ und dann nach AVRstudio 
suchen. Ist kostenlos und macht alles was Du brauchst.

Gruß,

Klaus

Autor: Paul Limpens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Klaus, und alle Andere die sich mit diese Materie auskennen

Ich habe mir nach deiner Empfehlung dass AVR Studio Version 3.56 
installiert.
Wenn ich jetzt eine ASM Datei versuche einzulesen habe ich dass Problem 
es gibt kein Menuepunkt wo ich diese Datei einlesen kann. Ich finde nur 
bei FILE / OPEN als Vorgaben z.B. HEX Dateien, aber keine ASM. Wenn ich 
trotzdem eine ASM einlese (ueber *.*) wird diese Datei zwar eingelesen 
aber es gibt keine Moegligkeit nach eine HEX datei umzusetzen. Ich mache 
bestimmt etwas falsch, ab was?
Wie schon mal gesagt, ich bin kein Programmierer sondern einen 
Benutzer......

Gruss,

Paul

http://members.home.nl/pamali/

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit F7-Taste wird assembliert und gespeichert.

Aber vermutlich hast Du vergessen, ein Projekt anzulegen...

Also:
- Leeren Ordner einrichten
- AVR-Studio starten
- neues Projekt anlegen, dabei den leeren Ordner wählen
- zu einem Dateimanager wechseln (Explorer, Commander)
- Quelltextdatei öffnen,
- Text in Zwischenablage kopieren,
- zu AVR-Studio wechseln,
- Text einfügen,
- Assemblieren und speichern (F7)
- zum Dateimanager wechseln und nachschaun...

Ist ein bissel umständlich, dass man immer ein Projekt einrichten muss, 
stört mich auch manchmal, wenn ich nur mal schnell etwas probieren oder 
assemblieren will, ist aber leider so...

...

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

man kann das Ganze auch noch per Kommandozeile machen, dann spart man 
sich das mit dem neuen Projekt. Macht die ganze Sache aber auch nicht 
einfacher.

@Paul:
Die Version 3.56 vom AVRStudio ist schon sehr alt, aktuell ist die 
Version 4.13

CU

Autor: Paul Limpens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Hannes und ...

Es hat geklappt!

Es ist tatsaechlich sehr umstaendlich aber ist ja egal wenn es dann doch 
funktioniert. Jetzt kann ich weiter Experintieren mit den Tiny (fuer 
mich Neuland). Wenn ich einen Brauchbaren Decoder gebastelt habe werde 
ich mich wieder Melden!

Schoenen Dank fuer eure Hilfe!

Gruss,

Paul

http://members.home.nl/pamali/

Autor: Paul Limpens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,

Ich habe jetzt Laengere zeit mit den TINY 15 Gekaempft. ich habe mir 
eine HEX File erstellt mit AVR Studio 4.13, den Decoder programmiert mit 
Ponyprog und den Decoder auf eine Steckplatine aufgebaut, mit 
Angeschlossenen Motor, aber es tut sich nichts. wenn ich den Decoder 
Auslesen oder Programmieren moechte bekomme ich immer wieder die Meldung 
NO ACK. Ich habe anschliessend nochmals alle Obenstehenden Kommentare 
duchgesehen und habe etwas von OSCCALL Werte Gelesen. Gesucht in Neuen 
TINY aber nichts gefunden. Muss ich den OSCCAL wert noch irgendwie in 
meine Programmierung Angeben oder reicht es die kompilierte HEX File 
einzulesen im Prozessor? Ich habe die von mir erstellte HEX File 
dec23-11.HEX mal Beigefuegt. Villeicht hat jemanden Lust mal zu Testen 
ob die file uebehaupt richtig kompiliert wurde.

Gruss,

Paul

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jeder Tiny15 hat seinen individuellen Calibrationswert in das High-Byte 
des Signature-Bereiches an Adresse 0 eingebrannt. Leider wird dies bei 
Reset nicht automatisch nach OSCCAL geschrieben, das ist erst bei 
neueren AVRs der Fall. Der Tiny15 rennt bei Auslieferung also nicht mit 
den geplanten 1,6MHz, sondern klappert mit irgendwas zwischen 0,8MHz und 
1,5MHz vor sich hin, so wie es seine Fertigungstoleranzen erlauben.

Beim Ausmessen (bei der Herstellung) wird das Calibrationsbyte zwar noch 
in die letzte EEP-Zelle und in die letzte Flash-Zelle (Low und High) 
geschrieben, wird aber von den meisten ISP-Programmen beim ersten 
Zugriff gelöscht und ist daher bei Verwendung von Ponyprog & Co nicht 
wirklich verwendbar.

Um den Tiny15 zu calibrieren, muss man:
- mit ISP-Programm das Calibrationsbyte aus dem Signature-Space
  ermitteln
- im AVR-Programm das Calibrationsbyte in das I/O-Register OSCCAL
  schreiben

Kleines Handycap dabei: Das AVR-Programm kann das Calibrationsbyte nicht 
lesen, das kann nur ein Programmer (ISP, HV-Ser.) von außen. Ein 
Programmer kommt zwar an das Calibrationsbyte heran, hat aber keinen 
Zugriff auf OSCCAL. Daher ist das Calibrieren des Tiny15 nicht ohne 
Mitwirkung des Menschen automatisierbar. Im DCC-Programm findet man im 
Reset-Block folgende Sequenz:
    ldi TEMP1, EEOSCCAL  ;hole Oszillator Calibrierung
    rcall readEEProm
    out OSCCAL, Temp2
Das lässt darauf schließen, dass der Calibrationswert im EEPROM an der 
Adresse EEOSCAL erwartet wird. Die Suche nach EEOSCCAL ergab folgenden 
Treffer:
.equ EEOSCCAL = 5    ;Speicherplatz OSCCAL im EEPROM
Nun wissen wir, dass es sich um Adresse 5 handelt, also das 6. Element 
des EEPROM. Nun müssen wir ermitteln, woher das EEPROM seine Daten 
bekommt und finden das hier:
;** hier beginnt das EEProm **  
.ESEG
.ORG $0000    

.db 0x01, 0x00  ; CV1 Adresse und CV2 StartSpeed
.db 0x80, 0x80  ; CV3 IncVAL und CV4 DecVal 
.db 0x80, 0x71  ; CV5 MaxSpeed  und CV6 OSCCAL
.db 0xFF, 0x01  ; CV7 Hersteller und CV8 Typ ID
.db 0xFF, 0xFF  ; CV9 Frei und CV10 Frei
.db 0xFF, 0xFF  ; CV11 Frei und CV12 Frei
.db 0xFF, 0xFF  ; CV13 Frei und CV14 Frei
.db 0xFF, 0xFF  ; CV15 Frei und CV16 Frei
.db 0x00, 0x02  ; CV17 HI-Byte und CV18 LO-Byte
.db 0x00, 0xFF  ; CV19 Consist und CV20 Frei
.db 0xFF, 0xFF  ; CV21 Frei und CV22 Frei
.db 0xFF, 0xFF  ; CV23 Frei und CV24 Frei
.db 0xFF, 0xFF  ; CV25 Frei und CV26 Frei
.db 0xFF, 0xFF  ; CV27 Frei und CV28 Frei
.db 0x00, 0xFF  ; CV29 Configuration Data und CV30 Frei
Und wenn wir uns die Datenzeilen ansehen, stellen wir fest, dass immer 
zwei Bytes in einer Zeile notiert sind. Das 6. Element mit der Adresse 5 
steht demnach in der dritten Zeile an zweiter Position und hat in diesem 
Quelltext den Wert 0x71. Auch im Kommentar erkennt man, dass es sich um 
den OSCCAL-Wert handelt, allerdings im DCC-Slang gleich noch mit einem 
"CV"-Namen versehen.

Deine Aufgabe ist es nun
- mit einem ISP-Programm (z.B. Ponyprog2000) das Calibrationsbyte Deines
  Tiny15 zu ermitteln,
  es in den Quelltext einzutragen,
  den Quelltext neu zu assemblieren,
  die neu assemblierte Hexdatei in den Tiny15 zu brennen...

Ich lege in meinen Programmen das Calibrationsbyte übrigens immer in die 
letzte Flash-Zelle, so kann ich bei neuen AVRs gleich die 
Herstellerwerte benutzen. Manchmal ist es eben vorteilhaft, sich an 
gewisse Konventionen zu halten.

...

Autor: Willi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
kann Hannes nur zustimmen.
Da Du jetzt aber die Stelle im EEprom kennst, kannst Du auch in Ponyprog 
den EEpromwert von Hand ändern und dann den Tiny programmieren. Aber 
aufpassen: bei Programmoptionen darf nicht "Datein wiederherstellen" 
angekreutzt sein, sonst überschreibt er Dir Deine Änderung wieder.
Gruß Willi

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Modellbahner,

nach langer suche im Netz habe ich nun dieses Forum bzw. diesen Forum 
Eintrag gefunden. Leider muss ich zugeben das ich nicht ganz 
nachvollziehen kann was die letzten Software sowie Hardwareversionen 
sind.


letzte Softwareversion die ich hier gefunden habe ist die Version
19.05.2007 von mad.dax
und die letzte Hardwareversion habe ich von Paul Baumann gefunden
11.04.2007

Ist das der letzte Stand? Dann würde ich eine Bestellung tätigen und mir 
auch ein paar DCC Decoder bauen.

Einen Guten Rutsch an alle

Jens

Autor: Jürgen Coellen (coellen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Paul Baumann (Dec_T15_Adv1_90.asm / 19.05.2007)
  Dank für eine funktionierende Software.

@Hannes Lux (06.12.2007)
  Dank für einen sinnvollen, aber notwendigen Änderungshinweis.

Nun:     wo kann man nachlesen, welcher Befehl das Einlesen von CV's 
bewirkt und wie, da es sich bei DCC_Ansteuerung (noch) nicht um eine 
bidirektionale Leitung handel, wird das Einlesen bewerkstelligt.

Vielen Dank für eine Antwort

Jürgen

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jürgen Coellen wrote:

> @Hannes Lux (06.12.2007)
>   Dank für einen sinnvollen, aber notwendigen Änderungshinweis.

Das war kein Hinweis zur Änderung, sondern einfach eine (kommentierte) 
Analyse des Programms in Richtung Calibration des Oszillators. Ich habe 
einige Programme für Modellbau mit Tiny15 entwickelt, dort habe ich die 
Calibration allerdings anders gelöst.

>
> Nun:     wo kann man nachlesen, welcher Befehl das Einlesen von CV's
> bewirkt und wie, da es sich bei DCC_Ansteuerung (noch) nicht um eine
> bidirektionale Leitung handel, wird das Einlesen bewerkstelligt.

Es ist zwar schon etwas her, dass ich mir die DCC-Doku mal näher 
angesehen hatte, aber ich meine, dass das Zurücklesen der CVs im 
Basisbefehlssatz nicht vorgesehen ist. Das machen einige Hersteller 
vermutlich in dem Teil des Befehlssatzes, der für Erweiterungen 
vorgesehen ist. Als Rückkanal wird die Stromaufnahme der Lok gewertet, 
die vom Booster des Programmiergleises (z.B. an Intellibox) gemessen 
wird.

Ich selbst halte die CV-Programmierung bei laufendem Betrieb übrigens 
für keine gute Idee. Es gibt regelmäßig Probleme mit digitalen 
Gartenbahnloks, deren Decoder (auf improvisierten Großanlagen bei 
Gartenbahn-Treffen) die PWM herkömmlicher Stromversorgungen mit aller 
Gewalt als DCC interpretieren wollen und ggf. sämtliche CVs verstellen.

>
> Vielen Dank für eine Antwort
>
> Jürgen

Schau doch mal bei open-DCC vorbei, vielleicht erfährst Du da mehr.

...

Autor: Klaus R. (ruebi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jürgen Coellen wrote:
> wo kann man nachlesen, welcher Befehl das Einlesen von CV's
> bewirkt und wie, da es sich bei DCC_Ansteuerung (noch) nicht um eine
> bidirektionale Leitung handel, wird das Einlesen bewerkstelligt.

Wo: Schau mal auf den entsprechenden Seiten der NMRA 
(http://www.nmra.org/standards/). Dort sind die Dokumente hinterlegt 
(leider nur in Englisch verfügbar!). Empfohlene Litaratur: "NMRA 
STANDARDS AND RECOMMENDED PRACTICES"

Wie: Der Dekoder "Quittiert" entsprechende Anfragen mit einem 
kurzzeitigen (ca 6ms) Stromverbrauch von mindestens 60 mAn mA. Aber das 
steht auch genau in Recommended Practise 9.2.3.

Solltest Du vorhaben selbst in die hardwarenahe Programmierung von 
DCC-Decodern einzusteigen, so wirst Du feststellen, daß die 
NMRA-Dokumente ein zwingendes MUSS darstellen. Ohne deren Verständnis: 
No Chance to get it working!

Viel Spaß bei der Lektüre (muß man teilweise mehrmals lesen um es zu 
verstehen).

Autor: Georg Ziegler (gzi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
falls jemand nach kleinen Layouts für ATtiny's sucht (10x13mm),
mal auf meiner Seite vorbeischauen:
http://gzi.funpic.de
- Eisenbahnmodellbau
  - DCC-Decoder (Eigenbau)

Viele Gruesse
Georg

Autor: Andreas Gräler (djmetro)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
würde der Encoder auch mit nem tiny13 laufen? Habe gerade keinen 15er 
hier. Wenn ja, was muss angepasst werden?

2. Frage: Ich suche eigentlich nen Encoder, der wie der Bremsgenerator 
von Lenz arbeitet. Der liest das Paket von der Zentrale ein, und ändert 
das Geschwindigkeitspaket. Somit bleiben die Funktionen erhalten. Wäre 
jemand in der Lage so etwas zu erstellen?

Andi

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andreas Gräler wrote:
> Hi,
> würde der Encoder auch mit nem tiny13 laufen?

Ein Vergleich der Datenblätter von Tiny13 und Tiny15 hätte Dir gezeigt, 
dass der Tiny13 keinen zweiten Timer hat. Ein Blick in den 
Programm-Quelltext hätte Dir dann verraten, dass das Programm beide 
Timer nutzt.

> Habe gerade keinen 15er
> hier.

Das ist dann Pech für Dich.

> Wenn ja, was muss angepasst werden?

Du müsstest einen zweiten Timer in das Silizium meißeln oder die 
Motor-PWM in Software programmieren und die anderen Timer-abhängigen 
Dinge in die beiden Compares des Tiny13-Timers verlegen. Du müsstest 
also das Programm völlig neu schreiben und hättest nicht mal die 
Garantie, dass das überhaupt geht.

>
> 2. Frage: Ich suche eigentlich nen Encoder, der wie der Bremsgenerator
> von Lenz arbeitet. Der liest das Paket von der Zentrale ein, und ändert
> das Geschwindigkeitspaket. Somit bleiben die Funktionen erhalten. Wäre
> jemand in der Lage so etwas zu erstellen?

Könntest Du es bezahlen? (Nein, ich mache es nicht, auch nicht gegen 
Bezahlung...) Der Lenz-Bremser ist vermutlich billiger. Oder Du machst 
es selbst. Dann gibst Du der Gemeinschaft wenigstens etwas zurück.

>
> Andi

...

Autor: Andreas Gräler (djmetro)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hannes Lux wrote:
> Oder Du machst
> es selbst. Dann gibst Du der Gemeinschaft wenigstens etwas zurück.
>

Wenn Du mir sagst wie kein Problem. Ich habe von assembler und co. 
absolut keine Ahnung. Ich kann wohl nen PIC mit Parsic schreiben, aber 
mehr auch nicht.

Andi

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andreas Gräler wrote:
> Hannes Lux wrote:
>> Oder Du machst
>> es selbst. Dann gibst Du der Gemeinschaft wenigstens etwas zurück.
>>
>
> Wenn Du mir sagst wie kein Problem.

Mir fehlt leider die Zeit, Dir AVR-ASM beizubringen. Das müsstest Du 
(falls Du es wirklich willst) schon selbst erledigen.

> Ich habe von assembler und co.
> absolut keine Ahnung.

Das lässt sich ändern. Ein Anfang wäre das Tutorial auf dieser Seite. 
Dann anderer Leute Quelltexte analysieren und verstehen. Dann eigene 
Probleme in einer Programmiersprache formulieren. ASM ist nr dann 
notwendig, wenn Du es mit einem kleinen leistungsschwachen Controller 
realisieren willst. Ansonsten gehen auch Hochsprachen.

> Ich kann wohl nen PIC mit Parsic schreiben, aber
> mehr auch nicht.

Dann löse das Problem eben in PARSIC mittels PIC.

>
> Andi

...

Autor: Andreas Gräler (djmetro)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Hannes
Ich hab schon öfters versucht einzusteigen. Doch irgendwie begreife ich 
einiges einfach nicht und habe auch oft nicht die Zeit dazu. Ich bin 
auch im Technikerstudium beim 8051 irgendwann nicht mehr mitgekommen.
Ich habe schon oft überlegt ob man es mit Parsic hinbekommen würde. Aber 
ich wüßte nicht wie ich das hinbekommen soll. Kennst du das tool?

Andi

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andreas Gräler wrote:
> @Hannes
> Ich hab schon öfters versucht einzusteigen. Doch irgendwie begreife ich
> einiges einfach nicht und habe auch oft nicht die Zeit dazu. Ich bin
> auch im Technikerstudium beim 8051 irgendwann nicht mehr mitgekommen.

Nun, ich bin bloß (mehrfacher) Facharbeiter. Ich weiß, dass das Erlernen 
von AVR-Assembler nicht mal schnell von heute auf morgen geht. Da steckt 
viel Arbeit drin.

> Ich habe schon oft überlegt ob man es mit Parsic hinbekommen würde.

Dann müsstest Du PARSIC schon verdammt gut kennen.

> Aber
> ich wüßte nicht wie ich das hinbekommen soll.

Ich auch nicht. Und mit PIC gleich gar nicht.

> Kennst du das tool?

Nein, ich weiß nur dass es das gibt und das man damit Funktionsbausteine 
zusammenschiebt, ähnlich FUP oder Siemens Logo.

>
> Andi

...

Autor: Hannes Lux (hannes)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Änderungen vom 05.12.2008 am DCC-Lokdecoder von Maddax

Warum eigentlich?

Ausgangspunkt war die Entwicklung eines DCC-Einzelweichendecoders für 
Gartenbahn-Weichen auf der Basis des ATTiny13. Dazu brauchte ich eine 
provisorische DCC-Zentrale. Um diese zu entwickeln (sie läuft inzwischen 
mit Mega48, FET-H-Brücke, LCD 2x24, Drehgeber und 15 Tasten), brauchte 
ich neben Weichendecodern auch ein paar Lokdecoder, zwar nicht für den 
Einbau in Loks, sondern zum Demonstration zum Betrieb von 
Getriebemotoren (Kassenbonaufwickler von Pollin) und LEDs (Funktionen). 
Da ich bei www.mikrocontroller.net über diesen DCC-Decoder mit ATTiny15 
von Maddax gestolpert bin, baute ich diesen nach. Er funktioniete aber 
nicht zufriedenstellend, da meinen Motoren die PWM-Frequenz zu hoch war. 
Also war ich gezwungen, Teile des Programms zu analysieren, was aufgrund 
Maddax' reichlicher und guter Kommentare ganz gut funktionierte. Ich 
habe dabei folgende Änderungen vorgenommen:


1. Änderung der PWM-Frequenz...

Grund: Meinen Motoren war die PWM-Frequenz zu hoch. Ihnen fehlte das 
Drehmoment.

Abhilfe: Anlegen der Konstante "fpwm" im Kopf des Quelltextes. 
Einstellen des Timer-Vorteilers in den Routinen "OUTZ:" und "REV:" 
anhand der Konstante "fpwm" anstatt unmittelbarer Binärzahlen.

Fazit: Die PWM-Frequenz kann jetzt in 1zu2-Schritten im Kopf des 
Quelltextes eingestellt werden.


2. Änderung der Startwerte für CV#3 und CV#4...

Grund: Da die Berechnung der Anfahr- und Brems-Rampen von der 
PWM-Frequenz abhängt, stimmen die Startwerte (CV#3 und CV#4) natürlich 
nicht mehr...

Abhilfe: Ich lasse jetzt die Startwerte (CV#3 und CV#4) anhand "fpwm" 
vom Präprozessor des AVR-Studios berechnen (Konstante "cv3_4") und weise 
dem EEP den Wert nicht mehr unmittelbar durch Hex-Zahlen zu, sondern 
durch die Konstante "cv3_4".

Fazit: Der Decoder erhält bei jeder sinnvollen PWM-Frequenz akzeptable 
Startwerte für Anfahren und Bremsen, was eine CV-Programmierung dieser 
Werte in vielen Fällen erübrigt.


3. Vordefinierte Konstanten für CV#1 und CV#6...

Grund: Ich war einmal dabei, Konstanten für individuelle Werte im Kopf 
des Quelltextes anzulegen.

Eingriff: Es wurden die Konstanten "adress" und "calibyte" angelegt, 
denen die DCC-Adresse und das individuelle Kalibrationsbyte des 
verwendeten ATTiny15 zugewiesen wird. Dem EEP werden diese Werte dann 
nicht mehr durch unmittelbare HEX-Zahlen zugewiesen, sondern durch die 
Konstanten.

Fazit: Dies ermöglicht die Kalibration des Oszillators und Zuweisen der 
DCC-Adresse ohne Scrollen vom Kopf des Quelltextes aus und erspart die 
CV-Programmierung eines neuen Decoders.


4. Verbesserung der Fahrtrichtungsumschaltung...

Grund: Mit Entsetzen stellte ich fest, dass beim zu schnellen Umschalten 
der Fahrtrichtung der Motor nicht stehen bleibt, sondern in der alten 
Fahrtrichtung weiter dreht. Mag sein, dass dieser Fehler unbemerkt 
blieb, weil der Decoder woanders hauptsächlich mit PC-Software als 
Zentrale betrieben wird und diese das Umsteuern verzögert.

Abhilfe: In der Routine "SpeedCalc:" wurden zwei IF-Abfragen vertauscht, 
wodurch das CV-Reversierbit jetzt auch berücksichtigt wird, wenn die 
Fahrtrichtung nicht neu geschrieben wird. In der Routine "Speed28:" 
wurde eine Prüfung auf Fahrtrichtungsumkehr eingebaut, die zur Routine 
"STOP:" verzweigt, solange Soll- und Ist-Fahrtrichtung nicht 
übereinstimmen. Die neue Fahrtrichtung wird somit solange ignoriert, bis 
das Ist-Tempo 0 ist und dadurch die neue Soll-Fahrtrichtung in den 
Istwert übernommen wird.

Fazit: Bei zu schneller Fahrtrichtungsumkehr bremst der Decoder die Lok 
bis zum Stillstand herunter und fährt sie dann langsam in der 
Gegenrichtung an.


Diese Änderungen wurden von mir bisher nur im 14-Fahrstufen-Modus 
getestet. Die Änderungen wurden durch Kommentare gekennzeichnet. Die 
Rechte an diesem Programm bleiben selbstverständlich bei Maddax.

...

Autor: M. Dx (maddax)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

ich dachte nicht dass der alte Decoder noch bearbeitet wird, freut mich.
Da war ich wohl doch nicht ganz auf dem Holzweg.
Die Verbesserungen von Hannes Lux sind wohl sehr sinnvoll.
Das Berechnen der Rampen dem Compiler zu überlassen ist sehr praktisch, 
das kannte ich in ASM so noch nicht.
Das mit dem Copyright könnt Ihr natürlich inwischen vergessen.
Feel Free to Modify ;))

mfg maddax

Autor: Siegfried Saueressig (dieleena)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
@maddax  und alle mitwirkende
wäre gut, wenn hier oder unter einem neuen Beitrag das Projekt weiter 
betrieben würde.
Ich bin sehr daran interessiert, um mein großer Fuhrpark umstellen zu 
können.
Wichtig ist, das es auf dem DCC Protokoll basiert.
Gruß Siegfried
PS.
Guten Rutsch ins neue Jahr.

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Siegfried Saueressig wrote:
> Hallo,
> @maddax  und alle mitwirkende
> wäre gut, wenn hier oder unter einem neuen Beitrag das Projekt weiter
> betrieben würde.

Wird es doch, die letzte Änderung ist gerade mal drei Wochen her.

> Ich bin sehr daran interessiert, um mein großer Fuhrpark umstellen zu
> können.

Mach doch, die momentane Version müsste mit allen üblichen Motoren 
zurecht kommen. Evtl. etwas mit der PWM-Frequenz spielen.

Kannst ja bei der Gelegenheit auch mal die anderen Modi testen, mich hat 
nämlich nur der 14-Fahrstufen-Modus interessiert.

> Wichtig ist, das es auf dem DCC Protokoll basiert.

Ja sicher, was denn sonst? DCC ist nunmal der offene Standard.

> Gruß Siegfried
> PS.
> Guten Rutsch ins neue Jahr.

Dto, aber den Rutsch bitte nicht auf der Straße. ;-)

...

Autor: Siegfried Saueressig (dieleena)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Habe mich länger mit den Beiträgen befast.
werde den ATtiny2313 oder ATmega8 einsetzen, um Reserve zu erhalten.
Möchte noche eine Lastregelung und paar zusätzliche Funktionen(Ausgänge) 
einbauen.
Habe aber trotzdem eine Frage.
arbeitet der ATtiny2313 mit internem oder externem Quarz und ist 10MHz 
richtig?
schönes Wochenende
Gruß Siegfried

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> arbeitet der ATtiny2313 mit internem

jain... (sowohl intern als auch extern)

> oder externem

jain... (sowohl intern als auch extern)

> Quarz

jain... (internen Quarz gibt es nicht)

> und ist 10MHz richtig?

jain... (10MHz intern gibt es nicht)

Es gibt folgende Möglichkeiten:

- Der im Werkszustand ist intern mit 8MHz RC-Oszillator durch 8 geteilt, 
also 1MHz Taktfrequenz.

- Interner Takt mit RC-Oszillator mit einem durch 2 teilbaren Bruchteil 
von 8MHz nach Verändern der CKDIV8-Fuse.

- Interner Quarzgenerator mit einem externem Quarz mit einer Frequenz 
Deiner Wahl nach Verändern der CKSELx- und CKDIV8-Fuses.

- etliche andere Möglichkeiten, wie externer Takt, externer 
RC-Oszillator oder externer Keramik-Resonator...

Das beste ist, Du schaust einfach mal in das Datenblatt des ATtiny2313, 
da stehen alle Möglichkeiten drin.

Es wäre auch schön, wenn Du den Quellcode Deines Programms hier 
veröffentlichst, wenn es fertig ist, dann haben Alle was davon.

Viel Erfolg...

...

Autor: Siegfried Saueressig (dieleena)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo guten morgen,
Muß den Mega8 einsetzen, da für die Lastregelung einen AD Eingang 
benötigt wird.
Werde eine externen Quarz mit 10 MHz einsetzen.

dieses
"Es wäre auch schön, wenn Du den Quellcode Deines Programms hier
veröffentlichst, wenn es fertig ist, dann haben Alle was davon."
geht in Ordnung. Benötige aber noch einige Zeit, um darüber zu 
berichten.

Gruß Siegfried

Autor: Gerti (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Eure Beiträge sind höchst interessant,ich fange gerade erst mit 
Modellbau an und habe ein paar fragen.
Befehle werden von der Zentrale gesendet.
Gibt es Systeme die auch von der Lok zur Zentrale senden können??

Autor: Hannes Lux (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier habe ich was gesehen, was über WLAN gehen soll:

Beitrag "Sound für meine Modelleisenbahn selber bauen ?"

...

Autor: Willi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
gibt es inzwischen auch schon als Norm.

siehe mal hier:[[http://www.opendcc.org/info/railcom/railcom.html]]

Gruß Willi

Autor: Gerti (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Anregungen
Man braucht es also nicht neu erfinden.
Railcom ist aber verdammt kompliziert,ebenso Wlan
Ich denke an einfachere Möglichkeiten
1.IR-Verbindungen reichweite Ca.10m reflektiert durch weiße Zimmerdecke
  kenn ich vom ASURO-Robot
2.RFM12 Funkmodule
3.Spannungsversorgung über Induktivität 24V.
  RS232-Impulse Senden +5V(29V),Empfangen -5V(19V)

Autor: John Schmitz (student)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gerti wrote:
...
> Railcom ist aber verdammt kompliziert,ebenso Wlan

Nee ! WLAN ist eben gar nicht kompliziert:

Man steuert die WLAN Module vom Controller im Handheld und in der Lok, 
wobei die Schnittstelle für die Daten selbst eine RS232 sein kann!
Die Module sorgen dafür, dass die Übertragung gesichert abläuft 
(Stichwort Transparente Datenübertragungsschicht) - man braucht sich 
also um OSI-Schicht 1 - 3 nicht zu kümmern, lediglich in den Telegrammen 
IP-Adresse mit geben, die einer Lok zugeordnet sind ... etc.

Und man hat 5 Mbit/s in beiden Richtungen. Da kann man sogar 
Fernsehbilder aus dem Lokführerstand ruckelfrei auf eine Leinwand 
(Notebook) aus der Lok übertragen. Anwendungen ohne Grenzen!

Kompliziert ist eben Railcom, da hier erst einmal der semiduplexe Kanal 
(durch Slots und Master Slave Betrieb)geschaffen werden muss, was 
zusätzlich dadurch erschwert wird, dass die Signale auf die 
Spannungsversorgung im Gleis über 500 Euro teure Booster aufmoduliert 
werden müssen ...! Das ist doch veraltete Technologie - von hinten durch 
die Brust. Wer schleust denn im Haus seine Daten über das Stromnetz wenn 
er WLAN mit 300Mbit/s kaufen kann ... und damit im Haus für eine 
entsprechende Funkabdeckung sorgt? Die Steckdose nimmt doch nur seine 
Mobilität.

DCC über die Schiene gibt es doch nur noch, weil die Hersteller ihre 
langwierige komplexe Eigenentwicklung schützen wollen - verheerend wenn 
der erste weg von DCC auf WLAN umsteigt. Dann brechen die Dämme ...!

Programmieren am Gleis - was so manche als die hohe Schule in DCC 
darstellen - ist doch bei Benutzung eines WLAN lächerlich einfach. Es 
geht sogar Programmieren während der Fahrt ....(Hihi)

Grüsse

Autor: John Schmitz (student)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fortsetzung:

Und was noch viel besser geht: Die permanente Rückmeldung, wo sich die 
Lok gerade im Gleis befindet:

Billige RFIDs unter der gesamten Anlage unter die Schwelle legen und ein 
RFID Scanner in die Lok ... und schon meldet die Lok über das WLAN 
permanent zurück, wo sie gerade ist. "Gleisbesetztmeldung" ist ein Wort 
das ins Archiv wandert ...!


Have Fun!

Autor: Willi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo John,

Programmieren während der Fahrt, geht auch problemlos mit DCC. Nennt 
sich POM.
Aber erzähl mal etwas zu Deiner WLAN Geschichte! Wie groß wird das? Was 
kostet das?
Gruß Willi

Autor: Andreas Gräler (djmetro)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
wie wäre es denn mit bluetooth bzw. zigbee? Sind recht kleine und 
günstige Module. Gibt es auch schon fertig für rs232.

Andi

Autor: John Schmitz (student)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Willi wrote:
> Hallo John,
>
> Programmieren während der Fahrt, geht auch problemlos mit DCC. Nennt
> sich POM.
> Aber erzähl mal etwas zu Deiner WLAN Geschichte! Wie groß wird das? Was
> kostet das?
> Gruß Willi

Ich nehme Avisaro WLAN Module. Sind leider recht teuer. Man bekommt aber 
auch Module für 60 Euro pro Einzelstück aus China.

Was meinst Du mit Wie groß wird das ?

Autor: Hannes Lux (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Was meinst Du mit Wie groß wird das ?

Er meint vermutlich, ob es in einer dreiachsigen Dampflok der Spurweite 
TT oder H0 Platz findet.

...

Autor: Willi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
genau das meine ich. Danke Hannes

Autor: John Schmitz (student)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hannes Lux wrote:
>> Was meinst Du mit Wie groß wird das ?
>
> Er meint vermutlich, ob es in einer dreiachsigen Dampflok der Spurweite
> TT oder H0 Platz findet.
>
> ...

Ich bastele momentan für IIm (LGB). Avisaro Module Abmessungen sind 
bekannt - passen eher nicht in kleinere Spurweiten.

Der Rest dürfte in SMD Technologie verkleinert reinpassen.

Verkleinerung auf H0 oder TT ist bei mir momentan kein Focus - LGB 
bietet mir reichlich Platz - sorry.

Autor: Michael A. (aim)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
John Schmitz wrote:
> Kompliziert ist eben Railcom, da hier erst einmal der semiduplexe Kanal
> (durch Slots und Master Slave Betrieb)geschaffen werden muss, was
> zusätzlich dadurch erschwert wird, dass die Signale auf die
> Spannungsversorgung im Gleis über 500 Euro teure Booster aufmoduliert
> werden müssen ...!

Wirklich??

http://www.opendcc.org/elektronik/booster2/booster2.html
http://www.opendcc.org/elektronik/xpressnet/railco...
http://www.lenz.com/techinfo/index.htm

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zum WLAN und der Größe eines WLAN-Chips:

http://www.sphinxcomputer.de/produktdb/documents/3...

Der Kasten ist 33,9 x 32,5 x 10,5 mm³ groß...

Autor: Willi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das erinnert mich so an die diskreten Digitalanfänge, da hatte jede Lok 
ihren Packwagen mit dem Dekoder.

Autor: John Schmitz (student)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www.lenz.com/techinfo/index.htm

Na klar geht das prinzipiell - aber mit welchem Aufwand, welchem Preis 
und welcher Bandbreite ....!

Nevertheless - ich bleibe dabei, die H0er interssieren mich ja gar 
nicht, bei mir passt immer alles in die Lok!

Ne LGB Lok zieht unter Last oder am Berg  2 - 3 A, bei 5 Loks auf der 
Anlage muss man die Booster schon wieder erweitern ... usw.

Wenn man die bidirektionale Kommunikation über Funk (z.B. über WLAN) 
abwickelt, kann man einen 30A DC Trafo (mit Sicherungen im Anschluss) 
ans Gleis legen ... - und gut ist!

Pro Lok kostet der Controller (AVR Mega 256) mit H-Brücke und ca. 16-24 
Ausgängen und Endstufen zum Schalten von Licht, Kupplung, etc. ca. 50 
Euro.

Einzig der Funk kostet ca. 100 Euro (noch!). Pro Lok also momentan 
geschätzt 150 Euro. Dafür habe ich aber nun 5 Mbit/s Bandbreite, 
beliebige Adressierbarkeit, keine blödsinnige Fx Programmierung mehr 
usw.

Dazu kommt entweder ein kommerzielles Sound Modul (SUSI Schnittstelle ?) 
oder ein selbstgebautes (mit eigenem Sound aufgespielt) an den 
Controller (ca. 20 Euro). Sound holt man sich aus den unzähligen YouTube 
Videos in allerbester Qualität ...! Kann man mit Audacity wunderbar 
mixen.

Have Fun

Autor: John Schmitz (student)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
StarterSet!

Ebay-Artikel Nr. 290291494085

Und dann kommen noch die Decoder dazu ... und will man 10 Loks auf der 
Anlage fahren wird 2ter Booster für 500 Euro fällig usw. ...!

Das will ich nicht zahlen!

Have Fun

Autor: Hannes Lux (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und was hat das alles mit Maddax' Tiny15-Lokdecoder (dem Betreff dieses 
Threads) zu tun?

...

Autor: Muetze (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Hannes,
du hast völlig recht !
hier ist dann etwas womit dieser thrad auch zu tun hat.

Kurz zu mir , bin Modelleisenbahner und realisiere gerade mein erstes
Digitaljahr in diesem Bereich.

Ich habe versucht einen günstigen Decoder zu entwickeln der sich
ich in die Wagon´s zwecks Steuerung der Beleuchtung einsetzten lässt, 
deswegen bin ich hier gelandet und auf Euer Projekt gestoßen.
Denn Digitalspannung mit Licht zu verbrauchen ist doch etwas
verschwenderisch. :-))

Da ich noch nie mit Assembler zu tun hatte, habe ich mich etwas schwer 
getan den Code zu verstehen.

Deshalb habe ich alles ein wenig ausformuliert.

1. Nach den ersten Versuchen hatte ich Erfolglos ausprobiert, den
   Decoder die 4 Stelligen Adressen beizubringen.
   Das ist beseitigt und Funktioniert soweit.

2. Wollte ich die Funktionen F1 bis F4 benutzen.
   Licht ein , event. Sound etc..
   Das hatte ich dann auch schnell realisiert aber die
   Steuerwagengeschichte war noch offen.

3. Wollte ich aber noch eine Fahrtrichtungsabhänige 
Steuerwagenbeleuchtung.
   Auch das konnte ich dank Eurem Code realisieren.
   Alles einstellbar in CV 28 ( der ist von Mir Angelegt worden )
   Wird CV 28 mit einer 2 in Dezimal gefüttert läuft er im 
Steuerwagenmodus
   ist es eine 4 dann sind die F1 bis F4 Tasten angewählt.

Ich habe den Decoder mit der Intellibox getestet und hier funktioniert 
alles einwandfrei.

Ach ja, die Programierungsquittung zur Zentrale, habe ich mit einem R 
von 180 Ohm zum Gleis ( ca 60 bis 80 mA ) Stromaufnahme realisiert.

Im moment ist er per Jumper codiert so das man auch einen Schalter 
etc...
unter den Wagen anbringen kann. Könnte mir auch vorstellen das ich einen
Port dafür zu opfern.

Na ja letztendlich bin ich Euch dankbar, das Ihr soviel Arbeit in dieses
Projekt gesteckt habt, und ich so zu meinen günstigen Funktionsdecoder 
gekommen bin.

Eine Platine habe ich noch nicht fertiggestellt, aber wenn Ihr wollt
kann ich diese irgendwann als eagle file bereitstellen.

Den Code habe ich zwecks Weitergabe an andere User mit angehängt ( TXT 
).

Danke an alle Beteiligten und Modellbahner

Gruß Muetze

Autor: Willi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Muetze,

genau dafür ist das Forum ja da, warum immer alles neu erfinden. Für 
Deine Wagenbeleuchtung kannst Du noch eine Menge aus Deinem Code 
rausnehmen. Hier mal eine Zubehördekoder Version Von mir, auch noch mit 
dem T15 und drei PWM gedimmte Ausgänge. Das läßt sich auch leicht wieder 
über eine Lokadresse steuern/programmieren 
[[http://www.toralfwilhelm.de/Bilder/T15Licht.asm]]. Ansonsten bin ich 
gerade beim Umsteigen auf Tiny25 bzw Tiny24. Preislich nimmt sich das 
nichts mehr und man hat Reserven im Programmspeicher. Ich hänge euch mal 
einen Codeschnippsel mit einer abgeänderten DCC Empfangsschleife ran. 
Der läuft nur noch über einen Timerinterrupt der alle 10us das DCC 
Signal abtastet, das geht bei fahrenden Dekodern mit Rad/Schiene 
Kontackt erheblich besser als die Int0/Timer Kombination. Der Code 
stammt aus meinem Lastgeregelten Tiny24 Dekoder, der macht gerade 
Fortschritte.

allen ein nettes WE
Willi

Autor: Siegfried Saueressig (dieleena)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo guten morgen,

Im Anhang habe ich den Schaltplan für meine Decoder Version.
Nutze einen "ATMEL AVR ATmega 8-16AU im TQFP 32 Gehäuse".

Folgende Optionen möchte ich haben.
Motor Treiber bis 1000 mA
2 Funktion Ausgänge für Lichtwechsel
4 Funktion Ausgänge für ???
Lastreglung
Kurzschluß/Uberlast Schutz
RailCom Unterstützung

Sollte sich ein Fehler eingeschlichen haben, so last es mich wissen.

Am Layout in ich noch am arbeiten. Größe etwa 27 x 17 mm
Gruß Siegfried

Autor: Hannes Lux (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Folgende Optionen möchte ich haben.
> Motor Treiber bis 1000 mA
> 2 Funktion Ausgänge für Lichtwechsel
> 4 Funktion Ausgänge für ???
> Lastreglung
> Kurzschluß/Uberlast Schutz
> RailCom Unterstützung

Du willst also gleich klotzen und nicht kleckern... ;-)
Hoffentlich übernimmst Du Dich dabei nicht.

> Sollte sich ein Fehler eingeschlichen haben, so last es mich wissen.

Eventuelle Fehler sind aufgrund der Auflösung und des Formates Deines 
Schaltplanes nicht erkennbar, da die Beschriftung der Leitungen nicht 
lesbar ist.

...

Autor: Siegfried Saueressig (dieleena)
Datum:
Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
Hallo guten morgen,
habe mal den Schaltplan (Eagle Version 3.55) hinzugefügt.
Gruß Siegfried

Autor: Willi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Siegfried,

kann mich Hannes nur anschließen, die Schaltungsdetails findet mann alle
im Netz. Die Software ist ein anderes Thema und da hast Du Dir richtig 
etwas vorgenommen! Das passt dann auch nicht mehr hier in diesen Fred. 
(Tiny15 DCC Dekoder)
Da ich momentan an einem ähnlichem Projekt arbeite, wobei ich eher 
Tiny24/25 anpeile (die Entwicklung läuft zufällig auf meinem mega8 
Testaufbau) kannst Du Dir ja einmal den Code ansehen. Da fehlt aber noch 
einiges, bzw. ist noch nicht mit eingebunden.
Gruß Willi

Autor: Hannes Lux (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@SS:

Hast Du die Schaltung selbst entwickelt oder von einer Vorlage 
abgezeichnet?

Da mir nicht angeschlossene Dioden aufgefallen waren, habe ich mal den 
ERC-Check gemacht. Eagle meint dazu:
EAGLE Version 4.13 Copyright (c) 1988-2004 CadSoft

Electrical Rule Check für E:/AVR/FORUM/DCC/Saueressig_1044009_DccDecoder_RailCom_ATmega8.sch am 23.02.2009 11:16:17 

WARNUNG: Seite 1/2: Nicht angeschlossener Pin: D6 -
WARNUNG: Seite 1/2: Nicht angeschlossener Pin: D6 +
WARNUNG: Seite 1/2: Nicht angeschlossener Pin: D7 -
WARNUNG: Seite 1/2: Nicht angeschlossener Pin: D7 +
WARNUNG: Seite 1/2: Nicht angeschlossener Pin: BR2 2
WARNUNG: Seite 1/2: Nicht angeschlossener Pin: BR2 1
WARNUNG: Seite 1/2: SUPPLY-Pin VCC überschrieben mit N$15
FEHLER: Seite 1/2: SUPPLY-Pin VCC mit mehr als einem Signal (VCC, N$15) überschrieben
WARNUNG: Nur 1 Pin an Netz SU_CLK
WARNUNG: Nur 1 Pin an Netz SU_DATA

 Kein Board geladen - Die Konsistenz ist nicht überprüft

    1 Fehler
    9 Warnungen

Den Rest habe ich nicht weiter überprüft, das hat auch damit zu tun, 
dass ich den Ansatz nicht kenne, also die Hintergründe der Pinzuordnung.

Müsste ich das Ding entwerfen, würde ich den Mega88 einsetzen, der hat 
auf Timer0 2 weitere PWMs, die sich hervorragend für die Motorbrücke 
nutzen lassen.

Wäre ich gehässig, würde ich jetzt fragen, warum Du keinen Mega2560 oder 
2561 einsetzt und gleich noch den Sound implementierst. Aber so gehässig 
bin ich nicht, daher stelle ich diese Frage nicht... ;-)

@Willi:
Wenn ich darf, schau ich da auch mal rein, nur so interessenhalber.

...

Autor: Siegfried Saueressig (dieleena)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Habe die Schaltung selbst entworfen. Einige Informationen habe ich aus 
dem Internet.
Im Schaltplan sind zur Zeit einige Bauteile noch nicht angeschlossen. 
Diese hat mit dem entwerfen des Layout zu tun. Layout ist zu 70% fertig.
Gruß Siegfried

Autor: Willi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Hannes: das mit dem Riesen AVR (in Bezug auf Programmspeicher)und dann 
1bit PWM Sound hab ich wirklich schon einmal überlegt. Meine S-Bahn 
Bimmel im Tiny2313 hört sich mächtig blechern an.
Gruß Willi

Autor: Hannes Lux (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Willi:

Die Bimmel der Schrankensteuerung braucht 2636 Bytes (für den Sound), 
wird vom Mega8 (8MHz intern) mit 8kHz Samplerate über die 8-Bit-PWM des 
Timer2 (31,5kHz PWM-Frequenz) ausgegeben und klingt halbwegs erträglich 
(die Highspeed-PWM (über PLL) eines Tiny85 klingt natürlich bedeutend 
besser). Die Schrankensteuerung ist aber bisher noch ohne DCC-Routinen. 
Irgendwann werde ich da aber noch die DCC-Routine meiner 
Tiny13-Einzelweichendecoder einbauen. Oder auch nicht... ;-)

Ist zwar alles OT, aber seit der WLAN-Geschichte ist der Thread sowiso 
im Eimer.

...

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Habe die Schaltung selbst entworfen.

Hm, warum sieht das dem LD-G-33 so verdammt ähnlich. Kleiner Tipp: ich 
würde 2 Pins der Brücke auf PWM-Ausgänge vom Atmel hängen.

Hans

Autor: Siegfried Saueressig (dieleena)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Eine Schaltung kann immer ähnlich aussehen. Fangen wir mal bei der 
Gleichrichtung einer Spannung an. 4 Dioden als Brücke, danach ein Elko 
und einen Keko. Natürlich habe ich mich auch umgesehen.
Es bleibt noch die Frage, wer von wem. Beispiel: Railcom Display
Leider kommt der Tipp zu spät. Leiterplatten sind gefertigt.
Gruß Siegfried

Autor: Sören (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bonjour!

Wie ich sehe hatte da jemand einen ähnlichen Gedanken wie ich. Ich habe 
einen Lokdecoder entwickelt mit dem ich meine LGB loks steuern kann. Das 
ganze ist noch höchst experimentell, aber meine Fortschritte lassen sich 
hier beobachten:
http://www.das-labor.org/wiki/Locodoco

Ich habe mich für die Funk-Variante entschieden, da diese den großen 
Vorteil von Rückmeldungen bietet. Sobald die Lokdecoder Software mal 
richtig funktioniert werde ich an der Positionsbestimmung und 
Weichensteuerung arbeiten.

Derzeit kann ich die Loks steuern und die Firmware via Funk neu flashen 
;)

Autor: fred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
hat jemand die Routine auch so, dass es nur in ein Register geschrieben 
wird? Um dann die Funktionen selber zuordnen zu können?
Dank

Fred

Autor: eraxiawhexy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
And btw u rock:) ur projects and works are cool. and ur website is 
really informative. learnt a lot from it:)
keep up the good work! cheers!:)
-Ukesh

Autor: marthafines (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Merry Christmas to all... and to all a good night.

Autor: Jonathan_Warren (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hello everyone.

My name is Jonathan, currently based in belgium,
I am both English and French native language,
just wanted to say hello and Looking forward to sharing information with 
all of you:-)

Autor: Borsti87 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

hat irgendwer einen Sourcecode für den Attiny15 Decoder ohne 
Motorsteuerung  mit vier einfachen Ausgängen oder kann mir sagen wie ich 
den Code ändern muss umm nur vier einfache Ausgänge zu erhalten?

Gruß
borsti87

Autor: Georg Ziegler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Borsti87,

schau mal auf meiner Heimseite unter

-> Eisenbahnmodellbau
     -> Funktionsdec. ATtiny44/45
         -> Heikos Quellcode

ob Du damit was anfangen kannst.

Oder meinen Code für einen ATtiny15 Lokdecoder abändern, die Auswertung 
fuer F1-F8 steht in ftion und ftion1 (Sprungadresse f1f8: wird nicht 
benutzt)
sbi  PORTB,2   ;setzt den Ausgangspin
cbi  PORTB,2   ;loescht den Ausgangspin


Viel Spass, Georg

Autor: Georg Ziegler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hab' die Heimseite vergessen,
hier:
http://g-zi.de

Autor: Sebastian G. (borsti87)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Georg,

da ich noch nicht so lange beim AVR-Programmieren bin Proge ich momentan 
im Assembler. Ich habe mir deshalb mal den Quellcode von deinen 
Lokdecodern auf Basis des Attiny15 kopiert und versucht mit dem 
AVR-Studio 4.18 zu assemblieren doch schon im unveränderten zustand 
bekomme ich 10 Fehler???

Gruß borsti87

Autor: Georg Ziegler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Borsti87,

stell mal beim AVR-Studio bei den Assembler Options AVR Assembler auf 
Version 1.
Na ja, ist schon eine Weile her als ich den Code geschrieben habe...


Viel Spass, Georg

Autor: Sebastian G. (borsti87)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
Immer noch ein Fehler "Include file 'avr_asm\tn15def.inc' not found" 
wenn ich es auf 'tn15def.inc' ändere findet er zwar das Include file 
wirft mir aber 8 fehler aus.

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sebastian G. schrieb:
> Hi,
> Immer noch ein Fehler "Include file 'avr_asm\tn15def.inc' not found"
> wenn ich es auf 'tn15def.inc' ändere findet er zwar das Include file
> wirft mir aber 8 fehler aus.

Dann sorge doch einfach dafür, dass für die Include-Datei ein gültiger 
Path angegeben wird. Georg hat nunmal seine Ordner anders organisiert 
als Du.

...

Autor: Sebastian G. (borsti87)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
WIE GESAGT:
Sebastian G. schrieb:
> wenn ich es auf 'tn15def.inc' ändere findet er zwar das Include file
> wirft mir aber 8 fehler aus.

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sebastian G. schrieb:
> WIE GESAGT:
> Sebastian G. schrieb:
>> wenn ich es auf 'tn15def.inc' ändere findet er zwar das Include file
>> wirft mir aber 8 fehler aus.

Dann analysiere doch einfach mal die Fehler. Mache einen Doppelklick auf 
jede Fehlerzeile in der Fehlerliste und schon springt der Cursor in die 
Programmzeile mit dem Fehler. Nun noch die Fehlermeldung lesen (und 
übersetzen), dann den Fehler in der markierten Quelltextzeile 
einkreisen. Der kausale Zusammenhang zwischen Fehlermeldung und 
markiertem Quelltext erlaubt nämlich sehr exaktes Einkreisen der Fehler. 
Dabei aber immer mit der ersten Fehlermeldung beginnen, oftmals sind die 
Folgefehler nämlich nur Irrtümer und resultieren aus dem ersten Fehler.

...

Autor: Georg Ziegler (gzi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
mein Fehler,
als ich den Decoder geschrieben habe, habe ich immer zwischen ATtiny15 
und AT90S4433 hin und her geschaltet und dann die Include Dateien 
angepasst um nicht immer wieder Änderungen im Source vornehmen zu 
müssen.

Es gibt zwei Unterschiede zwischen den beiden Prozessoren:
die Definition des Timers (4433=OCR1L) und der Hardwarestack (4433 hat 
keinen).

Ich habe die Includes mit dem Zusatz _mod versehen und die Sourcen 
angepasst, das Datum der Erstellung habe ich nicht geändert da ich am 
Source nichts geändert habe.

http://g-zi.de/Decoder/ATtiny15/2pin.asm
http://g-zi.de/Decoder/ATtiny15/tn15def_mod.inc

http://g-zi.de/Decoder/AT90S4433/3pin4433.asm
http://g-zi.de/Decoder/AT90S4433/4433def_mod.inc


Viel Spass, Georg

Autor: Georg Ziegler (gzi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hatte beim FREMO Treffen 2002 in der Uni Twente in Enschede einen 
Vortrag über Decoderbau gehalten. Da beschreibe ich u.A. das Decodieren 
des NMRA-DCC Signals anhand eines PIC12CE519.
Der Vortrag ist zu finden unter:
http://g-zi.de/Decoder/Presentation_DCC-Decoder/img0.html


Viel Spass, Georg

Autor: Sebastian G. (borsti87)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich würde gerne den Code von Muetze nutzen und dort alles rauswerfen 
wollen was die Funktionsarten Steuerwagendecoder und Motordecoder 
angeht.

Gruß
Sebastian

Autor: Sebastian G. (borsti87)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sebastian G. schrieb:
> Hi,
>
> ich würde gerne den Code von Muetze nutzen und dort alles rauswerfen
> wollen was die Funktionsarten Steuerwagendecoder und Motordecoder
> angeht.
>
> Gruß
> Sebastian

kann mir wer dabei helfen ich bekomms irgendwie nicht zum Laufen

Autor: Muetze (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
@ Sebastian G.

Hallo Sebastian,
ich habe die ursprüngliche Version des von mir
geänderten Codes überdacht und ein Multifunktionsdecoder
daraus entwicklet.

Er beinhaltet folgende Funktionen, mit CV Anwählbar:

Steuerwagen , Wagonbeleuchtung F1 bis F4 , Hausbeleuchtung
inkl. Reklame blinken , Baustellen oder Bahnübergangsblinken ,
Blaulicht , Warnlicht , Blinker , Fernlicht für PKw´s und vieles mehr.

Es ist sozusagen jetzt ein vielseitiger Funktionsdecoder geworden.

Ich habe alles Dokumentiert damit man meine Gedankengänge gut
nachvollziehen kann.

Der Decoder behherscht die 4 Stellige Adressierung und ist von mir mehr 
als
100 x nachgebaut und getestet worden.

Auf dem Programiergleis quittiert er mit einem F1 und F2 blinken , was 
die
Zentrale nicht mitbekommt da die 60mA für die Rückmeldung an die 
Zentrale nicht erreicht werden. Ein zuschaltbarer Widerstand auf den F1 
Ausgang
behebt das Problem, oder man giebt sich mit der optischen Rückmeldung 
zufrieden.

Die Steuerwagenfunktion kannst du ja abschalten.

Ich hoffe der Code gefällt Dir und Deine Frage ist somit
beantwortet.

Gruß und viel Spass beim Nachbau

Autor: Muetze (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
@ Sebastian G

hier noch das Eagle file und die AWS Datei, sowie ein 3D Bild der
Platine für die SMD Version ( Bauteilekoste so ca. €3,- pro Decoder).

Kenntnisse im Platine Ätzen und löten sollten schon vorhanden sein.

Die Platine kann mit einer Externen Stromversorgung versorgt werden,so
dass man im Stationärbetrieb nicht so viel Digitalspannung verbrät.

Viel Spass beim nach oder Umbau

Gruß Muetze

Autor: Muetze (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Sebastian,

Ich habe das Eagle File noch mal überarbeitet und eine
Version entwickelt die nur mit dem DCC Signal auskommt oder
die man Stationär mit Spannung versorgt und das DCC Signal
( nur das Plus ) zum ansteuern nimmt.

Bei Einbau in Loks oder Wagons mus das DCC Signal auf die
mit < 20 ~ Bezeichneten Pole gelegt werden.

Ansonsten den auf dem Bild mit R1 bezeichneten 220K Widerstand auf R2 
löten, dann das DCC Kabel auf den mit " DCC bei Ext. V " bezeichneten 
PAD löten. Den Gleichrichter an den mit " < 20 ~ " Bezeichneten Polen an 
einen Trafo anschließen. So wird Digitalspannung gespart.

Ich habe bei meinen Wagons bis zu 15 LED´s eingebaut,
da hat die Schaltung so um die 7,4 mA verbraucht.

Die Ausgänge habe ich noch mal Bezeichnet mit F1 bis F4
dann ist es Leichter bei dem Anlöten die richtigen PAD´s zuzuordnen.

Der Plus von den LED´s kommt auf den gemeinsamen Pol der mit " VCC "
gekennzeichnet ist, der Minus wird jeweils geschaltet PAD F1 bis F4.
Die Wiederstände sind so berechnet das LED´s dort direkt angeschlossen 
werden können ( paralell )möchte man mit Glühbirnchen arbeiten muss
der Wiederstand verringert werden, in der vorhandenen Schaltung beträgt 
er 1,5K.

So jetzt hast Du alles auf dem neusten Stand.
Weiter bin ich noch nicht gekommen.

Gruß Muetze

Autor: Andreas Gräler (djmetro)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich bin auf der Suche nach einem Funktionsdecoder mit folgenden 
Eigenschaften:

- Kurze und Lange Adresse (CV1, CV17/18)
- Functionmapping, also die F-Tasten beliebig den Ausgängen zuordnen
- fahrtrichtungsabhängig (FL/FR)
- Dimmen der Ausgänge
- Leuchtstoffröhren Effekt bei F1-Fx konfigurierbar
- ggf. auch Analogbetrieb

Erfüllt das evtl. schon einer oder hat so einen jemand in Arbeit?

Andi

Autor: Robert Hache (robert1980)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Entschuldigung das ich den alten Beitrag wieder rauskrame.

Ich möchte gern das Programm von Muetze mit Tiny15 zu Versuchszwecken 
auf einen ATmega32 spielen.

Ich habe dazu die Timer  und das Programm geändert, so das ich in der 
Ausgabe  keine Fehler erhalte. Lediglich 4 Warnungen bezüglich der 
Verwendung der Register ab R26 bis R29.


Ich vermute das es ein Problem mit dem Takt des µC gibt. Der Tiny15 hat 
ja 1,6MHZ internen Takt welcher im Programm für die Timer verwendet 
wird.

Wie passe ich dies am Besten an für ATMega32 oder gibt es ein generelles 
Problem bei der Verwendung eines ATM32.

Vielen Dank

MFG

Robert

Autor: Sebastian G. (borsti87)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

erst mal ein Frohes neues Jahr 2011 ;-)
so ich wollte mal horchen ob sich hier schon einer einen Kopf darum 
gemacht hat das der Tiny15 jetzt vom Tiny25 quasi abgelöst wurde.
Welchen Tiny25 sollte man nehmen den mit 10MHz oder mit 20MHz?
Und hat sich schon wer daran gemacht das Programm anzupassen?

MfG
Sebastian

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sebastian G. schrieb:
> Hi,
>
> erst mal ein Frohes neues Jahr 2011 ;-)

Jou, Frohes und Gesundes...

> so ich wollte mal horchen ob sich hier schon einer einen Kopf darum
> gemacht hat das der Tiny15 jetzt vom Tiny25 quasi abgelöst wurde.
> Welchen Tiny25 sollte man nehmen den mit 10MHz oder mit 20MHz?

Ist diese Frage Dein Ernst?
Welche Taktfrequenzen kann der Tiny25 ohne externen Taktgeber?
Welche Rolle spielt es dann, ob der Tiny25 10 oder 20 MHz Takt verträgt?

> Und hat sich schon wer daran gemacht das Programm anzupassen?

Nicht schwätzen, sondern machen.

>
> MfG
> Sebastian

...

Autor: ftelektro (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Das ist meine variante.

Autor: ftelektro (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
In der App-note 501 von Atmel wird alles beschrieben,welche 
einstellungen und Befehle man verwenden mus.

Autor: Harald Kollmann (carbonblack)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bin über einen 5V Regler im SOT-23 Gehäuse gestolpert. Damit lassen 
sich evtl. noch ein paar mm^2 einsparen:

TA 78L 05F TOSHIBA (z.B. €0.53 bei C... )

Noch hab' ich den Thread nicht durchgeackert. Wird für die 
Signalübertragung die Versorgungsspannung umgepolt oder kurz 
ausgeschaltet?

Her(t)zliche Grüße
Harald

Autor: Sebastian G. (borsti87)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
ich habe jetzt mal Mützes Multifunktiondecoder Programm versucht etwas 
um zubauen. Und zwar will ich das beim schreiben der CV 8 diese zwar 
weiterhin beibehalten wird aber alle CV's in den 'Auslieferungszustand' 
zurückgesetzt werden. Dazu habe ich folgendes geändert:
Servicemode:        ; Programmiermodus CV-Lesen, Schreiben, Bitmanipulation
    
    ldi TEMP1, 0b01110100    ; lade Abbild 01110100 in TEMP1 /  prüfe Funktionscode
    cp ByteA, TEMP1      ; vergleiche ByteA und TEMP1 ob gleich / auf CV Verify Byte
    breq PRGVERIFY      ; wenn ByteA und TEMP1 gleich , dann springe zu PRGVERIFY / Verifizierung
    ldi TEMP1, 0b01111100    ; lade Abbild 01111100 in TEMP1 /  prüfe Funktionscode
    cp ByteA, TEMP1      ; vergleiche ByteA und TEMP1 ob gleich /  auf CV Write Byte
    breq PRGWRITE        ; wenn ByteA und TEMP1 gleich , dann springe zu PRGWRITE / Schreiben
                   ; Prüfung auf Reset 
    in   TEMP1, TIFR      ; kopiere TIFR nach TEMP1 / hole Timer Interuptflag
    sbrs TEMP1, TOV1      ; Wenn Timer Counter 1 Resetzeit abgelaufen dann überspringe den nächsten Befehl / und kein Programmierbefehl
    rjmp MAIN            ; springe zu Main / Endlosschleife
    rjmp RUN            ; springe zu RUN / setze Timer auf RUN-Werte
    
PRGVERIFY:
  mov TEMP1, ByteB      ; kopiere ByteB nach TEMP1 / setze Lese-Adresse
    rcall readEEPROM      ; springe zu readEEPROM / lies
    cpse TEMP2, ByteC      ; vergleiche TEMP2 und ByteC und springe wenn gleich / und vergleiche
    rjmp main          ; wenn gleich dann springe zu Main / Endlosschleife
    sbi  PortB, PB3      ; setze einen Motorausgang / Quittung an Zentrale ( min 60mA Verbrauch )
    rjmp PRGACK          ; springe zu PRGACK 
    
PRGWRITE: 

  ldi TEMP1, 0b00000110    ; lade Abbild 00000110 in TEMP1 /  prüfe Funktionscode
    cp ByteB, TEMP1      ; vergleiche ByteB und TEMP1 ob gleich /  auf Schreib-Adresse CV Versions ID
    breq PRGACK          ; wenn ByteB und TEMP1 gleich , dann springe zu PRGACK / beende Schreiben wenn gleich
    ldi TEMP1, 0b00000111    ; lade Abbild 00000111 in TEMP1 /  prüfe Funktionscode
    cp ByteB, TEMP1      ; vergleiche ByteB und TEMP1 ob gleich /  auf Schreib-Adresse CV Hersteller ID
    breq CVRESET        ; wenn ByteB und TEMP1 gleich , dann springe zu CVRESET / CV in Auslieferungszustand wenn gleich     ;PRGACK          ; wenn ByteB und TEMP1 gleich , dann springe zu PRGACK / beende Schreiben wenn gleich
    ldi TEMP1, 0b00001000    ; lade Abbild 00001000 in TEMP1 /  prüfe Funktionscode
    cp ByteB, TEMP1      ; vergleiche ByteB und TEMP1 ob gleich /  Schreib-Adresse CV Hersteller Typ
    breq PRGACK          ; wenn ByteB und TEMP1 gleich , dann springe zu PRGACK /  beende Schreiben wenn gleich    
    cp  PRGCHECK, ByteD     ; vergleiche ByteD und PRGCHECK ob gleich / (XOR-Byte)
    brne PRGWRACK        ; wenn ByteD und PRGCHECK ungleich , dann springe zu PRGWRACK / springe wenn ungleich
    mov TEMP1, ByteB      ; kopiere ByteB nach TEMP1 /  setzte Schreib-Adresse
    mov TEMP2, ByteC      ; kopiere ByteC nach TEMP2 /  hole Daten
    rcall writeEEPROM     ; springe zu writeEEPROM / schreibe ins EEPROM
  rjmp PRGWRACK           ; springe zu PRGWRACK

 CVRESET:                   ; Zurücksetzen der CV's in Auslieferungszustand

   ldi TEMP1,0b00000000    ; lade 00000000 in TEMP1 / setze Schreib-Adresse für CV1
  ldi TEMP2,0b00000011    ; lade 00000011 in TEMP2 / hole Daten für CV1
  rcall writeEEPROM      ; springe zu writeEEPROM / schreibe ins EEPROM
   ldi TEMP1,0b00000001    ; lade 00000001 in TEMP1 / setze Schreib-Adresse für CV2
  ldi TEMP2,0b00000000    ; lade 00000000 in TEMP2 / hole Daten für CV2
  rcall writeEEPROM       ; springe zu writeEEPROM / schreibe ins EEPROM
  ldi TEMP1,0b00000010    ; lade 00000010 in TEMP1 / setze Schreib-Adresse für CV3
  ldi TEMP2,0b10000000    ; lade 10000000 in TEMP2 / hole Daten für CV3
  rcall writeEEPROM       ; springe zu writeEEPROM / schreibe ins EEPROM
    ldi TEMP1,0b00000011    ; lade 00000011 in TEMP1 / setze Schreib-Adresse für CV4
  ldi TEMP2,0b10000000    ; lade 10000000 in TEMP2 / hole Daten für CV4
  rcall writeEEPROM       ; springe zu writeEEPROM / schreibe ins EEPROM
    ldi TEMP1,0b00000100    ; lade 00000100 in TEMP1 / setze Schreib-Adresse für CV5
  ldi TEMP2,0b10000000    ; lade 10000000 in TEMP2 / hole Daten für CV5
  rcall writeEEPROM       ; springe zu writeEEPROM / schreibe ins EEPROM
    ldi TEMP1,0b00000101    ; lade 00000101 in TEMP1 / setze Schreib-Adresse für CV6
  ldi TEMP2,0b01101001    ; lade 01101001 in TEMP2 / hole Daten für CV6
  rcall writeEEPROM       ; springe zu writeEEPROM / schreibe ins EEPROM

    ldi TEMP1,0b00010000    ; lade 00010000 in TEMP1 / setze Schreib-Adresse für CV17
  ldi TEMP2,0b11001000    ; lade 11001000 in TEMP2 / hole Daten für CV17
  rcall writeEEPROM       ; springe zu writeEEPROM / schreibe ins EEPROM
    ldi TEMP1,0b00010001    ; lade 00010001 in TEMP1 / setze Schreib-Adresse für CV18
  ldi TEMP2,0b10001010    ; lade 10001010 in TEMP2 / hole Daten für CV18
  rcall writeEEPROM       ; springe zu writeEEPROM / schreibe ins EEPROM  
    ldi TEMP1,0b00010010    ; lade 00010010 in TEMP1 / setze Schreib-Adresse für CV19
  ldi TEMP2,0b00000000    ; lade 00000000 in TEMP2 / hole Daten für CV19
  rcall writeEEPROM       ; springe zu writeEEPROM / schreibe ins EEPROM
    
  ldi TEMP1,0b00011000    ; lade 00011000 in TEMP1 / setze Schreib-Adresse für CV25
  ldi TEMP2,0b00110000    ; lade 00110000 in TEMP2 / hole Daten für CV25
  rcall writeEEPROM       ; springe zu writeEEPROM / schreibe ins EEPROM
    ldi TEMP1,0b00011001    ; lade 00011000 in TEMP1 / setze Schreib-Adresse für CV26
  ldi TEMP2,0b00001010    ; lade 00001010 in TEMP2 / hole Daten für CV26
  rcall writeEEPROM       ; springe zu writeEEPROM / schreibe ins EEPROM  
    ldi TEMP1,0b00011010    ; lade 00011000 in TEMP1 / setze Schreib-Adresse für CV27
  ldi TEMP2,0b00000100    ; lade 00000100 in TEMP2 / hole Daten für CV27
  rcall writeEEPROM       ; springe zu writeEEPROM / schreibe ins EEPROM
    ldi TEMP1,0b00011011    ; lade 00011011 in TEMP1 / setze Schreib-Adresse für CV28
  ldi TEMP2,0b00000011    ; lade 00000011 in TEMP2 / hole Daten für CV28
  rcall writeEEPROM       ; springe zu writeEEPROM / schreibe ins EEPROM
    ldi TEMP1,0b00011100    ; lade 00011000 in TEMP1 / setze Schreib-Adresse für CV29
  ldi TEMP2,0b00000000    ; lade 00000000 in TEMP2 / hole Daten für CV29
  rcall writeEEPROM       ; springe zu writeEEPROM / schreibe ins EEPROM


PRGWRACK: 

  mov PRGCHECK, ByteD    ; kopiere ByteD nach PRGCHECK /  Datencheck
    sbi  PortB, PB3      ; setze einen Motorausgang / Quittung an Zentrale ( min 60mA Verbrauch )
      
PRGACK:              ; Acknowledge

    cli                  ; Globales Interrupt Flag auf 0 / alle Interrupts ausschalten
    ldi  TEMP1, ACKTime     ; lade ACKTime in TEMP1 / lade den Timer/Counter1
    ldi  TEMP1,0b00001100    ; lade Abbild 00001100  in TEMP1 /  1 1 0 0 CK/128 für Resetzeit und ACK
    out  TCCR1,TEMP1        ; Lade Abbild von TEMP1 nach Timer Counter Register1 
    out  TCNT1, TEMP1       ; Lade Abbild von TEMP1 nach TimerCounter1 / setze Zeit für Acknowlege
    in   TEMP1, TIFR      ; Lade Abbild von Timer Counter InterruptFlag nach TEMP1 / hole Timer Interuptflag
    sbrs TEMP1, TOV1      ; wenn Timer counter overflowFlag =1 dann Ackzeit abgelaufen
    rjmp PC-2          ; Programmcouter um 2 zurück / Schleife
    ldi  TEMP1,0b00000110   ; lade Abbild 00000110 in TEMP1 /  lösche Timer Interupts
    out  TIFR, TEMP1    ; Lade Abbild von TEMP1  nach Timer Counter InterruptFlag
    clr TEMP1          ; lösche TEMP1
    out PortB, TEMP1        ; lade Abbild von TEMP1 nach PortB / lösche Motorausgang
    sei                    ; alle Interrupts wieder einschalten / auf 1        
    rjmp MAIN            ; springe zu Main / Endlosschleife

Neu ist dabei Hauptsächlich das Label CVRESET und der zugehörige Aufruf 
im Label PRGWRITE.
Mein Problem ist nur, dass nach dem CVRESET kein Acknowledge erzeugt 
wird und ich nicht genau weis warum.
Ein anderes Problem ist noch das ich beim lesen der CV's ebenfalls kein 
Acknowledge bekomme.
Kann mir da wer weiter Helfen?

MfG
Sebastian

Autor: Sebastian G. (borsti87)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Mütze

Kannst du mir bitte sagen was ich tun muss damit ich den 
Reversierbetrieb wieder ins Programm bekomme, um im Steuerwagenbetrieb 
die beiden Ausgänge für FL zu tauschen?
Und ob es eine einfache Möglichkeit gibt das Neonflackern nicht nur beim 
ersten Start des Dekoder bei schon betätigte Funktion gibt, sondern auch 
beim einschalten der jeweiligen Funktion im laufnden Betrieb?

Gruß
Sebastian

Autor: Sebastian G. (borsti87)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sebastian G. schrieb:
> @Mütze
>
> Kannst du mir bitte sagen was ich tun muss damit ich den
> Reversierbetrieb wieder ins Programm bekomme, um im Steuerwagenbetrieb
> die beiden Ausgänge für FL zu tauschen?

so das habe ich schon wie folgt gelöst:

Die Auskommentierung hier bei den letzten beiden Code-Zeilen enfernt
RESET:

[...]

ldi TEMP1, EELongADR      ; Lade EELongADR in TEMP1 / Lange Adresse 
    rcall readEEProm      ; Springe zu readEEprom
    bst Temp2, 5        ; Lade aus TEMP2 BIT 5 / Lange Adresse ( CV29 )
    bld DCCReg, LongADR      ; schreibe T-Bit in DCCReg, LongADR ( BIT 7 )
    bst Temp2, 0          ; Lade aus TEMP2 BIT 0 für Reversierbetrieb ( CV29 )
    bld DCCReg, RevDir      ; schreibe T-Bit in DCCReg, RevDir ( BIT 6 )

[...]

und das Label Steuerw um die Überprüfung des DCCReg auf Reversierbetrieb 
wie folgt ergänzt
Steuerw:    

  cbr Temp1,0b00000011
  sbrc stop,7        ; wenn das Bit 6 auf 1 ist
  rjmp pc+16        ; springe im Programm Counter 15 vor
  sbrs DCCReg,FL       ; Wenn Fahrtlicht Bit = 1 dann
  rjmp PC+14        ; springe im Programm Counter 13 vor
  sbrs stop,6        ; wenn das Bit 6 im Sopregister auf Null steht
  rjmp pc+12        ; springe im Programm Counter 13 vor
  sbrc DCCReg,DIR     ; Wenn Fahrtrichtung Bit Rückwärts 1 dann
  rjmp PC+6        ; springe im Programm Counter 4 vor
;********** FL Vorwärts **********************************************************************
  sbrc DCCReg,RevDir      ; wenn RevDir = 0 überspringe nächste Anweisung
  sbr TEMP1, 0b00000010   ; sonst Fahrtrichtung Reversiert
  sbrs DCCReg,RevDir      ; wenn RevDir = 1 überspringe nächste Anweisung
  sbr Temp1,0b00000001    ; sonst Fahrtrichtung 'Standard'
  rjmp PC+5        ; springe im Programm Counter 3 vor
;********* FL Zurück *************************************************************************
  sbrc DCCReg,RevDir      ; wenn RevDir = 0 überspringe nächste Anweisung
    sbr Temp1,0b00000001    ; sonst Fahrtrichtung Reversiert
  sbrs DCCReg,RevDir      ; wenn RevDir = 1 überspringe nächste Anweisung
  sbr Temp1,0b00000010    ; sonst Fahrtrichtung 'Standard'
;********* FL Aus ****************************************************************************  
   ret         ; springe zu Main / Endlosschleife

So nun habe ich aber noch fesgestellt das der Betrieb mit langer Adresse 
noch nicht so richtig funktioniert, werd mir das noch mal anschauen, bin 
aber auch hier weiterhin für Hilfe dankbar ;-)

MfG
Sebastian

Autor: Sebastian G. (borsti87)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sebastian G. schrieb:

> So nun habe ich aber noch fesgestellt das der Betrieb mit langer Adresse
> noch nicht so richtig funktioniert, werd mir das noch mal anschauen, bin
> aber auch hier weiterhin für Hilfe dankbar ;-)

Das Problem lag wohl nicht am Programm als mehr an meinem duseligen 
Twin-Center das es nicht gebacken bekommt ordentlich lange Adressen  zu 
Programmieren.

Gruß
Sebastian

Autor: Sebastian G. (borsti87)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Sebastian G. schrieb:
> Mein Problem ist nur, dass nach dem CVRESET kein Acknowledge erzeugt
> wird und ich nicht genau weiß warum.
> Ein anderes Problem ist noch das ich beim lesen der CV's ebenfalls kein
> Acknowledge bekomme.
> Kann mir da wer weiter Helfen?

Sebastian G. schrieb:
> Und ob es eine einfache Möglichkeit gibt das Neonflackern nicht nur beim
> ersten Start des Dekoder bei schon betätigte Funktion gibt, sondern auch
> beim einschalten der jeweiligen Funktion im laufenden Betrieb?

Kann mir da keiner weiter helfen

Gruß
Sebastian

Autor: Volkmar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Sebastian G. schrieb:
> Sebastian G. schrieb:
>> Mein Problem ist nur, dass nach dem CVRESET kein Acknowledge erzeugt
>> wird und ich nicht genau weiß warum.

ich meine gelesen zu haben, daß hier das ACK vor dem Beschreiben der 
EEPROM-Zellen erfolgen muß und angenommen wird, daß die Werte erst nach 
einem Neustart des Dekoders übernommen werden. Das Beschreiben der 
vielen CVs/EEPROM-Zellen dauert einfach zu lang.

Gruß
Volkmar

Autor: Sebastian G. (borsti87)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Volkmar schrieb:
> ich meine gelesen zu haben, daß hier das ACK vor dem Beschreiben der
> EEPROM-Zellen erfolgen muß und angenommen wird, daß die Werte erst nach
> einem Neustart des Dekoders übernommen werden. Das Beschreiben der
> vielen CVs/EEPROM-Zellen dauert einfach zu lang.

Gibt es denn entweder eine Möglichkeit den Vorgang zu beschleunigen oder 
eine andere Möglichkeit eine Reset der CV-Werte in den 
"Auslieferungszustand" zu bewältigen.

Gruß
Sebastian

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

habe den Code erfolgreich auf einem ATTINY45 zum Laufen gebracht.
Ich möchte aber die Ausgänge invertieren - sprich Outputs sind low wenn 
eingeschaltet.
Frage: Hat das schon jemand probiert?
Vorab mal ein großes DANKESCHÖN!

Autor: Torsten Giese (wawibu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine Frage: Warum hast Du für den Funktionsdecoder 1206er Widerstände 
genommen? Wg der Last?

Überlege mir einen Schwung dieser Decoder zu bauen. Die Platinen werde 
ich dann wohl doppelseitig ausführen und herstellen lassen. Daher halt 
die Frage, ob man die Widerstände nicht auch in 0805 nutzen kann. Zum 
löten ist das ja nicht viel komplizierter :)

Muss gestehen, dass ich nicht den ganzen Thread gelesen habe - 
vielleicht war das schon mal diskutiert worden :/

Danke & Gruß,
Torsten

Autor: Torsten Giese (wawibu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ach ja - und dann noch eine Frage: Wie testet ihr die Decoder? Gibt es 
dafür spezielle Tools mit der man eine DCC-Zentrale "steuern" kann?

Ich hatte mal vor einiger Zeit selbst mal versucht einen Dekoder zu 
programmieren. Leider hat das dann im realen Betrieb nicht richtig 
funktioniert. Hatte seinerzeit aber auch "nur" eine Lenz-Zentrale, 
welche nun bei meinem Vater verbaut ist und fleißig genutzt wird :)

Danke & Grüße,
Torsten

Autor: Christoph Schoerner (schoerner)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
gibt es eigentlich schon neuigkeiten zu dem projekt vom Siegfried 
Saueressig
"DCC-Decoder m8lok"
Hat die Umsetzung funktioniert.
Danke für eine Antwort

Autor: Niklas Freeman (derniklas)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe den Dekoder auf Basis eines Attiny45 plus L272 nachgebaut und 
bekomme leider keine Rückmeldung, wenn ich ihn an meine Roco Multimaus 
anschließe und ansteuere.
Ich möchte gerne ausschließen, dass die von mir kompilierte hex Datei 
Fehler beinhaltet. Kann mir jemand die hex Datei für den Attiny45 
bereitstellen?
Welche Fusebits müssen im Vergleich zum Auflieferungszustand geändert 
werden?

Sind eigentlich im Quellcode Standard CV gesetzt?

Vielen Dank,
Niklas

Autor: Niklas Freeman (derniklas)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Nachtrag zu vorigem Post:
Die von mir kompilierte hex Datei basiert auf dem angehängten Quellcode, 
der hier weiter oben im Thread bereitgestellt wurde, siehe Anhang.

Ein Vergleich mit der Version für den AT15 zeigt, dass nur Registernamen 
und Ports getauscht worden sind. Die erhöhte Frequenz des At45 im 
Verlgeich zum At15 wurde nicht berücksichtigt. Deshalb habe ich auf 
Grundlage des weiter oben geposteten PDF (ATtiny15zu25.pdf) den At45 in 
den Kompatibilitätsmodus versetzt. Das Ergebnis ist, dass ich den At45 
nicht mehr mittels Programmer ansprechen kann.

Kann mir jemand helfen? Hat jemand Erfahrung mit dem Umstieg von 
Attiny15 zu Attiny25/45?

Bg,
Niklas

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Niklas Freeman schrieb:
> Kann mir jemand helfen?

Ich versuche es, obwohl ich es für sinnfrei halte, diese uralte auf 
Tiny15 optimierte Software auf einem Tiny45 laufen zu lassen. Denn unter 
Nutzung der Features des Tiny25/45/85 (zweiter Timer, bessere 
Hardware-PWM, höherer Controllertakt, ...) ließe sich das durch 
Neuprogrammierung bedeutend effizienter umsetzen.

Niklas Freeman schrieb:
> Das Ergebnis ist, dass ich den At45
> nicht mehr mittels Programmer ansprechen kann.

Ich vermute mal, Du hast die CKDIV8-Fuse nicht rausgenommen, nun 
klappert der Tiny45 im Kompatiblitätsmodus zu langsam für Deinen 
ISP-Takt. Du müsstest also mal mit dem ISP-Takt Deines Programmers auf 
unter 1/4 des Controllertaktes runter gehen. Ich kann mich da aber auch 
irren, habe zwar schon viele Tiny85 für Gartenbahn-Soundmodule 
(Dampf/Diesel) benutzt, aber noch keinen im T15-Kompatiblitätsmodus.

Niklas Freeman schrieb:
> Sind eigentlich im Quellcode Standard CV gesetzt?

Hast Du eigentlich in den von Dir geposteten Quelltext geschaut???
Was meinst Du, was das hier ist?:
;** hier beginnt das EEProm **  
.ESEG
.ORG $0000    

.db 0x01, 0x00  ; CV1 Adresse und CV2 StartSpeed
.db 0x80, 0x80  ; CV3 IncVAL und CV4 DecVal 
.db 0x80, 0x71  ; CV5 MaxSpeed  und CV6 OSCCAL
.db 0xFF, 0x01  ; CV7 Hersteller und CV8 Typ ID
.db 0xFF, 0xFF  ; CV9 Frei und CV10 Frei
.db 0xFF, 0xFF  ; CV11 Frei und CV12 Frei
.db 0xFF, 0xFF  ; CV13 Frei und CV14 Frei
.db 0xFF, 0xFF  ; CV15 Frei und CV16 Frei
.db 0x00, 0x02  ; CV17 HI-Byte und CV18 LO-Byte
.db 0x00, 0xFF  ; CV19 Consist und CV20 Frei
.db 0xFF, 0xFF  ; CV21 Frei und CV22 Frei
.db 0xFF, 0xFF  ; CV23 Frei und CV24 Frei
.db 0xFF, 0xFF  ; CV25 Frei und CV26 Frei
.db 0xFF, 0xFF  ; CV27 Frei und CV28 Frei
.db 0x00, 0xFF  ; CV29 Configuration Data und CV30 Frei    
Musst natürlich auch die EEP-Datei mit in den Controller übertragen...

...

Autor: Niklas Freeman (derniklas)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Morgen,
Danke für die Antwort.

Die CV Standardwerte habe ich mittlerweile auch gefunden, sie stehen 
halt ganz am Ende vom Code. Allerdings wird bei mir keine eep Datei beim 
Kompilieren erstellt.

Die CKDIV8-Fuse ist definitiv nicht das Problem, denn wenn ich nur diese 
Fuse ändere gibt es kein Problem.

Gruß,
Niklas

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Niklas Freeman schrieb:
> Allerdings wird bei mir keine eep Datei beim
> Kompilieren erstellt.

Wenn der Quelltext ein Eeprom-Segment enthält, sollte auch eine 
EEP-Datei assembliert werden. Ist dies nicht der Fall, dann bedienst Du 
Dein AVR-Studio falsch.

Niklas Freeman schrieb:
> Die CKDIV8-Fuse ist definitiv nicht das Problem, denn wenn ich nur diese
> Fuse ändere gibt es kein Problem.

Na denn ist's ja gut...

...

Autor: Andreas Bergmann (Firma: www.collion.de) (bergy) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nik schrieb:

> Ich werde mal mein Projektordner nach einigen anschaulichen Dateien
> durchforsten, muss aber noch anmerken, dass ich in diesem Forum wohl ein
> bisschen ein Exot bin, da ich in C programmiere und
> Silabs-Mikrocontroller (z.B. den C8051F310, siehe
> 
http://www.silabs.com/public/documents/tpub_doc/ds...)
> verwende. Diese Chips sind extrem leistungsfähig (bis zu 25 MIPS) bei
> bloss 5mA, verfügen selbst bei winzigen Massen (ab 3 x 3 mm) über ein
> grosses Repetoire an integrierter peripherer Hardware (PWM, ADC, SPI
> etc.) und können dank JTAG built-in-programmiert und debugged werden.
>
> Doch bevor ihr fragt: nein, ich werde nicht von Silabs gesponsert! :)
> Ich bin nur sehr begeistert von den kleinen Chips, das ist alles. Aber
> ich muss auch zugeben, dass ich noch nicht allzu viele andere Mikros
> genauer unter die Lupe genommen habe; ich lasse mir also gerne die
> Vorzüge der Amtel-Chips erklären. :)
>
> Gruss, Nik

Erst einmal bitte ich um Entschuldigung diesen Thread zu exumieren, aber 
mich würde interessieren ob NIK (Gast) hier noch zu erreichen ist.
Mich würde interessieren ob aus der Erfahrung mit den Silabs 8051 
Derivaten in Hinsicht auf DCC etwas erstanden ist auf dass man 
zurückgreifen könnte.
Leider überschneided sich DCC stark mit dem C-Compilerenvironment SDCC 
womit unter der Fülle an Links zu letzterem mögliche Spuren auf eine DCC 
Protokoll ziemlich untergehen...

Alle Sachdienlichen Hinweise werden mehr oder weniger vertraulich 
behandelt ;)

Gruß aus LA(ndshut)

Bergy

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.