Goedenavond allen
Ik heb net wat zitten prutsen om een DMX signaal te ontvangen met een AVR microcontroller geprogrammeerd in Bascom.
Spijtig genoeg kon ik op internet weinig voorbeelden vinden waar ik iets van snapte, dus heb ik maar wat zitten puzzelen en proberen.
Momenteel heb ik onderstaande code, en deze werkt. Echter, ik moet kanaal 1 permanent 255 maken, en dan kan ik de daaropvolgende kanalen perfect ontvangen.
Logisch, want ik zet teller = 0 bij een waarde van 255.
Heeft iemand een idee hoe ik écht het DMX signaal kan ontvangen? Zodat kanaal 1 niet langer 255 hoeft te zijn.
De code:
$regfile = "m168def.dat" 'Atmega168
$crystal = 16000000 'Kristal 16MHz
$baud = 250000 '250k baud voor DMX
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.4 , Rs = Portc.5
On Urxc Uartinterrupt
Enable Urxc
Enable Interrupts
Dim Teller As Integer 'Telt de kanalen
Dim Waardes(4) As Byte 'Ik moet maar 4 kanalen hebben
Dim Buffer As Byte 'Tijdelijke opslag
Do
Cls
Cursor On
Lcd " DMX RECEIVER"
Lowerline
Lcd "2:" ; Waardes(1) ; ",3:" ; Waardes(2) ; ",4:" ; Waardes(3) '3 kanalen laten zien
Cursor Off
Waitms 100 'Vertraging anders knippert lcd
Loop
Uartinterrupt:
Buffer = Udr 'UART inlezen
If Buffer >= 255 Then
Teller = 0
Else
Incr Teller
End If
If Teller > 0 And Teller < 5 Then
Waardes(teller) = Buffer '4 kanalen inlezen
End If
Return
Alvast bedankt voor het lezen van mijn bericht!
Stijn
Bascom ondersteund vanaf versie 1.11.94 DMX, hoef je dus niet meer zo veel voor te doen.
http://avrhelp.mcselec.com/index.html?config_dmxslave.htm
Edit: Er zijn zowel voorbeelden van een slave als wel van een master in de sample dir van Bascom.
[Bericht gewijzigd door 2N3055 op (26%)]
Bedankt 2N3055!
Raar dat dat niet direct teruggevonden werd door google met trefwoorden als "bascom dmx".
Ik ga hier eens mee aan de slag. Bedankt!
Versie 1.11.94 is er ook pas vanaf 30 mei, zal dus nog niet zoveel in google voorkomen.
Vorige week trouwens is versie 1.11.95 al uitgekomen.