Forum: Mikrocontroller und Digitale Elektronik Spannungsversorgung + Bootloader über 2 Adern


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Philipp L. (viech)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

Atmega16
AVRStudio
C-Code

Es geht um die Kommunikation + Programmierung + Spannungsversorgung über 
insgesamt 2 Adern.
Dabei lesen bereits eigene Modellbahndekoder das +-20V DCC-Signal vom 
Gleis aus und versorgen sich auch darüber.

Nun war das bisherige Konzept so, dass die Informationen während des 
Betriebs zwar vom Gleis kommen, der uC aber immer über einen Stecker 
programmiert+upgedated werden muss.

in meinem letzten Thread wurde ich dann auf das Thema "Bootloader" 
aufmerksam gemacht, weshalb ich nun das Tutorial auf dieser Seite 
durchgearbeitet habe.
https://www.mikrocontroller.net/articles/AVR_Bootloader_in_C_-_eine_einfache_Anleitung

Die Problemstellung ist:
UART benötigt 2Adern + ein gemeinsames Bezugspotential, welches ich 
nicht habe.

Anbei auch meine bisherige Schaltung der Signalanpassung+Versorgung zur 
weiteren Lösungsfindung.

Fragen:
Wie (Hardware+Software) würdet ihr eine Programmierung über die 2 Adern 
realisieren?
Das ganze muss bidirektional laufen, damit der zum programmieren 
ausgewählte Dekoder sich auch zurückmelden kann.
PS: Es hängen viele Dekoder (>50stk.) am Bus..

Mir fehlt dazu die Grundidee, da mir irgendwie eine Ader fehlt...
Der Controller muss sich während der Rückmeldung ja auch noch selbst 
versorgen..

Das einzige was mir im "Programmiermodus" einfällt:

Empfangen
Das empfangen kann dann mit der aktuellen Signalanpassung erfolgen ?
Dazu werden die beiden Adern zu:
1: TXD vom PC
2:GND
Das angepasste DCC-Signal wird zusätzlich auf RXD gelegt ?

Senden
Da der Controller sich während des sendens noch versorgen muss, werden 
die Adern auf Dauerspannung geschaltet.
Die Signalübertragung erfolgt dann mittels Stromänderung (uc schaltet 
Last im Signaltakt zu)

Ich kenne mich zugegeben noch nicht mit UART aus.
Wird "TXD" NUR beim senden und "RXD" NUR beim empfangen benötigt?
Oder werden dauerhaft beide Leitungen für die Kommunikation benötigt.


Über die genaue Schaltung und Umsetzbarkeit meiner Überlegung habe ich 
noch nicht nachgedacht..

Was wären eure Gedanken dazu?

Danke!!!

von georg (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Philipp L. schrieb:
> Was wären eure Gedanken dazu?

Wenn ich das vorhandene richtig verstehe, steckt die Information in der 
Polarität der Versorgungsspannung. Das ist so nicht auf Duplex umbaubar, 
weil ja die Versorgung vom Master kommt, also kann der Slave nicht die 
Polarität umschalten. Es wird ein ganz anderes Konzept benötigt.

Da nur 2 Leitungen zur Verfügung stehen, muss die Information auf die 
Vcc-Leitung aufmoduliert werden, dafür gibt es verschiedene 
Möglichkeiten. Ältere werden sich noch an das Piepen von Fax und Modems 
erinnern, man kann solche Tonfrequenzen der Versorgungsspannung 
überlagern, und das kann auch der Slave. Bloss nicht beide gleichzeitig, 
also nur Halbduplex, aber das ist ja kein Problem.

Übrigens gibt es Uralt-Technik, die so etwas kann: das gute alte Telefon 
stellt mit dem Schleifenstrom eine Versorgung zur Verfügung, und die 
Sprache wird in beide Richtungen übertragen.

Georg

von Flip B. (frickelfreak)


Bewertung
0 lesenswert
nicht lesenswert
Mit dem Uart und fertigen bootlader wird das nichts. eher kann man 
mittels dcc und railcom das firmwareimage in einen extra flashbereich im 
decoder laden und dann  von dort flashen.

von Modellbahner (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Flip B. schrieb:
> Mit dem Uart und fertigen bootlader wird das nichts. eher kann man
> mittels dcc und railcom das firmwareimage in einen extra flashbereich im
> decoder laden und dann  von dort flashen.

War auch mein erster Gedanke. Image mit z.B. POM übertragen und 
Rückkanal über RailCom. Ist beides Standard und dokumentiert.

Die Frage ist nur, ob Du wirklich auf dem Hauptgleis FW-Update machen 
willst. Das hat viel Potential für Kollateralschaden

von Modellbahner (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Übrigens zum Schaltplan:
DCC sind keine 20V! Das können sie sein, aber der legale Bereich geht 
von irgendwo 12V bis irgendwo 28V. Genaue Grenzen weiß ich gerade nicht 
auswendig, mußt Du NMRA befragen.
D.h. Du solltest unbedingt die Gate-Spannung vom FET begrenzen.

von Philipp L. (viech)


Bewertung
0 lesenswert
nicht lesenswert
> Mit dem Uart und fertigen bootlader wird das nichts. eher kann man
> mittels dcc und railcom das firmwareimage in einen extra flashbereich im
> decoder laden und dann  von dort flashen.
Die Idee ist nicht schlecht, nur die HW+SW Umsetzung ist mir noch nicht 
klar.
- Wie bekomme ich die hex-file auf das dcc-Signal und vom "raicom" 
wieder zurück in den PC?

HW:
Der "ESU-Lok-Programmer" läuft mit einem USB-Seriell Wandler.
Ich schaue mal mit dem Oszi was dieser auf der dcc Seite macht, wenn ich 
ihm einfach ein Signal über "putty" sende.
Dann sende ich eine railcom Rückmeldung und schaue mit putty drauf?

Denn der lok-Programmer ist für mich ja aktuell eine "black-box"
ich weiss nicht, in welcher Form die daten vom pc an den Programmer 
gesendet/empfangen werden müssen.
Oder werde ich in jedem fall eine eigene Hardware als Bindeglied 
zwischen PC und DCC für die Programmierung benötigen?

SW:
Hier werde ich dann aber anstatt putty vermutlich eine komplett eigene 
software auf dem PC benötigen?

> Image mit z.B. POM übertragen
habe mich bisher noch nicht mit POM befasst.
Können hier bereits mehrere Geräte dran hängen und die zu flashende 
Adresse ausgewählt werden?
Oder muss ich dies mit einer eigenen Software auf uc+pc realisieren?
denn beim programmieren von loks darf ich bisher nur DIE EINE zu 
programmierende lok auf dem programmiergleis haben.

> Die Frage ist nur, ob Du wirklich auf dem Hauptgleis FW-Update machen
> willst. Das hat viel Potential für Kollateralschaden
Nein, nicht auf dem Hauptgleis.
Alle unsere Zubehördekoder hängen auf einem eigenen dcc-bus.
Aber ja.. ich möchte auf dem bus programmieren, auf dem alle 
zubehördekoder hängen.
Daher muss sichergestellt sein, dass nur der "ausgewählte" dekoder 
geflasht wird...

: Bearbeitet durch User
von Modellbahner (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Von HEX auf DCC geht z.B. über POM. Bei POM sagst Du der Zentrale, daß 
die Lok Nr x in CV y den Wert z schreiben soll. Das ganze läuft auf dem 
Hauptgleis während des Betriebs.
Über die CVs muß Dein Dekoder entscheiden, was er machen soll. Brauchst 
halt ein Konzept, wie Du die FW über CVs verschiebst. RailCom zurück an 
PC hängt stark von der Zentrale ab. Da kann ich Dir nicht helfen, da 
meine Zentralen alle Eigenbauten sind.
Am ehesten könnte ich mir das Feature bei den Jungs von der Fichtelbahn 
vorstellen - die haben echt was auf dem Kasten! BiDiB definiert glaube 
ich zumindest die Möglichkeit. Ggf noch bei Tams nachfragen, der scheint 
da auch sehr aktiv zu sein (wenn seine Geräte laufen, sind die echt 
Klasse. Wenn nicht ... so bin ich bei Eigenbau gelandet ;) )

Wenn Du sowieso ein Programmiergleis hast, auf dem nur der eine Dekoder 
steht, dann kannst Du aber auch beliebig die Spannung modulieren. Mußt 
nur Leistung+Daten übertragen und zwischendurch ein Cutout für den 
Rückkanal a la RailCom.

P.S. Du arbeitest nicht zufällig in der Moba-Firma gleichen Namens?

von Philipp L. (viech)


Bewertung
0 lesenswert
nicht lesenswert
> Von HEX auf DCC geht z.B. über POM. Bei POM sagst Du der Zentrale, daß
> die Lok Nr x in CV y den Wert z schreiben soll.
Ich dachte, dass ein CV immer nur ein Wert (1Byte) und keine ganzes 
hex-File ist.

Gibt es dazu irgendwo eine gute Beschreibung?
-Wie sieht das Protokoll (DCC-Signal) genau aus, wenn ich auf Lokadr-1 
bei CV-5 ein ganzes hex-File zum Firmwareupdate übertrage ?
Diese Info benötige ich ja, um den uC passend zu programmieren.

Da sage ich ihm doch, dass er beim empfang von cv-5 ein neues Programm 
erhält.

> Wenn Du sowieso ein Programmiergleis hast, auf dem nur der eine Dekoder
> steht, dann kannst Du aber auch beliebig die Spannung modulieren.
Dieses Programmiergleis habe ich nur aktuell für die Tests und die 
Entwicklung.
Später sind die ganzen Dekoder in der Anlage verbaut 
(Häuser,Kräne,usw..).
Daher sollen diese ja im eingebauten Zustand programmiert werden können.

> P.S. Du arbeitest nicht zufällig in der Moba-Firma gleichen Namens?
Nein, ist alles rein privat.
Mir gefallen nur die aktuellen dekoder (und preise) nicht, daher muss 
ein eigener her :-)

Der funktioniert ja auch schon sehr gut, aber programmieren im 
eingebauten zustand wäre schon super..

von Modellbahner (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Die Motivation kommt mir bekannt vor  ;)

Das Signal von DCC ist sehr gut von der NMRA beschrieben. Da mußt Du 
Dich einfach mal durch die Normen durcharbeiten. Ist am Anfang etwas 
erschlagend, aber eigentlich ganz logisch aufgebaut. Physikalische 
Schicht, Symboldarstellung und darauf aufbauend dann die einzelnen 
Pakete.

CV ist tatsächlich immer nur 8bit. Dafür hast Du viele davon. :)
Könntest ja z.B. eine CV zur Aktivierung des Update-Modus und dann eine 
weitere, in das die Daten reingestreamt werden. Absicherung mußt Du Dir 
entsprechend überlegen (CRC?)
RailCom definiert da meines Wissens auch eine mögliche Bestätigung des 
Dekoders pro Schreibvorgang. Das könntest Du parallel zur Zentrale 
abgreifen.

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]
  • [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.