DMX-Steuerung für Scheinwerfer

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • DMX-Steuerung für Scheinwerfer

      Hallo Bascomgemeinde,
      wie in meiner Anfrage zu DMX schon angekündigt, möchte ich euch am Bau meiner Steuerung teilhaben lassen.

      Zur Vorgeschichte:
      Im Sommer habe ich meine alten PAR56-Scheinwerfer in Rente geschickt und auf LED-Scheinwerfer umgestellt.
      Damit verbunden war auch eine neue Lichtsteuerung notwendig.
      Professionelle DMX-Steuergeräte sind für meine Anlagenverhältnisse viel zu groß, deshalb habe ich mir eine kleine Steuerung zugelegt.

      DMX-01.jpg

      Problematisch ist nur das Handling.
      Da ich allein spiele und singe, arten selbst kleinste Änderungen in Stress aus, da man bei einer 10-Kanal-Ansterung immer auf die 2. Bank wechseln muss.
      Die 4-Kanal-Steuerung ist etwas entspannter, aber dafür habe ich dort keine Dimmfunktion zur Verfügung.
      Also bleibt mir nichts anders übrig, als mir meine persönliche Steuerung maßzuschneidern.
      Die Funktionen, die ich benötige, sollen einmal festgelegt und fest programmiert werden.
      Wenn dann noch Alles in einem möglichst kleinen Gehäuse untergebracht ist, steht einer entspannten Bühnenarbeit nichts mehr im Wege.

      Die letzte große Wissenslücke für mein Vorhaben war die DMX-Ansteuerung mit einem ATMega.
      Vielen Dank noch einmal Allen, die mir in die Spur geholfen haben. :thumbup:


      In meiner beruflichen Laufbahn habe ich gelernt, dass es nichts bringt, in blinden Aktionismus zu verfallen.
      Also erst überlegen:
      - Was will ich?
      - Was brauche ich?
      - Was kann ich umsetzen?

      Zunächst habe ich einen Entwurf der Lichtanordnung erstellt.
      Da ich in relativ kleinen Locations spiele, habe ich immer eine kleine Grundausstattung mit, die in der Regel ausreichend ist.
      4 Scheinwerfer für den Tanzfläche und 2 Scheinwerfer für die Bühne.
      Die Tanzflächenscheinwerfer sollen je nach Bedarf einfarbig oder musikgetaktet als Lauflicht angesteuert werden.
      Darüber hinaus sollen sie gemeinsam dimmbar sein.
      Die Scheinwerfer für die Bühne bleiben einfach nur weiß und sollen separat zur Tanzfläche dimmbar sein.
      Beide Scheinwerfergruppen sollen zudem getrennt auszuschalten sein, ohne das die Einstellungen verloren gehen (Blackout).

      DMX-02.jpg

      Als Verbindung zu den Scheinwerfern sind Kabelanschlüsse sowie eine 2,4GHz Anbindung vorgesehen.
      Hier mein vorläufiger Gehäuseentwurf.
      Da Licht sofort sichtbar ist, habe ich zugunsten eines kleineren Gehäuses auf eine LCD-Anzeige verzichtet.

      DMX-03.jpg

      Als Prozessor habe ich den ATMega8 vorgesehen.
      Hier nun meine geplante Belegung.

      DMX-04.jpg
      Jetzt werde ich mein Steckbrett bestücken und mich an den Code setzen.

      Bis dann. a_58_b54cfdb4
      Man ist niemals zu alt, um Neues zu lernen.

      Es gibt keine dummen Fragen, nur dumme Antworten.
    • Heute wurde das Steckbrett von der letzten Schaltung befreit und für deas DMX-Projekt vorbereitet.
      Für die Verbindung zu den Scheinwerfern musste ein Adapter gebaut werden.

      DMX-05.jpg

      Dann war das Steckbrett an der Reihe.
      Aufgebaut wurde ein ATMega8, ein DS75176 BN als Pegelwandler, eine LED Kette, 3 Einstellpotis und eine Tastenkette.

      DMX-06.jpg

      Die Hardware ist somit bereit.
      Jetzt geht es an das Programm.
      Bis dann. a_58_b54cfdb4
      Man ist niemals zu alt, um Neues zu lernen.

      Es gibt keine dummen Fragen, nur dumme Antworten.
    • Ich habe mir das sorgfaltige Arbeiten bei meinen ersten Basic-Schritten angewöhnt.
      Dabei auch das excessive Auskommentieren des Codes.
      Sonst weiß ich irgendwann nicht mehr, was ich dort und warum codiert habe. :whistling:

      Nun zum aktuellen Stand.


      Die erste Programmierrunde ist durch.
      Leider nur mit teilweisem Erfolg.

      Der µC läuft mit 8Mhz Taktung intern.
      Für die Programmierdauer sind 2 Testroutinen eingebaut.
      Eine Alive-LED, um zu sehen, das der Loop einwandfrei läuft.
      Das LCD-Display, um mir relevante Werte ausgeben zu können.

      Die Grundwerte für das Array werden bei Programmstart aus einem Datapool eingelesen.
      Hierbei ist für den 1. Test beimKanal für den 1. Scheinwerfer (Adr. 1-10) der Rotwert (Kanal(1)) auf Maximum gestellt.
      Die Einstellpotis für die Dimmwerte (Floor, Stage) werden abgefragt, der Wertebereich von 1023 auf 255 umgerechnet und die neuen Werte an die jeweiligen Stellen ins Array geschrieben.
      Das funktioniert lt. LCD prima.

      Nur die Senderoutine von Limo will nicht so recht.

      --------

      Ucsr0b.txen0 = 0 'Usart ausschalten
      Usart_tx = 0 'Reset abfallende Flanke
      Waitus 200'minimale Länge des Resets
      Usart_tx = 1 'Reset aufsteigende Flanke
      Ucsr0b.txen0 = 1 'Usart einschalten
      Waitus 16 'MARK zw. RESET und Startbyte min. 8us
      Printbin Null_byte(1) ; 1 ; Puffer1(1) ; 60 'jetzt die Daten
      Sendmerker = 0

      ----------

      Wobei mir einige Stellen auch nicht so ganz klar sind.

      Ucsr0b.txen0 = 0==>Hier wird mir immer Syntaxfehler ausgeworfen
      In Limos Quellcode für den DMX Tester wird die Usart anders ausgeschaltet.
      Nach Änderung auf Ucsrb.txen = 0==> kein Fehler mehr

      Beim Einschalten das gleiche Bild. Ucsr0b.txen0 = 1 ==>Syntaxfeher
      Ucsrb.txen = 1==> kein Fehler mehr

      Für Null_byte(1) habe ich Kanal(1) entsprechend meines Arrays eingesetzt.

      Die Aufgabe des Puffer1 und dem Sendmerker sind mir allerdings völlig unklar.

      Die Reaktion des angeschlossenen Scheinwerfers ist gleich NULL. ;(

      Hier der bisherige Programmstand.

      DSM-Steuerung Willie Vers.1 .bas

      Wo mache ich was falsch? ?(
      Man ist niemals zu alt, um Neues zu lernen.

      Es gibt keine dummen Fragen, nur dumme Antworten.
    • BASCOM-Quellcode

      1. '***** Aliaszuweisungen
      2. Led -red1 Alias Portd.5
      3. Led -green Alias Portd.6
      4. Led -blue Alias Portd.7
      5. Led -amber Alias Portb.0
      6. Led -stage Alias Portb.1
      7. Led -floor Alias Portb.2
      8. Led -auto Alias Portb.3
      9. Led -uv Alias Portb.4
      10. Led -white Alias Portb.5
      11. Led -wifi Alias Portd.4
      Alles anzeigen
      das würde mich wundern, wenn es funktioniert. ein - ist ein Rechenzeichen, bei Namen muss man ein _ verwenden. Man sieht das auch im editor in der Schreibweise. Warum kein Fehler generiert wird, keine Ahnung, vielleicht weil noch 'toter code'.
      Der Sendmerker wird in der isr alle 0,1 Sekunden auf 1 gesetzt. Das heißt dein send_dmx wird auch nur alle 0,1S ausgeführt, egal wie oft die aufrufenden subs angesprungen werden.
      Mehr Tipps kann ich grad noch nicht geben.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Willie schrieb:

      Ucsr0b.txen0 = 0==>Hier wird mir immer Syntaxfehler ausgeworfen
      In Limos Quellcode für den DMX Tester wird die Usart anders ausgeschaltet.
      Nach Änderung auf Ucsrb.txen = 0==> kein Fehler mehr

      Beim Einschalten das gleiche Bild. Ucsr0b.txen0 = 1 ==>Syntaxfeher
      Ucsrb.txen = 1==> kein Fehler mehr
      Da lohnt sich ein Blick ins Datenblatt. Gerade Registernamen ändern sich von Kontroller zu Kontroller. Der mega8 hat relativ wenige Register im Vergleich zum mega88 zB. Bei dem bekommen dann einige Register kurzerhand einen Index wie 0 oder 1 in den Registernamen verpasst.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • BASCOM-Quellcode

      1. Adcval2 = Getadc(2) ' Dimmerabfrage für Stage
      2. Dimmrechnen = Adcval2 / 4 ' Umrechnung ADC-Wertebereich 0-1023 -> 0-255
      3. Dimmwert2 = Dimmrechnen ' Übergabe Word(L-Byte) -> Byte
      4. If Dimmwert2 <> Kanal(47) Then ' bei Änderung neuen Wert setzen
      5. Kanal(47) = Dimmwert2
      6. Kanal(57) = Dimmwert2
      7. End If
      8. '**** DMX senden
      9. Ucsrb.txen = 0 'Usart ausschalten
      10. Usart_tx = 0 'Reset abfallende Flanke
      11. Waitus 200 'minimale Länge des Resets
      12. Usart_tx = 1 'Reset aufsteigende Flanke
      13. Ucsrb.txen = 1 'Usart einschalten
      14. Waitus 16 'MARK zw. RESET und Startbyte min. 8us
      15. Printbin Kanal(1) ; 1 ; Puffer1(1) ; 60 'jetzt die Daten
      16. Sendmerker = 0
      Alles anzeigen
      Jetzt! Du hast deine Daten in den Kanal(xx) gepackt. In dem Puffer1(xx) müssen sie rein. Kanal(1) ist bei Limo ein Nullbyte. Vergleiche noch mal den code.

      Dim Null_byte(1) As Byte steht bei Limo und bei send_DMX

      Ucsrb.txen = 0 'Usart ausschalten
      Usart_tx = 0 'Reset abfallende Flanke
      Waitus 200 'minimale Länge des Resets
      Usart_tx = 1 'Reset aufsteigende Flanke
      Ucsrb.txen = 1 'Usart einschalten
      Waitus 16 'MARK zw. RESET und Startbyte min. 8us
      Printbin Null_byte(1) ; 1 ; Puffer1(1) ; 255 'jetzt die Daten
      Printbin Puffer2(1) ; 255

      da wird einfach ein &F00 gesendet und anschließend die Daten aus dem Puffer1
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Vielen Dank für deine Durchsicht.
      Mit den Aliaszuweisungen stimmt. a_45_132ca9f5
      Das ist z.Z. noch toter Code in Vorbereitung.
      Spätestens bei der Benutzung wäre ich darüber gestolpert.

      tschoeatsch schrieb:

      Der Sendmerker wird in der isr alle 0,1 Sekunden auf 1 gesetzt.
      Bei mir ist doch gar keine isr eingebunden, wo sendmerker =1 gesetzt wird?

      Registernamen von Controllern hatte ich bisher noch nicht auf dem Schirm.
      Das erklärt den Unterschied.

      Bei Limo war Null-Byte ein 255er Array.
      Daher dachte ich , dass ich einfach auf mein Array umswitchen kann.
      Wenn ich deine Erklärung richtig verstehe, müssen meine Steuerdaten im Puffer1 stehen.
      Muss die Routine zwingend Puffer1(1) für die Übertragung haben?
      Oder kann ich Puffer1(1) einfach durch Kanal(1) ersetzen?
      Wenn nur Puffer1 zulässig, Ist der Puffer1 nach der Übertragung leer?

      Oh Mann, alles neue Sachen , die ich bisher bei der Programmierung noch nicht brauchte. 8|
      Ich werde jedenfalls mal die verschiedenen Wege ausprobieren.
      Versuch macht klug.
      Man ist niemals zu alt, um Neues zu lernen.

      Es gibt keine dummen Fragen, nur dumme Antworten.
    • Willie schrieb:

      Bei Limo war Null-Byte ein 255er Array.

      Dim Puffer1(255) As Byte
      Dim Puffer2(255) As Byte
      Dim Null_byte(1) As Byte
      ist nur 1 byte

      Willie schrieb:

      Oder kann ich Puffer1(1) einfach durch Kanal(1) ersetzen?
      kannst du, Namen sind nur Namen.

      Willie schrieb:

      Ist der Puffer1 nach der Übertragung leer?
      da wird nix verändert.

      Willie schrieb:

      Bei mir ist doch gar keine isr eingebunden, wo sendmerker =1 gesetzt wird?
      drum ist das auch witzlos, kannst du weg lassen. Limo wollte halt nicht bei jedem Schleifendurchlauf das send_DMX.
      Bei dir bestimmen die waitms in der Hauptschleife, wieoft DMX_senden aufgerufen wird.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Danke, so langsam kommt bei mir Licht ins Dunkel.
      Ist halt nicht so leicht, aus anderen Programmen für mich relevante Teile herauszusuchen.

      Jetzt muss ich erst einmal zu meiner wöchentlichen Rückenschule.
      Heute abend wird der Code entsprechend geändert.
      Dann sehen wir weiter.
      Man ist niemals zu alt, um Neues zu lernen.

      Es gibt keine dummen Fragen, nur dumme Antworten.
    • Zurück vom Sport hab ich mich gleich an den Code gemacht.

      Die Aliaszuweisungen sind korrigiert.
      Der Sendmerker ist herausgeworfen.
      Das Null-Byte ist wieder eingefügt.
      Puffer1 wurde durch meinen Arraynamen Kanal ersetzt.

      DSM-Steuerung Willie Vers.2.bas

      Und siehe da.
      ES FUNKTIONIERT !!!!! a_217_27b18bee a_64_3a718cae


      Entsprechend des Arrayeintrags ist Rot am Scheinwerfer eingeschaltet und läßt sich super über das Dimmerpoti einstellen.
      Die Helligkeit folgt ohne irgendeine Latenz der Potidrehbewegung.

      Danke tschoeatsch !!! a_14_3ef964b0 :thumbsup: a_14_3ef964b0


      Jetzt kann ich mir die nächsten Routinen vornehmen.
      Man ist niemals zu alt, um Neues zu lernen.

      Es gibt keine dummen Fragen, nur dumme Antworten.
    • Schön,dass es geht. Ich hatte leider keine Zeit zu antworten, aber tschoeatsch hat das ja prima erklärt. Erstaunlich, wie schnell er sich immer in fremden Programmen zurecht findet, ich hab da immer so meine Probleme.
      Dass die UART-Register verschiedene Bezeichnungen haben, hatte ich vergessen zu erwähnen. Da muss man dann wirklich mal im DB nachschauen. Ich empfehle dir aber trotzdem, einen Quarz zu verwenden. Ich habe DMX-Steuerungen in Fahrzeugen(Stretchlimousinen) verbaut und da Probleme bei niedrigen Temperaturen gehabt. Ein Umrüsten auf 16MHz Quarz hat da geholfen.
    • Hallo Limo.

      du musst dich nicht dafür rechtfertigen, dass du nicht gleich antworten konntest.
      Das ist schon i.O..

      Ich bin im Vorruhestand und kann mir meine Zeit einteilen.
      Es soll aber noch Menschen geben (wird dann meistens vergessen), die noch im Arbeitsleben stehen oder auch anderweitige Verpflichtungen haben, die erheblich höhere Priorität als das Hobby genießen, und dann erst später antworten können.
      Wenn ich darüber hinaus bedenke, wie lange man heutzutage z.B. für einen Facharzttermin warten muss, so sind die Antwortzeiten hier (von wem auch immer) für unsere Luxusprobleme doch verdammt kurz.
      Da haben manche Menschen mit viel existenzielleren Problemen zu kämpfen.

      Das Zurechtfinden in fremden Programmen kann ich nur zu gut nachvollziehen.

      Ich habe mir mal den USART-Teil des Datenblattes zu Gemüte geführt und muss leider zugeben, dass ich nichts über Registernamen gefunden und vom Rest auch so gar nichts verstanden habe.
      Zumal ich die Codeschnipsel in Assembler und C auch in keinster Weise nachvollziehen konnte.

      Zur Verwendung des externen Quarzes bin ich da, glaube ich zumindest, etwas besser durchgestiegen.
      Da ich mir im ersten Versuch durch Umstellung des KLA987-Wertes auf "ext. Clock" den Zugrifff auf den Mega8 selbst verbaut habe a_45_132ca9f5 , habe ich mal genauer im Datenblatt und bei Google nachgesehen.

      Schaut mal bitte drüber, ob ich nun die richtigen Umstellungsschritte zusammengefasst habe, bevor ich den nächsten Mega8 auf dem Gewissen habe. :whistling:

      1. Hardware - Bestückung des ATMega8 mit Quarz und 2x 22pF an XTAl1 und XTAL2
      2. Hardware - Einstellung KLA987 und CKOPT0 im ATMega8 (siehe Markierung)

      KLA987.jpg

      CKOPT0.jpg


      3. Software- Änderung auf $crystal = 16000000 und auf $baud = 500000

      Wenn ich das System richtig verstanden habe, muss ich den $baud-Wert auch verdoppeln, um die Zeiten auf der DMX-Leitung auf den höheren Takt anzupassen.

      Das sollte m.M. nach eigentlich Alles sein.
      Man ist niemals zu alt, um Neues zu lernen.

      Es gibt keine dummen Fragen, nur dumme Antworten.
    • Deine fuses hast du richtig eingestellt, denke ich.
      Wenn du dem compiler die Taktfrequenz mit $crystal=16000000 mitteilst, dann passt der alle Einstellungen an, die davon abhängen. Du musst also die baud-Rate genauso wie die waits so angeben, wie sie sein sollen. Also möglichst alles wahrheitsgemäß im Programm eintragen. Dei $baud=500000 ist somit falsch, Du willst ja 250000 und das must du eintragen.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • DMX empfangen geht mit Bascom übrigens genauso einfach. Hier ein funktionierendes Programm für einen 2313 mit 3 PWM Ausgängen. 3 Transistoren noch dazu und fertig ist die LED RGB-Stripe Steuerung. die DIP-Schalter kannst du auch noch weglassen, wenn du die Adresse im Programm festlegst.


      Quellcode

      1. '--------------------------------------------------------------
      2. ' DMX-Empfang.bas
      3. '--------------------------------------------------------------
      4. $regfile = "attiny2313.dat"
      5. $hwstack = 32
      6. $swstack = 10
      7. $framesize = 40
      8. $crystal = 8000000
      9. $baud = 250000
      10. 'USART auf DMX512 einstellen
      11. Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 2 , Databits = 8 , Clockpol = 1
      12. On Urxc Empfang
      13. Enable Urxc
      14. Enable Interrupts
      15. 'PWM Timer setzen
      16. Config Timer0 = Pwm , Pwm = On , Compare A Pwm = Clear up , Compare B Pwm = Clear up , Prescale = 64
      17. Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear up , Compare B Pwm = Clear up , Prescale = 64
      18. 'Ausgänge
      19. Config Portb.2 = Output
      20. Config Portb.3 = Output
      21. Config Portb.4 = Output
      22. 'Eingänge für DIP-Schalter Adresse
      23. Config Pind.5 = input
      24. Config Pind.4 = input
      25. Config Pind.3 = input
      26. Config Pind.2 = input
      27. Config Pind.1 = input
      28. Config Pina.1 = input
      29. Config Pina.0 = input
      30. 'Pullup's ein
      31. Porta.0 = 1
      32. Porta.1 = 1
      33. Portd.1 = 1
      34. Portd.2 = 1
      35. Portd.3 = 1
      36. Portd.4 = 1
      37. Portd.5 = 1
      38. 'Watchdog aktivieren, wenn 512 mS kein DMX-Signal empfangen wird, RGB auf Null setzen
      39. Config Watchdog = 512 'Führe nach 512 mSec. eine Reset durch
      40. Start Watchdog ' Starte den Watchdog
      41. 'Puffer für das angekommene Byte aus dem DMX-Signal
      42. Dim X As Byte
      43. 'Der aktuelle Kanal in der Schleife
      44. Dim Kanal As Word
      45. Dim Adresse_R as Word
      46. Dim Adresse_G as Word
      47. Dim Adresse_B as Word
      48. Dim R As Byte
      49. Dim G As Byte
      50. Dim B As Byte
      51. Adresse_R=0
      52. 'Adresse von DIP-Schalter einlesen
      53. if pind.5=0 then Adresse_R=Adresse_R+1
      54. if pind.4=0 then Adresse_R=Adresse_R+2
      55. if pind.3=0 then Adresse_R=Adresse_R+4
      56. if pind.2=0 then Adresse_R=Adresse_R+8
      57. if pina.0=0 then Adresse_R=Adresse_R+16
      58. if pina.1=0 then Adresse_R=Adresse_R+32
      59. if pind.1=0 then Adresse_R=Adresse_R+64
      60. Adresse_g=Adresse_r+1
      61. Adresse_B=Adresse_r+2
      62. R = 0
      63. G = 0
      64. B = 0
      65. Do
      66. Pwm0a = R 'Rot
      67. Pwm1a = G 'Grün
      68. Pwm1b = B 'Blau
      69. Loop
      70. '--------------------------------------------------------------
      71. '
      72. 'Empfang:
      73. '
      74. 'steht in der USART ein Byte an, wird ein Interrupt
      75. 'ausgelöst und folgender Code abgearbeitet:
      76. '--------------------------------------------------------------
      77. Empfang:
      78. X = Udr
      79. If Ucsra.fe = 1 Then
      80. Kanal = 0
      81. Else
      82. Incr Kanal
      83. If Kanal = Adresse_R Then R = X
      84. If Kanal = Adresse_G Then G = X
      85. If Kanal = Adresse_B Then B = X
      86. End If
      87. Reset Watchdog
      88. Return
      Alles anzeigen
      Gruß Thomas
    • Hallo Thomas;
      vielen Dank, aber derzeit ist bei mir nichts in der Richtung geplant.
      Aber man weiß ja nie – also merken!

      Bei meiner Schaltung geht es voran.
      Die Umstellung auf 16Mhz-Taktung hat geklappt.
      Alle Lichtfunktionen sind programmiert und funktionieren weitestgehend.
      Einzig die Automatikfunktion hat noch einen Schönheitsfehler, den ich noch beseitigen muss.
      Das ist aber nur noch Fleißarbeit, den Code umzuschreiben.

      Für meine derzeitige Bühnensteuerung habe ich ja schon 2,4GHz Empfänger für die drahtlose Anbindung im Einsatz.

      DMX-07.jpg

      Ich habe meiner Schaltung deshalb natürlich zusätzlich zu den XLR-Anschlüssen noch eine 2,4GHz Sendestrecke als Modul vom freundlichen Chinamann spendiert.

      DMX-08.jpg


      Das Modul soll über den WIFI-Taster an- und abschaltbar sein.
      Da das Modul aber gemessene 38,5 mA verbraucht, und somit schon fast am Pinmaximum liegt, habe ich es für die Betriebssicherheit über einen Transitor 2N2222 eingeschaltet.
      Das Modul ist aber schon ein wenig mäkelig.
      Der CE-Spannungsabfall veranlaßt es schon zur Arbeitsverweigerung.
      Es will halt volle 5V haben.
      Also kam als Schalter ein Reedrelais zum Einsatz und damit funktioniert es prächtig.
      Dadurch benötige ich auch nur eine Gesamtspannugsversorgung von 5V ohne weitere Spannungsregler.

      Hier ist nun auch zu sehen, warum mein Versuchsaufbau immer so großflächig ist.
      Ich muss mit den dicken Fingern ja auch im Kabelwust hantieren können. ;)

      DMX-09.jpg

      Jetzt mache ich mich mal an die Auswertung des Audiosignals, um das Lauflicht per Sound zu steuern.
      Da ist wieder ein wenig experimentieren notwendig.
      Man ist niemals zu alt, um Neues zu lernen.

      Es gibt keine dummen Fragen, nur dumme Antworten.
    • Willie schrieb:

      Ich habe mir mal den USART-Teil des Datenblattes zu Gemüte geführt und muss leider zugeben, dass ich nichts über Registernamen gefunden und vom Rest auch so gar nichts verstanden habe.
      Du kannst auch in der zugehörigen *.dat Datei von Bascom die Registernamen ansehen.
      Die Dateien sind im Hauptverzeichnis von Bascom und öffnen lassen sie sich mit einem Editor.

      Hier mal ein Auszug von der m8def.dat

      Spoiler anzeigen

      [IO]
      SREG =$3f
      SPH =$3e
      SPL =$3d
      GIMSK =$3b
      GICR =$3b ; new name for GIMSK
      GIFR =$3a
      TIMSK =$39
      TIFR =$38
      SPMCR =$37
      SPMCSR=$37
      I2CR =$36
      TWCR =$36
      MCUCR =$35
      MCUSR =$34 ; For compatibility,
      MCUCSR =$34 ; keep both names
      TCCR0 =$33
      TCNT0 =$32
      COUNTER0=$32
      TIMER0=$32
      OSCCAL =$31
      SFIOR =$30
      TCCR1A =$2f
      TCCR1B =$2e
      TCNT1H =$2d
      TCNT1L =$2c
      OCR1AH =$2b
      OCR1AL =$2a
      OCR1BH =$29
      OCR1BL =$28
      ICR1H =$27
      ICR1L =$26
      TCCR2 =$25
      TCNT2 =$24
      TIMER2=$24
      COUNTER2=$24
      OCR2 =$23
      PWM2=$23
      COMPARE2=$23
      ASSR =$22
      WDTCR =$21
      UBRRH =$20 ; Note! UCSRC equals UBRRH
      UBRRHI =$20
      EEARH =$1f
      EEARL =$1e
      EEDR =$1d
      EECR =$1c
      PORTB =$18
      DDRB =$17
      PINB =$16
      PORTC =$15
      DDRC =$14
      PINC =$13
      PORTD =$12
      DDRD =$11
      PIND =$10
      SPDR =$0f
      SPSR =$0e
      SPCR =$0d
      UDR =$0c
      UCSRA =$0b
      UCSR0A =$0b
      USR =$0b
      UCSRB =$0a
      UCR =$0a
      UCSRC =$20 ; Note! UCSRC equals UBRRH
      UBRRL =$09
      UBRR =$09
      ACSR =$08
      ADMUX =$07
      ADCSR =$06
      ADCSRA =$06
      ADCH =$05
      ADCL =$04
      I2DR =$03
      I2AR =$02
      I2SR =$01
      I2BR =$00
      TWDR =$03
      TWAR =$02
      TWSR =$01
      TWBR =$00
      Eine Lösung habe ich nicht, aber mir gefällt Ihr Problem.