Aller Anfang ist schwer. -> DMX

  • So heute hab ich wieder mal bischen Zeit gefunden an dem DMX ding da rumzuschrauben, nach einem kurzen chat mit pesi sind wir dann auch gleich auf den Fehler gekommen.


    ;) Ich hatte vergessen die Fusbits umzusetzten, auf den Externen Quarz.


    jetzt läuft das ding genau so wie es soll.


    Wunderbar, jetzt kommt noch so ein empfänger in meine Zimmerlampe und dann gehts ab :D
    DDF schreiben wird dann noch nen kleines Problem werden, was für ne Sprache verwenden die denn da?? Ist ja alles relativ simples If.... else.... End If, doch wenn man mal nen befehl nachschalgen könnte wäre dann doch supi


    MfG

  • Puh, langsam wird es echt nervig,


    ich suche nun schon seit mehr als 5 stunden.
    Kennt vielleicht einer eine Seite, wo die Sprache für den DDF-Creator Prozedur aufgeführt ist???
    ich meine z.B. solch einen code wie; (von pesis dmx-receiver)


    Code
    !set_control|on|0$
    !if|({channel_0} = 0) and ({channel_1} = 0) and ({channel_2} = 0)|
     !set_control|on|1$
    $


    Ich würde gerne irgent wo die befehle wie !set_control nachlesen.


    Wäre super wenn mir einer ne Seite sagen könnte wie ich solche Prozeduren programmiren kann.


    Vielen Dank

  • Hallo,


    also ich habe mal folgenden Code in mein Programm eingebaut:



    Ergebnis: tut nicht!


    Jetzt würd ich gerne wissen woran es liegen kann. Sobald ich meinen 2. Controller auf DMX-Empfang schalte dann gehen alle LEDs aus und nichts tut sich. Klemme ich den Controller wieder an den PC, dann gehts. Also muss irgendwas am 1. Controller (Sender) nicht stimmen.


    @Günter
    Könntest Dir das mal anschauen? Wo kann da der Fehler liegen?


    Gruß, Benny.

  • Freaky: das ist keine "herkömmliche Programmiersprache", sondern so was Script-mäßiges... ich habe mir das selbst zusammenklamüsert anhand von Beispielen div. DDFs... schau' doch mal im DMX-Control-Forum, evtl. kann DIr da ja jemand weiterhelfen..? - oder es gibt da ein Handbuch zum runterladen...? Diese | - Zeichen haben mich auch fast zur Weißglut gebracht, k.A., nach welchem Prinzip die da genau rein müssen... 8o - zumindest habe ich rausgefunden, dass z.B. "!set_control|on|0$" den Controller "on", also in dem Fall den Strobo-Knopf, auf den Wert 0 setzt (also ausgeschaltet...)


    Für meinen Receiver gibt's ja übrigens schon ein passendes DDF, das ist in dem Thread drin zum runterladen (gleich im ersten Beitrag verlinkt....)


    P.S.: danke übrigens für die Werte der Fusebytes, stelle ich bei Gelegenheit noch in meinen Thread rein, für alle die das nicht per Pony-Prog zamklicken.. ;)

    It's only light - but we like it!


    Da es sich in letzter Zeit häuft: Ich beantworte keine PNs mit Fragen, die sich auch im Forum beantworten lassen!
    Insbesondere solche von Mitgliedern mit 0 Beiträgen, die dann meist auch noch Sachen fragen, die bereits im entsprechenden Thread beantwortet wurden.
    Ich bin keine private Bastler-Hotline, technische Tipps etc. sollen möglichst vielen Lesern im Forum helfen!

  • Hallo Benny,


    nächste Woche habe ich wieder etwas Luft, dann kann ich das nochmal mit dem Oszi nachmessen. Wie schon mal gepostet, läuft der Code bei mir mit einem ATMega 8. Getestet habe ich mit 2 Coemar Scannern und ner Noname Nebelmaschine vom Thomann. Teste doch mal nur die Reseterzeugung mit den Registern. Da brauchst du nicht mal ein Oszi dafür:


    Code
    do
    Ucsr1b.txen1 = 0                                        'Usart ausschalten
    Usart1_tx = 0                                           'Reset abfallende Flanke
    Waitms 2000                                          'minimale Länge des Resets
    Usart1_tx = 1                                           'Reset aufsteigende Flanke
    waitms 2000
    Ucsr1b.txen1 = 1                                        'Usart einschalten
    loop


    wenn das blinkt, müssen die Registernamen vom 644 passen.


    Günter

  • Hi,


    danke das Dir das nochmal anschaust. In einem anderen Forum hat mir jetzt noch einer gesagt das man bei dem ATMEGA644P den Channel erst öffnen muss mit einem OPEN Befehl, das sei bei 2 UARTS in einem Controller notwendig. In der Bascom Hilfe steht zwar was dazu und das habe ich auch versucht, aber irgendwie habe ich das nicht hinbekommen. Wenn es Dich nicht stört dann würde ich Dir auch mal 1 oder 2 von den ATMEGA644P zuschicken.....


    Gruß, Benny.

  • Hi,


    ich habe das jetzt mal ein wenig zum laufen bekommen. Tut zwar noch nicht richtig aber zumindest tut sich beim 2. Controller mal etwas. Ich benutze diesen Sendecode:



    Und folgenden Empfangscode:


    Code
    Dmx_receive:
    Dmx_wert = Udr1
       If Ucsr1a.fe1 = 1 Then
      	Dmx_kanal = 0
       Else
      	Incr Dmx_kanal
      	If Dmx_kanal < 513 And Dmx_kanal > 0 Then Prog_7_dmx_wert_buffer(dmx_kanal) = Dmx_wert
       End If
    Return


    Der Empfänger empfängt auch etwas, aber nicht das richtige. Zum einen aktualisiert der Empfänger ca. nur ca. alle 3,5 sekunden. Und dann total andere Werte für die LEDs. Eine LEDs geht dann ganz aus und genau diese wechselt dann durch. Als Beispiel bei RGBW: Also zuerst alle an RGBW, dann RGB_, dann RG_W, dann R_BW, dann _GBW, dann RGBW usw. Genau das wechselt so ca. im 3,5sek Takt.


    Was passt da nicht?


    Gruß, Benny.

  • Hi Benny!
    ich bin dabei eine 8 channel send, mit taster mit 16 taster, jeder canal wird mit 2 taster eine macht pegel Up von 0 bis 255 und die andre down 255 bis 0, ich möchte mit ein Panel Bauen damit ich mein Led zu Hause steuert, in moment bin dabei die Schaltplan mit Eagle machen, ich wird eine Atmega8 benutze und 10 Dip Schalter zu Kanale Addressierung, klar ich will die Code von Gunter benutze.


    ;)
    MfG
    Rafael

  • Irgendwie steh ich hier auch grad auf dem Schlauch.
    Versuche den Sender per M32 aufzubauen, aber das funkt kein Stück...
    Die Hardware selber tuts, hab eine C-Routine drauf, das geht.
    Genutzt wird der interne Oszi mit 8MHz.


    Die Register heißen bei beiden Chips soweit gleich, aber vielleicht hab ich was anderes übersehen?


  • Hi,


    also der Code sieht soweit gut aus, muss dn dann zu Hause mal mit meinem vergleichen.


    Versuch doch mal 2x Printbin zu benutzen anstatt das hintereinander zu schreiben. Ich hatte da schon so ein paar komische Feinheiten bei Bascom entdeckt, vor allem in Verbindung mit der UART, wo man das nicht auf jede Syntax Schreibweise lösen konnte. Z.B. hatte ich da schon Probleme damit wenn die zu sendenden Daten keine Arrays waren, da hats dann irgendwie nicht funktioniert.


    Gruß, Benny.