Hallo Leute,
habe ein paar fragen zum HIGHLEVEL Befehl "Config DMXSLAVE" in Bascom.
Hier erst mal mein Code:
1. Das umwandeln von _dmx_received(x) in die Dimmerwerte funktioniertCode:'$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
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







Zitieren

Lesezeichen