Dmx macht was es will

  • So habe mein dmx Sender und Empfäger fertig . das Problem ist nur der empfänger macht was er will


    wenn ich den puffer am Sender auf Puffer(1)=255 stelle Rot und gelb an (normaler weise muss ja nur rot leuchten)
    wenn ich Puffer(1)=255 und Puffer(2)=255 setze dann geht blau an (normal nur Grün)
    wenn ich(1)=255 und Puffer(2)=255 und puffer(3)=255 setze dann geht alles aus


    wo liegt der fehler in der proramierung ? oder ist da generel was faslch ?


    Sender:


    $regfile = "attiny2313.dat"
    $crystal = 8000000
    $baud = 250000


    Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 2 , Databits = 8 , Clockpol = 1
    Dim Puffer1(10) As Byte
    Dim Null_byte(1) As Byte


    Config Portd.2 = Output
    Dmx_en alias Portd.2
    Dmx_en = 1


    Usart_tx Alias Portd.1
    Config Usart_tx = Output


    Do


    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) ; 10


    Puffer(1) = 255
    Puffer(2) = 100
    Puffer(3) = 255
    loop

  • Also wenn das wirklich der Code wird der Verwendet wird kein Wunder.


    Beim Sender fallen mir auf ohne bis jetz mal den Soft UART benutzt zu haben folgende Dinge auf:
    - Du zählst doch die Zyklen var nur einmal beim Start hoch, wie soll das bitte bei jedem Senden geschen, nur zu Info, alles vor dem Do wird nur einmal ausgeführt.


    außerdem fehlt ein Loop am Ende oder du zeigst nich den gesamten Code.


    Desweiteren versteh ich nich wie das Teil ne fallende Flanke senden soll wenn der USART nicht enabled ist?


    Wo du den Inhalt von Puffer1 und Null_byte defninierst sieht man auchnich, also ganzen Code her oder soll man sich den erraten?

  • So habe die Sende code und Empfangs code noch mal überarbeitet. aber Trozdem läuft es noch nicht. Der Sender Sendet aber der Empfänger tut nix . Weis jemand warum ?

  • Sender:




    $regfile = "attiny2313.dat"


    $crystal = 8000000


    $baud = 250000




    Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 2 , Databits = 8 , Clockpol = 1


    Dim Puffer1(10) As Byte


    Dim Null_byte(1) As Byte




    Config Portd.2 = Output


    Dmx_en alias Portd.2


    Dmx_en = 1




    Usart_tx Alias Portd.1


    Config Usart_tx = Output




    Do




    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) ; 10




    Puffer(1) = 255


    Puffer(2) = 100


    Puffer(3) = 255


    loop


    Das ist der Sende Code

  • Empfänger :



    $regfile = "attiny2313.dat"
    $crystal = 8000000
    $baud = 250000






    Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down


    Config Timer0 = Pwm , Pwm = On , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down


    Config Pinb.2 = output
    Config Pinb.3 = output
    Config Pinb.4 = output


    Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 2 , Databits = 8 , Clockpol = 1
    On Urxc Empfang
    Enable Urxc
    Enable Interrupts




    Dmx_en alias Portd.2
    Dmx_en = Output
    Dmx_en = 0 ' 0 = Empfangen/ 1 = Senden


    Dim X As Byte
    Dim Buffer(10)as Byte
    Dim Kanal As Word




    Do
    OCR1BL = Buffer(1)
    OCR1AL = Buffer(2)
    OCR0A = Buffer(3)
    Loop


    '--------------------------------------------------------------
    '
    'Empfang:
    '
    'steht in der USART ein Byte an, wird ein Interrupt
    'ausgelöst und folgender Code abgearbeitet:
    '--------------------------------------------------------------


    Empfang:


    X = Udr


    If Ucsra.fe = 1 Then
    Kanal = 0
    Else
    Incr Kanal
    If Kanal < 11 And Kanal > 0 Then Buffer(kanal) = X
    End If


    Return

  • Das ist der Fertige code in Bascom. Was hab ich Falsch gemacht bzw was mache ich falsch oder hat jemand so ein code mal in C für mich das ich den sender und empfänger mal testen kann

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