ATMEGA168, Lieferung aus China

Kniffelig wird wenn man, wie hier, zwei unterschiedliche Soft-Kommunikationen gleichzeitig realisieren will...
Warum? :stupido2:

(insbesondere wenn, wie hier nicht, beide asynchron sein sollen...)
Hmmm, da kommt grad mein Hirn nicht mit was du meinst. Oder war das eh nicht in meine Richtung angemerkt? :flute:

Aber genug OT - wennst ein Mega sein soll isses eben so...
Steht noch nicht entgültig fest. Ich versuche mich gerade geistig auf den 4313 einzustellen und studiere die Doku. Mal schauen ..... :pcguru:

Hmmm… Ich würde das Ganze auch eher mit I2C machen. Pro Häuschen (wie in dem Video) oder pro Straße (Laternen) einen Slave.
Ist eine Idee. Jedoch ist es mit den vorhandenen Gegebenheiten eher nicht so gut brauchbar. Jede Steuereinheit muss für sich autonom arbeiten können. Es besteht bereits ein PC-gesteuertes Beleuchtungssystem mit mehr als 50 Steuerkanälen für die Anlage mit Wettersimulation und Tag-Nachtzyklus. Aber da die Anlage sehr groß ist und bei einer zentralen Steuerung der Verkabelungsaufwand gigantisch wird, hatte ich die Idee pro Haus eine kleine Platine zu entwickeln die einzelne Fenster oder andere kleine Aktionseinlagen steuert und direkt im Gebäude untergebracht ist und nur ein oder maximal zwei Steuerleitungen von der zentralen "Umweltsteuerung" benötigt. Bedeutet, ich habe zwei Steuerleitungen quer durch die Anlage. Eine signalisiert mir den Beginn der Abenddämmerung und eine die Morgendämmerung. Alleine mit diesen beiden Steuerleitungen können die Platinen ihr jeweiliges Programm ablaufen lassen. Für Sonderanwendugne läuft ein programm auch ohne Unterbrechung durch. Reduziert den Verkabelungsaufwand erheblich und entlastet die Echtzeitsteuerung. Gleichzeitig muss die Steuerplatine auch völlig autonom für Anlagenmodule (Dioramen) einsetzbar sein. Von daher ist eine Verbindung untereinander nicht notwendig.

Ich sehe die größeren Probleme in der PC-seitigen Software (Du sicher anders, Dirk wohl auch...)
Sehe ich nicht.
Hab mir zu Testzwecken so ein Teil über eBay besorgt. USB - TTL Umsetzer. Weiß jetzt nicht auf die Schnelle ob da ein TFTD oder CP2xxx arbeitet. Jedenfalls habe ich per PC eine LED darüber geschalten. Damit war für mich klar, die Kommunikation bekomm ich hin. PC seitig wird das mit Visual Studio realisiert.

Um wenigstens etwas zum Thema zu fragen: Stehen die LEDs in irgendeiner Relation zu tatsächlichen Zuständen der Weichen etc... (*evtl. neue Herausforderung in den Raum werf*)
Nein, stehen sie nicht. Die Anlage, der Zugbetrieb, funktioniert automatisch. Wird von einem PC gesteuert. 20 Züge und mehr gleichzeitig zu fahren schafft der Mensch nicht mehr :fie:
Das kann nur ein Computer. Da stehen zwei große Bildschirme auf denen man den Zugverkehr beobachten kann. Zusätzlich noch ein Videosystem um alle Anlagenteile einzusehen.
 
Zuletzt bearbeitet:
Toll! Schönes Hobby :)

Wenn ich mehr Zeit hätte und nicht von Null anfangen müsste ... ;)

Wenn es weiter um das Eisenbahn-Projekt geht, wäre es eventuell sinnvoll, ein neues Thema dafür zu starten.
Es passt nicht mehr direkt zum Thementitel.

Dirk :ciao:
 
:offtopic:
Wir bauen die Anage zu viert. :moil:
Bauen schon 10 Jahre drann. :dance3:
Ende nicht in Sicht. :help2:
Alle berufstätig. :dash2:
Zeit eher Mangelware :(

Wenn es interessiert kann ich das Projekt der Steuerplatinen, der bisherigen und der kommenden, gerne in einem eigenen Thread beschreiben. Ist wahrscheinlich nichts für euch Profis, aber eventuell für Anfänger von Interesse. Bin ja selber nur Gelegenheitsentwicker. :secret:
 
:D Ich kann mir vorstellen, dass das Projekt nicht von heute auf morgen entstanden ist.

Irgendwie beneide ich euch, ich schaffe es nicht mal meinen Rundenzähler für die Carrera-Bahn fertig zu bekommen, obwohl ich es jemand versprochen habe ;)

Also ich finde euer Projekt auf jedenfall interessant! :cool:

Dirk :ciao:
 
[zwei Kommunikationskanäle gleichzeitig in Software -> Kniffelig] -> Warum? :stupido2:
[...]
Hmmm, da kommt grad mein Hirn nicht mit was du meinst. Oder war das eh nicht in meine Richtung angemerkt? ...
Das bezog sich auf Dirks nicht ganz ernst gemeinten "Vorschlag", sowas mit 'nem Tiny4 umzusetzen (und alles was danach kam).
Ich ging von dem Konzept PC->UART->TWI->Aktoren-Treiber aus.
Der Tiny hat keine HW-Kommunikation, also müßte man beide in SW umsetzen. Das beide nicht gleichzeitig agieren können müssen, war damals nicht klar, also bin ich davon ausgegangen. TWI ist eine synchrone Kommunikation, die (jedes) gültigen Bits werden mit einer Clock-Leitung synchronisiert - und der Tiny ist als Master Chef über die Clock.
Die üblichen USB->TTL-Wandler wandeln nicht auf US(A)RT (universeller synchroner Reciever/Transmitter), sondern auf UART (...asynchroner...) - der Empfänger synchronosiert einmal auf das Startbit, und muß danach ein vorgegebenes Timing (Baudrate) einhalten. Der Tiny hat dafür einen Timer. Ich bin in dem verlinkten Beispiel da,als auf 4800Baud gekommen (mit 8fach Oversampling, das entspäche dem doubeled transmission speed des HW-UART (U2X-Bit)).
Warum kniffelig? Dirks TWI-Code und mein UART-Code würden zusammen schon fast den ganzen Flash belegen - wobei beide optimiert werden könnten. Mein Code sollte sich eigentlich auch auf zwei Rx quasi-gleichzeitig umstricken lassen, nur den schnutzigen Trick mit dem Paritätsbit kann ich nicht ein zweites mal anwenden. Das verXORren wird nämlich durch ein einziges SBI auf das Pin Bit des Reset realisiert.
Das ganze hat aber eigentlich nichts mehr mit Deinem Thema zu tun - es wurde ja mehrfach ein Controller mit Hardware-UART und Hardware-TWI/USI vorgeschlagen...
[TWI->jedes Haus/Straße als eigenen Slave anbinden] -> Ist eine Idee. Jedoch ist es mit den vorhandenen Gegebenheiten eher nicht so gut brauchbar. Jede Steuereinheit muss für sich autonom arbeiten können. Es besteht bereits ein PC-gesteuertes Beleuchtungssystem mit mehr als 50 Steuerkanälen für die Anlage mit Wettersimulation und Tag-Nachtzyklus. Aber da die Anlage sehr groß ist und bei einer zentralen Steuerung der Verkabelungsaufwand gigantisch wird, hatte ich die Idee pro Haus eine kleine Platine zu entwickeln die einzelne Fenster oder andere kleine Aktionseinlagen steuert und direkt im Gebäude untergebracht ist und nur ein oder maximal zwei Steuerleitungen von der zentralen "Umweltsteuerung" benötigt. Bedeutet, ich habe zwei Steuerleitungen quer durch die Anlage. Eine signalisiert mir den Beginn der Abenddämmerung und eine die Morgendämmerung. Alleine mit diesen beiden Steuerleitungen können die Platinen ihr jeweiliges Programm ablaufen lassen. Für Sonderanwendugne läuft ein programm auch ohne Unterbrechung durch...
hm...
Ich sehe folgende Möglichkeiten:
  • jeder Aktor (Platine) ist autark, und steuert seine Aktoren (LEDs) entweder direkt oder über was auch immer selbständig an. Er erhält irgendwelche Signale (Dämmerung usw) über irgendwelche Leitungen (<-so hätte ich Dich jetzt verstanden). Zum aufspielen einer neuen "Animation", muß irgendeine (physische) Kommunikationsverbindung mit dem jeweiligen zusammengesteckt werden.
  • jeder Aktor ist autark, aber zusätzlich über einen geeigneten Kommunikationsbus (TWI, UART (ggf DaisyChain)) an einen Master-Controller angebunden (Parametrisierung usw vom PC über den Master auf alle Slaves. Jeder Slave bekommt über irgendwelche Leitungen weitere Signale (Dämmerung etc...), die er mitauswertet <-- inkonsequent, deswegen...
  • wie oben, aber die vom PC erzeugten(?) "Umweltdaten" werden an den Master-Controller übergeben, der sie über den bestehenden Bus an alle Slaves weiterreicht. damit haste nur noch einen 2draht-Bus (oder einen UART-Ring), und kannst es bei Egon Pimpelhuber regnen lassen, bei Marta Pfahl (Nachbarin) scheint die Sonne, und auf der Straße ist finsterste Nacht... Welche Autonomie Du jedem Aktor und dem Master einprogrammierst (Tag/Nacht-Wechsel zB), ist Deine Sache - ganz dumme Knoten kommen ohne Controller aus, intelligentere brauchen halt ein Sillizium-Hirn (insbesondere um den Master und den Bus zu entlasten (Schweißlicht, Anwesenheitssimulation usw).
...
Sehe ich nicht.
Hab mir zu Testzwecken so ein Teil über eBay besorgt. USB - TTL Umsetzer. Weiß jetzt nicht auf die Schnelle ob da ein TFTD oder CP2xxx arbeitet. Jedenfalls habe ich per PC eine LED darüber geschalten. Damit war für mich klar, die Kommunikation bekomm ich hin. PC seitig wird das mit Visual Studio realisiert...
Ausgangspunkt waren ja Dirks Bootloader, und ob man (Dirk) nich sowas wie'n Megaxxx als virtuellen ComPort bereitstellen könnte.
Meiner Meinung nach hat Dirk da zwei unterschiedliche "Systeme". Controller mit integrieter USB-Schnittstelle - zu den Dingern kann ich nichts sagen, und Controller, bei denen der Loader über einen externen USB-TTL-Wandler läuft (eben genau die von Dir genannten FTDI/CPblablub/wieauchimmer). Der Wandler ist also für den PC ein virtueller ComPort, und für den Controller ein ganz simpler UART.
Ich(!) finde es leichter ein Assembler-Programm zu schreiben, welches über UART kommuniziert, als auf dem PC ein dotnet-Programm, welches vernünftig auf den Comport zugreift (bei meinem Oszilloskop vor zich Jahren bekam ich bei dem Versuch der Echtzeitdarstellung irgendwann Probleme). Ihr könnt das sicher besser...
Aber die andere Seite von Thomas' Frage ist ja noch offen (wenn auch OT): mit welchen Aufwand muß man einen ATxxxUSB konfigurieren, daß der sich am PC als vcomport anmeldet? Im Controller selbst gibts dann sicher äquivalente Register/Bits/IRQs zum UDR, DataRecieved-IRQ, UDRE, ...

P.S. an Dirk (und auch an Manfred): Drannbleiben!
 
Wäre das für euch nicht einfach dass sich ein – sagen wir mal – ATmega168 als virtueller COM Port registriert und dann so etwas realisieren könnte?
Aber die andere Seite von Thomas' Frage ist ja noch offen (wenn auch OT): mit welchen Aufwand muß man einen ATxxxUSB konfigurieren, daß der sich am PC als vcomport anmeldet?

:offtopic:


Mit Mikrocontroller ohne USB Modul möglich (habe ich mal gesehen bei Projekten für ein ISP Programmer und ein Logic Analyzer), aber aufwändig, da man sich mit USB detailliert befassen muss. Hinzu kommt ja möglicherweise noch USB IF und signieren des "CDC Treibers" ... und das bei einer komplett eigenen USB-Lösung.

Ich befasse mich da lieber mit der Applikation, nicht mit einer einzelnen Schnittstelle.

Mikrocontroller mit USB Modul: Habe ich mit unterschiedlichen Mikrocontrollern gemacht, mit AVR, Xmega und auch anderen Familien. Für die AVRs habe ich hierfür das ASF und auch LUFA USB Stack verwendet. Sowohl für die App, wie auch für den Bootloader. Das ist ganz gut machbar.


Dirk :ciao:
 
jeder Aktor (Platine) ist autark, und steuert seine Aktoren (LEDs) entweder direkt oder über was auch immer selbständig an. Er erhält irgendwelche Signale (Dämmerung usw) über irgendwelche Leitungen (<-so hätte ich Dich jetzt verstanden). Zum aufspielen einer neuen "Animation", muß irgendeine (physische) Kommunikationsverbindung mit dem jeweiligen zusammengesteckt werden.
Genau so hab ich es auch gemeint.

genau die von Dir genannten FTDI/CPblablub/wieauchimmer). Der Wandler ist also für den PC ein virtueller ComPort, und für den Controller ein ganz simpler UART.
Ja.
Hab gestern mal in der Kiste gekramt um das Ding wieder zu beleben. Es ist ein CP2102, USBtoUART Wandler, auf einer winzigen Platine. Könnte man direkt in ein Kabel integrieren.
Wenn ich jetzt mal beim ATTiny4313 bleibe, brauche ich drei Leitungen nach außen. TxD, RxD und GND. Die werden bei Bedarf mit dem Wandler an den PC angeschlossen und die Paramter dann übertragen. So zumindest mal mein Plan. :rolleyes:
Bin am planen der Leiterplatte. Hatte blos gestern festgestellt, dass mir so einiges an Libs für Eagle irgendwie fehlt. Ist halt schon zwei PC-Generationen her, als ich mich mit Eagle beschäftigt hatte :cool:

Ich(!) finde es leichter ein Assembler-Programm zu schreiben, welches über UART kommuniziert, als auf dem PC ein dotnet-Programm, welches vernünftig auf den Comport zugreift
Hm, ich werde es erleben was einfacher ist. ;)
 
Zuletzt bearbeitet:
Hmm...
Also die Aktoren vollständig autark.
Aber die werden ja auch Strom brauchen, also mußt Du eh Strippen ziehen. Meine Empfehlung wär wie gesagt der Zwei-Draht-Bus (zuzüglich zur Stromversorgung), aber mußt Du wissen...

Wenn Du beim UART nur eine Richtung brauchst, kommst Du mit einer Leitung (CPxxx-Tx -> AVR-Rx) aus (zuzüglich Gnd, klar)
Beim UART-Daisy-Chain wären alle Teilnehmen im Ring verbunden, also Master->erster Slave->zweiter->...->letzter->Master.
Also auch nur eine Leitung zwischen zwei Aktoren - einen zusätzlichen Aktor kann man irgendwo dazwischenklemmen. Jeder Aktor schickt alle eingehenden Telegramme weiter, und führt die aus, die ihn betreffen.
 
Tja, das ist die Frage, ob nur in eine Richtung oder in beide Richtungen. Wie erkenne ich Fehler bei der Datenübertragung? Erst dann wenn die Daten übertragen sind und das Programm läuft? Sind nur minimale Änderungen könnten die zu wenig gewesen sein oder die Datenübertragung hat nicht funktioniert. Also in beide Richtungen. Der "Aktor" wie du ihn so schön nennst, soll die empfangenden Daten wieder zurücksenden. Dann weiß der PC ob sie korrekt empfangen wurden und kann die nächsten senden. Oder wie macht man das besser? Bin für Vorschläge immer offen.

Warum ich (derzeit) auf autarke Steuerung setze ist die Art wie die Steuerungen mit Spannung und Info versorgt werden.

Beispiel (alle Zeitangaben sind Modellbahnzeit, also Zeitraffer [es wird aber auch abgewandelte Anwendungsgebiete geben]):
Um 17:00 beginnt die Abenddämmerung ... Der Aktor wird nun über eine zweiadrige Leitung mit Spannung versorgt, beginnt zu leben und spult sein erstes Programm ab. Die Leitungen liegen bereits alle. Es ist kein zusätzlicher Verkabelungsaufwand mehr nötig.
Um 6:00 beginnt die Morgendämmerung ... Der Aktor bekommt nun über einen dritten Draht ein mindestens eine Sekunde anhaltendes Signal (Eingang des Tiny wird gegen GND gezogen) und startet sein zweites Programm.
Irgendwann, sagen wir mal, um 10:00 wird die Versorgungsleitung für die Aktoren abgeschaltet. Deren Programm ist dann bereits beendet. Die sind wieder tot und warten bis zur nächsten Abenddämmerung.
Das System ist deshalb so, weil bereits eine diesbezügliche größere Steuerung per PC und externer Hardware installiert ist. Die Kanäle dieser Steuerung sind gegen GND geschalten. Ich habe also ständig +16VDC an den Aktoren und die gegen GND geschalteten Kanäle der großen Steuerung geben mir die Spannung und später das Steuersignal für die Aktoren.
Ich hoffe ich habe es halbwegs verständlich rüber gebracht. Mit diesen Gegebenheiten muss ich leben und das Beste daraus machen.
Natürlich könnte ich dieses System durch ein komplett neues ablösen. Da hätte ich schon viele Ideen die auch irgendwo in deine Richtung gehen. Aus verschiedenen Gründen ist das aber (derzeit) nicht machbar. Ich muss Minimalist spielen. :cool:

Warum dann eigene Steuerplatinen wenn schon eine größer Steuerung existiert? Nun, die Anlage ist groß, ich will das Maximum rausholen und einzelne Fenster beleuchten. Bei der Vielzahl an Gebäuden und anderen Aktionen schafft das die beste am Markt erschwingliche Steuerung nicht mehr. Daher der Eigenbau als Erweiterung der bestehenden Steuerung um Kanäle zu erweitern/vervielfachen und Verkabelungsaufwand zu sparen.
 
Zuletzt bearbeitet:

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)