Forum: Mikrocontroller und Digitale Elektronik Kleiner 8Kanal DMX Empfänger erweitern


von Grengou (Gast)


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

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

@ Grengou (Gast)

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

Naja, es ist eine Soft-PWM in BASCOM. Allerdings fehlt der 
DMX-Empfängerteil.

http://www.mikrocontroller.net/forum/codesammlung?filter=DMX&x=0&y=0

von Grengou (Gast)


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.

von Falk B. (falk)


Lesenswert?

@ Grengou (Gast)

>Der Code so wie der ist ist voll Funktionsfähig auch per DMX.

Dein Code in deinem Beitrag ist unvollständig. Du hättest besser einfach 
die BASCOM-Datei direkt als Anhang gepostet.

von Karl H. (kbuchegg)


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.

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

Falk Brunner schrieb:

> Dein Code in deinem Beitrag ist unvollständig.

Der ist schon vollständig.

Da ist wieder mal BASCOM-'Magie'
1
Config Dmxslave ....

am Werk.
Den schwierigen Teil hat ihm schon jemand anderer abgenommen. Er muss 
nur noch die Auswertung der Kanäle machen.

von Karl H. (kbuchegg)


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!

von Grengou (Gast)


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.

von Karl H. (kbuchegg)


Lesenswert?

Grengou schrieb:

> PS: hab denn originalen Code hier rein gepostet, denn kann sein das
> jemand denn auch braucht.


Ja, kann sein.
Erst ist trotzdem Müll. Die Soft-PWM ist nicht vernünftig kontrollierbar 
und von der Durchlaufzeit des Codes abhängig.

von Dirk (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.