Probleme beim Varytec LED-Tubes Umbau

  • Ich habe vor ein paar Wochen die Anleitung zum Umbau der Varytec Led Tubes hier im DMXControl Wiki gelesen und mich jetzt daran gemacht die Erste meiner Tubes umzubauen.
    Zunächst vielen herzlichen Dank an alle Beteiligten für die Anleitung und die Mühe und Arbeit, die in das Projekt gesteckt wurde.
    Ich habe jedoch zwei Fragen, da ich nach dem Umbau auf kleinere Probleme gestoßen bin.

    In dem Projektordner zum Runterladen gibt es direkt im Hauptverzeichniss die Datei LED-Tubes.hex. Diese habe ich auf meinen Atmega geschrieben und die Fusebits wie beim DMX Transciever von Hennes gesetzt. Die Led's lassen sich jedoch leider nicht per DMX ansteuern, sondern flackern nur sproradisch und willkürlich in den einzelnen Segmenten.
    Danach habe ich exakt das gleiche mit der LED-Tubes.hex aus dem Unterordner DEFAULT ausprobiert und nun kann ich einzelne Segmente per DMX steuern. -> Meine erste Frage ist nun, was genau der Unterschied dieser beiden Firmwares ist? :huh:

    Das zweite Problem hat sich dann nach dem die Steuerung der Segmente prinzipiell funktioniert gezeigt.
    Sollte nicht normalerweise Segment 1 Rot auf Kanal 1, Segment 2 Rot auf Kanal 4, 3 Rot auf Kanal 7 usw... reagieren ?
    Wenn ich im DMXControl die Kanäle 1 bis 24 hochziehe leuchten alle Segmente in Weiß, somit werden auch alle Kanäle ausgewertet, jedoch ist die Kanalbelegung für Rot z.b. wie folgt:

    Segment: (Kanal für Rot)
    1 ( 1)
    2 (10)
    3 (19)
    4 ( 5)
    5 (14)
    6 (23)
    7 ( 9)
    8 (18 )
    :argh:

    Ich vermute momentan das dies daran liegt, dass meine LED Tube Platinen ein leicht anderes Layout haben, mit mehr SMD Bauteilen bestückt sind und somit einer anderen Hardwarerevision entsprechen. Meine Frage ist nun wie ich die Kanalbelegung derTubes in der Firmware so anpassen könnte, dass die Kanäle auch in einer sinnvollen Reihenfolge ausgewertet werden?

    Vorab schonmal vielen Dank an alle die mir da weiterhelfen können!

    Edited once, last by Mitschgel (November 24, 2014 at 4:30 PM).

  • Hi,

    Bin gerade unterwegs, und habe keinen Zugriff auf das Projektarchiv. Aber dein Problem klingt nach falsch eingestellten Fuses
    Wenn du einfach irgendwelche Fuses aus einem anderen Projekt einstellst, kann das funktionieren, wird es aber in den meisten Fällen nicht.

    Freundliche Grüße

    Stefan

  • Hi Stefan,
    das setzen der Fuses auf die Werte des DMX Transceivers kommt nicht von ungefähr. Da im Wiki Artikel leider nichts konkretes dazu steht, Markus M. jedoch auf einen Kommentar bei Youtube geantwortet hatte:
    "Ich habe die vorhanden Controler entfernt und duch modifizierte Transceiver von Hendrik Hölscher ersetzt. Dann habe ich mir noch mit Hendriks DMX-Bibliothek eine eigene Firmware für die Ansteuerung geschrieben."

    habe ich die Fuses wie bei Henne's DMX Transeiver gesetzt (Low: 0x3F / High: 0x9D)

    Sollten die Werte falsch sein, wäre ich natürlich dankbar wenn mir jemand die richtigen nennen könnte.

    Desweiteren stellt sich mir dann aber immernoch die Frage was die Unterschiede in den beiden .hex Dateien aus dem Projektordner sind?

    Gruß

    Michael

  • Hi Markus,
    für einen besseren Überblick habe ich Bilder der Tube angehängt. (Von vor und nach dem Umbau)

    So wie es scheint sind jedoch die 3 Schieberegister der springende Punkt. Im Gegensatz zu den von dir umgebauten Tubes, sind bei mir die Schieberegister nicht für allein eine Farbe zuständig. Nachdem ich die Verbindungen zwischen den Schieberegistern und den LED's durchgemessen habe, komme ich zu folgender PIN Belegung:

    [Blocked Image: http://img5.fotos-hochladen.net/uploads/belegunglqjwnsheg4.png]

    Würdest du die entsprechenden Änderungen für mich an der Firmware vornehmen und welche Fusebits müssen dann gesetzt werden?

    Vielen herzlichen Dank für deine Hilfe :thumbup:
    Michael

  • Danke für den neuen Code. Leider funktioniert das kompilieren nicht. :wacko:
    AVR Studio beschwert sich mit der Meldung: ../LED-Tubes.c:3:23: fatal error: LED-Tubes.h: No such file or directory

    Ist whs auch kein Wunder, da du in der neuen LED-Tubes.c in der zweiten Zeile auf die Datei Led-Tubes.h verweist, die es jedoch werder in deinem angehängten .zip File, noch im ursprünglichen Projektarchiv aus dem Wiki gibt.
    Könntest du mir bitte auch die Led-Tubes.h hochladen und falls es keine Umstände macht zur Sicherheit auch die fertige .hex Datei?

    (Rein interessehalber: Welche Zeilen mussten denn für die neue Pinbelegung geändert werden?)

    Vielen Dank Markus!

    Gruß
    Michael

  • Also momentan scheitert leider alles an der fehlenden LED-Tubes.h Datei.
    Hat die evtl noch jemand anderes der sie bitte hochladen könnte?

    Den Verweis auf LED-Tubes.h kann ich im Sourcecode natürlich nicht entfernen, da sonst alle möglichen Variablen nichtmehr bekannt/ definiert sind.

    Herzlichen Dank an alle!

    Gruß
    Michael

  • Ich hab nochmal meine Version des Projektes angehängt, da ist die Datei vorhanden.

    In der Datei LED-Tubes.c gibt es 3 Blöcke für die jeweiligen Schieberegister.
    Da bei mir eins für eine Farbe zuständig ist, sind die Nummerierungen der Kanäle nicht direkt hintereinander sondern immer um 3 versetzt.
    Bei dir macht ein Register ja alle Farben, daher habe ich dort die Nummerrierung von 0,3,6 usw auf 1,2,3,4 usw geändert.

  • Danke für das Projektarchiv, aber iwas mache ich noch immer falsch. Welche Version von AVR Studio verwendest du Markus ?

    Wenn ich dein angehängtes Projekt mit AVR Studio 4 lade und kompilieren möchte erhalte ich folgenden Output:

    rm -rf LED-Tubes.o lib_dmx_in.o lib_pdm.o LED-Tubes.elf dep/* LED-Tubes.hex LED-Tubes.eep LED-Tubes.lss LED-Tubes.map
    Build succeeded with 0 Warnings...
    avr-gcc -I"C:\Users\Michael Danner\Downloads\LED-Tubes - dimmbar - 4.6.2011\." -mmcu=atmega8515 -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT LED-Tubes.o -MF dep/LED-Tubes.o.d -c ../LED-Tubes
    .c

    ../LED-Tubes.c:14:10: error: variable 'pwmtable_8B' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
    ../LED-Tubes.c: In function 'main':
    ../LED-Tubes.c:23:2: warning: implicit declaration of function 'init_pdm' [-Wimplicit-function-declaration]
    make: *** [LED-Tubes.o] Fehler 1
    Build failed with 1 errors and 1 warnings...

  • Der Tipp bringt mich etwas weiter, es funktioniert aber leider immernochnicht alles :D

    Die Led-Tubes.c scheint soweit dann okay zu sein für den Compiler.
    Lediglich eine Warnung taucht auf :
    ../LED-Tubes.c:23:2: warning: implicit declaration of function 'init_pdm' [-Wimplicit-function-declaration]

    Aber die lib_dmx_in.c führt leider zu einem weiteren Fehler:

    ../lib_dmx_in.c:89:6: error: attempt to use poisoned "UART_RX_vect"
    ../lib_dmx_in.c: In function 'UART_RX_vect':
    ../lib_dmx_in.c:89:1: warning: 'UART_RX_vect' appears to be a misspelled signal handler [enabled by default]
    make: *** [lib_dmx_in.o] Fehler 1
    Build failed with 1 errors and 2 warnings...

  • Das habe ich eben auch schon probiert...
    Das Projekt lässt sich dann kompilieren, aber wenn ich die .hex aufspiele und DMX Werte an die Tube sende, passiert nichts.

    Verwende ich stattdessen die .hex aus dem Wiki Archiv, leuchtet die Tube mit der bekannten Fehlnummerierung der Segmente.
    Ich vermute also, dass ein einfaches Umbennen der Funktion nicht reicht :(

  • N'abend Markus,
    ich hab das Problem gelöst :thumbup:
    Aber du wirst nicht glauben woran das jetzt im Endeffekt gelegen hat^^

    Vergleich mal den Code der LED-Tubes.c aus dem Projekt im Wiki mit der von dir für mich neu nummerierten LED-Tubes.c xD
    Genau dort liegt nämlich das Problem. Beim alten Projekt macht nämlich die lib_pdm.c die Ausgabe des PdmBuf/ der Farben. Demzufolge muss dort die Nummerierung angepasst werden.
    Die neue LED-Tube.c, die du mir geschickt hast, beinhaltet den PdmBuf Teil jetzt allerdings selbst!

    Wie man auch an deinem persönlichen Projektordner, den du angehängt hattest sieht, wurde anscheinend irgendwann von dir, nachdem das Ansteuern der Tube prinzipiell funktioniert hat, der gesamte Code umstrukturiert.
    Programmbestandteile aus den lib's sind in die LED-Tubes.c gewandert und ich vermute mal, dass du dabei irgend einen Bug eingebaut hast :wacko:
    Nach all deiner Hilfestellung bekomme ich deinen Projektordner nämlich immernochnicht zum laufen ?(

    Aber nachdem ich mich nun länger mit deinem Code beschäftigt habe, ist es mir eben wie Schuppen von den Augen gefallen wie das ursprüngliche Projekt aufgebaut ist. :argh:
    Eine kurze Änderung der Nummerierung in der lib_pdm.c, die pwmtable_8B als const deklariert und ISR (UART_RX_vect) in ISR (USART_RX_vect) umbennen. Mehr war nicht nötig.
    Der Code lässt sich unter AVR Studio4 Build 730 einwandfrei kompilieren und die Tube macht genau was sie soll! :thumbup:

    Falls jemand anderes auch die neuen Tubes hat und den Umbau vornehmen will habe ich mein Projekt angehängt.
    Damit bleibt mir nur mich nochmal ausdrücklich für eure Hilfe zu bedanken und vllt könnte man den Wiki Artikel ja um meine neue Version erweitern.

    Gruß Michael

  • Newly created posts will remain inaccessible for others until approved by a moderator. The last reply was more than 365 days ago, this thread is most likely obsolete. It is recommended to create a new thread instead.