Kleiner 8Kanal DMX Empfänger erweitern

Gast #3572869
Lesenswert?

Hallo Leute,

ich habe diesen DMX 8Kanal PWM Dimmer in Bascom gefunden und auch 
getestet.
Alles geht super, nur ich würde jetzt gerne die Kanäle erweitern.

weiss einer wie ich eine weitere Port Gruppe hinzufügen kann so das ich 
nicht nur 8 Kanäle sondern vielleicht 16Kanäe nutzen kann?
ich stell mir das so vor:
DMX Kanal 1-8  = PortA 0-7
DMX Kanal 9-16 = PortB 0-7
und vielleicht so weiter

denn DIP-Schalter brauch ich nicht umbedingt, kann die Start Adressen 
fest im Code setzen.

Das ist der Bascom Code:
1
$regfile = "m16def.dat"
2
$crystal = 16000000
3

4
Config Dmxslave = Com1 , Channels = 8 , Start = 1 , Store = 8
5
Enable Interrupts
6

7
Config Portc = Output
8
Config Porta = Input
9
Porta = &HFF
10

11
Dim Adress As Byte
12
Dim N As Byte
13
Dim My_counter As Integer
14
Dim Portpin As Byte
15

16
Do
17
   Adress = Pina
18
   _dmx_address = Adress
19
   Incr My_counter
20
   For N = 1 To 8
21
      Portpin = N - 1
22
      If _dmx_received(n) > My_counter Then
23
         Portc.portpin = 0
24
      Else
25
         Portc.portpin = 1
26
      End If
27
   Next N
28
   If My_counter > 255 Then
29
      My_counter = 0
30
   End If
31
Loop
32
End
Gast #3572985
Lesenswert?

Hey,

ja das weiß ich das das Software PWM ist.
Der Code so wie der ist ist voll Funktionsfähig auch per DMX.
Mit denn 8Kanälen funzt der auch super nur weiß ich nicht wie ich denn 
auf mehr erweitern kann.
#3573154
Lesenswert?

Grengou schrieb:
> Hey,
>
> ja das weiß ich das das Software PWM ist.
> Der Code so wie der ist ist voll Funktionsfähig auch per DMX.
> Mit denn 8Kanälen funzt der auch super nur weiß ich nicht wie ich denn
> auf mehr erweitern kann.

INdem du nachsiehst, wo im Code überall die magische Zahl 8 vorkommt, 
darüber nachdenkst, warum die dort steht und wie du dasselbe was du mit 
den 8 Kanälen 1 bis 8 am Port C machst, jetzt mit den 8 Kanälen 9 bis 16 
am Port B machst?

Trau dich! Das was du vor hast, ist sogar recht naheliegend. Der Code 
schreit förmlich danach, wie man ihn verändern könnte.
#3573170
Lesenswert?

Karl Heinz schrieb:

> Trau dich! Das was du vor hast, ist sogar recht naheliegend. Der Code
> schreit förmlich danach, wie man ihn verändern könnte.


Was klingelt bei dir, wenn ich dir vorgebe
1
   For N = 1 To 8
2
      Portpin = N - 1
3

4
      kanal = n
5
      If _dmx_received(kanal) > My_counter Then
6
         Portc.portpin = 0
7
      Else
8
         Portc.portpin = 1
9
      End If
10

11
      kanal = n + 8
12
      If _dmx_received(kanal) > My_counter Then
13
         ....
14

15
   Next N

Auf die Anpassung im Config nicht vergessen!
Gast #3573257
Lesenswert?

De Karl Heiz hat es richtig erfasst, das er vollständig ist.

Hab ich oben was von meinen Code geschrieben?
Nein, hab ja geschrieben das ich denn gefunden habe und das ist der 
originale Code von dem Entwickler, meiner sieht anders aus, ist mit 
einem anderen Chip und anderen Ports.

Ja nach dem Post musste ich weg und da ist mit eingefallen wie ich das 
machen kann und es auch ganz leicht ist.
Sah's zu lange da dran, so das ich denn Wald voller Bäume nicht gesehen 
habe.

Werde es heute Abend dann testen und euch berichten.

PS: hab denn originalen Code hier rein gepostet, denn kann sein das 
jemand denn auch braucht.
Gast #3645695
Lesenswert?

Hi  Grengou,

kurz zur Pwm abgesehen das davon das sie zeitlich nich konstant lauft, 
stimmt dein Signale nicht.

--->   Incr My_counter (es gibt keine 0 im Zähler)
 kleinster Zählerwert 1

     DMX Wert 0 > 1  wäre vom Ergebnis (kein Signal) Ok ?aber mehr 
Zufall?
     DMX Wert 1 > 1  ein DMX Wert 1 müsste Funktionell ein Signal 
erzeugen
                     (tut es aber nicht)
--->     If _dmx_received(n) > My_counter Then
eine 1 löst also keinen Impuls aus, erst eine 2 löst ein Impuls aus

--->   If My_counter > 255 Then
--->     My_counter = 0

das gleiche ist mit dem Wert Zählerwert 255 sowie 256

          DMX Wert max 255 > 255 sowei 256 wird nie passieren
--->     If _dmx_received(n) > My_counter Then

Folglich fehlen drei (Pulssign.) Werte Zahlerwert 1,255,256.
Untenn geht er zu spät loss und ober gibt es keine 100% Signal.

MfG Dirk

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren