-
        

Ergebnis 1 bis 2 von 2

Thema: Fragen zu Bascom DMXSLAVE

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    29.01.2010
    Beiträge
    8

    Fragen zu Bascom DMXSLAVE

    Anzeige

    Hallo Leute,

    habe ein paar fragen zum HIGHLEVEL Befehl "Config DMXSLAVE" in Bascom.

    Hier erst mal mein Code:

    Code:
    '$sim
    $regfile = "m8515.dat"                                      'Atmega 8515-16PU
    $crystal = 16000000                                         'Quarz 8Mhz extern
    $hwstack = 100
    $swstack = 100
    $framesize = 100
    Config Dmxslave = Com1 , Channels = 9 , Store = 9
    Enable Interrupts
    
    
    
    'Programmmvariablen:
    Dim Teiladresse1 As Bit
    Dim Teiladresse2 As Byte
    Dim Teiladresse3 As Byte
    Dim Teiladresse4 As Byte
    Dim Teiladresse5 As Byte
    Dim Teiladresse6 As Byte
    Dim Teiladresse7 As Byte
    Dim Teiladresse8 As Byte
    Dim Teiladresse9 As Word
    Dim Adresse As Word
    Dim Timer_zaehler As Byte
    Dim Dimmer_kanal_1 As Byte
    Dim Dimmer_kanal_2 As Byte
    Dim Dimmer_kanal_3 As Byte
    Dim Dimmer_kanal_4 As Byte
    Dim Dimmer_kanal_5 As Byte
    Dim Dimmer_kanal_6 As Byte
    Dim Dimmer_kanal_7 As Byte
    Dim Dimmer_kanal_8 As Byte
    Dim Dimmer_kanal_9 As Byte
    
    
    'Subs / Funktionen deklarieren
    Declare Sub Dmx_adresse_auslesen
    Declare Sub Led_rot_doppelblinken
    
    
    
    'Eingänge zuweisen
    Config Pinc.0 = Input                                       'Eingänge von PortC.0 bis PortC.7 = DIP-Schalter
    Config Pinc.1 = Input
    Config Pinc.2 = Input
    Config Pinc.3 = Input
    Config Pinc.4 = Input
    Config Pinc.5 = Input
    Config Pinc.6 = Input
    Config Pinc.7 = Input
    Config Pine.1 = Input                                       'Eingänge von PortE.1 bis PortE.2 = DIP-Schalter
    Config Pine.2 = Input
    Config Pind.5 = Input                                       'Spare 1 (Ausgabe Invertieren)
    Config Pind.4 = Input                                       'Spare 2
    Config Pind.3 = Input                                       'Spare 3
    
    
    'Ausgänge zuweisen
    Config Portd.7 = Output                                     'LED Rot (Fehler)
    Config Portd.6 = Output                                     'LED Orange (DMX Aktiv)
    Config Porte.0 = Output                                     'Kanal 1
    Config Porta.7 = Output                                     'Kanal 2
    Config Porta.6 = Output                                     'Kanal 3
    Config Porta.5 = Output                                     'Kanal 4
    Config Porta.4 = Output                                     'Kanal 5
    Config Porta.3 = Output                                     'Kanal 6
    Config Porta.2 = Output                                     'Kanal 7
    Config Porta.1 = Output                                     'Kanal 8
    Config Porta.0 = Output                                     'Kanal 9
    
    
    
    
    'Eingänge Alias Zuweisen
    Dip_1 Alias Pinc.0
    Dip_2 Alias Pinc.1
    Dip_3 Alias Pinc.2
    Dip_4 Alias Pinc.3
    Dip_5 Alias Pinc.4
    Dip_6 Alias Pinc.5
    Dip_7 Alias Pinc.6
    Dip_8 Alias Pinc.7
    Dip_9 Alias Pine.2
    Dip_10 Alias Pine.1
    Spare_1 Alias Pind.5
    Spare_2 Alias Pind.4
    Spare_3 Alias Pind.3
    
    
    'Ausgänge Alias Zuweisen
    Led_rot Alias Portd.7                                       'Fehler LED
    Led_orange Alias Portd.6                                    'DMX aktiv LED
    Kanal_1 Alias Porte.0
    Kanal_2 Alias Porta.7
    Kanal_3 Alias Porta.6
    Kanal_4 Alias Porta.5
    Kanal_5 Alias Porta.4
    Kanal_6 Alias Porta.3
    Kanal_7 Alias Porta.2
    Kanal_8 Alias Porta.1
    Kanal_9 Alias Porta.0
    
    
    'interne Pullup aktivieren
    Portc.0 = 1
    Portc.1 = 1
    Portc.2 = 1
    Portc.3 = 1
    Portc.4 = 1
    Portc.5 = 1
    Portc.6 = 1
    Portc.7 = 1
    Porte.2 = 1
    Porte.1 = 1
    Portd.5 = 1
    Portd.4 = 1
    Portd.3 = 1
    
    
    
    Config Timer0 = Timer , Prescale = 1
    On Timer0 Timerueberlauf
    Enable Timer0
    
    
    '##################START#################
    
    
    'Power-On Sequenz
    Led_rot = 1
    Led_orange = 1
    Waitms 500
    Led_rot = 0
    Led_orange = 0
    
    
    
    
    
    'Hauptschleife
    
    Do
    Main:
    
    
    
    
    
    'Adresse auslesen:
    Call Dmx_adresse_auslesen
    
    
    'Adresse auswerten:
    If Adresse = 0 And Dip_10 = 1 Then
    Call Led_rot_doppelblinken
    End If
    
    
    
    'Test
    
    If _dmx_received(1) = 1 Then
    Dimmer_kanal_1 = 255
    End If
    
    dimmer_kanal_2 = _dmx_received(2)
    
    
    
    
    
    
    
    
    
    Loop
    
    
    'Sub DMX_Adresse_Auslesen
    Sub Dmx_adresse_auslesen:
    
    'Dip-Schalter abfragen
      If Dip_1 = 0 Then
      Teiladresse1 = 1
      Else
      Teiladresse1 = 0
      End If
    
      If Dip_2 = 0 Then
      Teiladresse2 = 2
      Else
      Teiladresse2 = 0
      End If
    
      If Dip_3 = 0 Then
      Teiladresse3 = 4
      Else
      Teiladresse3 = 0
      End If
    
      If Dip_4 = 0 Then
      Teiladresse4 = 8
      Else
      Teiladresse4 = 0
      End If
    
      If Dip_5 = 0 Then
      Teiladresse5 = 16
      Else
      Teiladresse5 = 0
      End If
    
      If Dip_6 = 0 Then
      Teiladresse6 = 32
      Else
      Teiladresse6 = 0
      End If
    
      If Dip_7 = 0 Then
      Teiladresse7 = 64
      Else
      Teiladresse7 = 0
      End If
    
      If Dip_8 = 0 Then
      Teiladresse8 = 128
      Else
      Teiladresse8 = 0
      End If
    
      If Dip_9 = 0 Then
      Teiladresse9 = 256
      Else
      Teiladresse9 = 0
      End If
    
    'Adresse zusammenrechnen
    
      Adresse = 0
      Adresse = Adresse + Teiladresse1
      Adresse = Adresse + Teiladresse2
      Adresse = Adresse + Teiladresse3
      Adresse = Adresse + Teiladresse4
      Adresse = Adresse + Teiladresse5
      Adresse = Adresse + Teiladresse6
      Adresse = Adresse + Teiladresse7
      Adresse = Adresse + Teiladresse8
      Adresse = Adresse + Teiladresse9
    
    'Adresse festlegen
      _dmx_address = Adresse
    
    
    End Sub
    
    
    
    
    
    
    'Timerüberlauf
    
    Timerueberlauf:
    
    
     Timer0 = 6
    'If Timer_zaehler = 255 Then
    'Timer_zaehler = 0
    'End If
    
    Incr Timer_zaehler                                          ' Zähler hochzählen lassen
    
    
     If Timer_zaehler < Dimmer_kanal_1 Then
        Kanal_1 = 1
      Else
        Kanal_1 = 0
      End If
    
      If Timer_zaehler < Dimmer_kanal_2 Then
        Kanal_2 = 1
      Else
        Kanal_2 = 0
      End If
    
      If Timer_zaehler < Dimmer_kanal_3 Then
        Kanal_3 = 1
      Else
        Kanal_3 = 0
      End If
    
      If Timer_zaehler < Dimmer_kanal_4 Then
        Kanal_4 = 1
      Else
        Kanal_4 = 0
      End If
    
      If Timer_zaehler < Dimmer_kanal_5 Then
        Kanal_5 = 1
      Else
        Kanal_5 = 0
      End If
    
      If Timer_zaehler < Dimmer_kanal_6 Then
        Kanal_6 = 1
      Else
        Kanal_6 = 0
      End If
    
      If Timer_zaehler < Dimmer_kanal_7 Then
        Kanal_7 = 1
      Else
        Kanal_7 = 0
      End If
    
      If Timer_zaehler < Dimmer_kanal_8 Then
        Kanal_8 = 1
      Else
        Kanal_8 = 0
      End If
    
      If Timer_zaehler < Dimmer_kanal_9 Then
        Kanal_9 = 1
      Else
        Kanal_9 = 0
      End If
    
    
    
    Return
    
    
    'Sub Led_rot_doppelblinken
    Sub Led_rot_doppelblinken:
    
    Led_rot = 1
    Waitms 50
    Led_rot = 0
    Waitms 20
    Led_rot = 1
    Waitms 50
    Led_rot = 0
    Waitms 200
    End Sub
    
    
    
    
    
    
    'Ende des Programms
    End
    1. Das umwandeln von _dmx_received(x) in die Dimmerwerte funktioniert
    leider nicht. Kann mir jemand sagen warum?
    2. Wie kann ich mit "DMXSLAVE" auswerten, ob ein DMX-Signal
    angeschlossen ist?
    3. Wie kann ich feststellen, ob momentan Daten empfangen werden?
    4. Wie kann ich feststellen, ob das DMX Signal vertauscht ist?

    Ich hoffe ihr könnt mir da ein bisschen mit Helfen.

    Danke schonmal

    PS: Im Anhang meine Fuses für den 8051

    Bye
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken fuses2.png  

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    29.01.2010
    Beiträge
    8
    Hi ,

    habe mal meinen Code noch umgestellt um es zu vereinfachen aber leider funktioniert der auch nicht.

    jemand eine Idee???

    Bye

    Code:
    
    '$sim
    $regfile = "m8515.dat"                                      'Atmega 8515-16PU
    $crystal = 16000000                                         'Quarz 16Mhz extern
    $hwstack = 100
    $swstack = 100
    $framesize = 100
    $baud = 250000
    Config Dmxslave = Com1 , Channels = 9 , Start = 1 , Store = 9
    Enable Interrupts
    
    
    
    
    
    'Eingänge zuweisen
    Config Pinc.0 = Input                                       'Eingänge von PortC.0 bis PortC.7 = DIP-Schalter
    Config Pinc.1 = Input
    Config Pinc.2 = Input
    Config Pinc.3 = Input
    Config Pinc.4 = Input
    Config Pinc.5 = Input
    Config Pinc.6 = Input
    Config Pinc.7 = Input
    Config Pine.1 = Input                                       'Eingänge von PortE.1 bis PortE.2 = DIP-Schalter
    Config Pine.2 = Input
    Config Pind.5 = Input                                       'Spare 1 (Ausgabe Invertieren)
    Config Pind.4 = Input                                       'Spare 2
    Config Pind.3 = Input                                       'Spare 3
    
    
    'Ausgänge zuweisen
    Config Portd.7 = Output                                     'LED Rot (Fehler)
    Config Portd.6 = Output                                     'LED Orange (DMX Aktiv)
    Config Porte.0 = Output                                     'Kanal 1
    Config Porta.7 = Output                                     'Kanal 2
    Config Porta.6 = Output                                     'Kanal 3
    Config Porta.5 = Output                                     'Kanal 4
    Config Porta.4 = Output                                     'Kanal 5
    Config Porta.3 = Output                                     'Kanal 6
    Config Porta.2 = Output                                     'Kanal 7
    Config Porta.1 = Output                                     'Kanal 8
    Config Porta.0 = Output                                     'Kanal 9
    
    
    
    
    'Eingänge Alias Zuweisen
    Dip_1 Alias Pinc.0
    Dip_2 Alias Pinc.1
    Dip_3 Alias Pinc.2
    Dip_4 Alias Pinc.3
    Dip_5 Alias Pinc.4
    Dip_6 Alias Pinc.5
    Dip_7 Alias Pinc.6
    Dip_8 Alias Pinc.7
    Dip_9 Alias Pine.2
    Dip_10 Alias Pine.1
    Spare_1 Alias Pind.5
    Spare_2 Alias Pind.4
    Spare_3 Alias Pind.3
    
    
    'Ausgänge Alias Zuweisen
    Led_rot Alias Portd.7                                       'Fehler LED
    Led_orange Alias Portd.6                                    'DMX aktiv LED
    Kanal_1 Alias Porte.0
    Kanal_2 Alias Porta.7
    Kanal_3 Alias Porta.6
    Kanal_4 Alias Porta.5
    Kanal_5 Alias Porta.4
    Kanal_6 Alias Porta.3
    Kanal_7 Alias Porta.2
    Kanal_8 Alias Porta.1
    Kanal_9 Alias Porta.0
    
    
    'interne Pullup aktivieren
    Portc.0 = 1
    Portc.1 = 1
    Portc.2 = 1
    Portc.3 = 1
    Portc.4 = 1
    Portc.5 = 1
    Portc.6 = 1
    Portc.7 = 1
    Porte.2 = 1
    Porte.1 = 1
    Portd.5 = 1
    Portd.4 = 1
    Portd.3 = 1
    
    
    
    '##################START#################
    
    
    'Power-On Sequenz
    Led_rot = 1
    Led_orange = 1
    Waitms 1000
    Led_rot = 0
    Led_orange = 0
    Waitms 1000
    Led_rot = 1
    Led_orange = 1
    Waitms 1000
    Led_rot = 0
    Led_orange = 0
    waitms 1000
    
    
    
    
    'Hauptschleife
    
    Do
    Main:
    
    If _dmx_received(1) > 0 Then
    Kanal_1 = 1
    End If
    
    If _dmx_received(2) > 0 Then
    Kanal_2 = 1
    End If
    
    If _dmx_received(3) > 0 Then
    Kanal_3 = 1
    End If
    
    If _dmx_received(4) > 0 Then
    Kanal_4 = 1
    End If
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    Loop
    
    
    
    
    
    
    
    
    
    'Ende des Programms
    End

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •