[HOWTO] DMX-512 met een Picmicro

Pagina: 1 2 Laatste
Acties:
  • 25.487 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Thijsch
  • Registratie: Februari 2002
  • Laatst online: 24-07-2024
Anoniem: 15528 schreef op woensdag 19 april 2006 @ 19:53:
Dat voorbeeld van die verschillende panelen is dus ook wat ik wil gaan maken. Het komt er op neer dat ik 9 groepen van RGB-leds aan wil sturen. Hoe kan ik dit het beste doen met een microcontroller? Ik heb namelijk maar 13 outputs die ik softwarematig kan gebruiken om pwm in te programmeren of 4 hardwarematige PWM kanalen en dat terwijl ik er eigenlijk 9x3=27 nodig heb.
Je zit dan aan een grotere PIC of idd PWM IC's..

Verzenden zit eraan te komen :P Zie het moodlight topic voor fotos van mijn rgb dmx bouwlamp!

Acties:
  • 0 Henk 'm!

Anoniem: 87420

Komt de update over verzenden toevallig nog?? O-)

Acties:
  • 0 Henk 'm!

  • Thijsch
  • Registratie: Februari 2002
  • Laatst online: 24-07-2024
Anoniem: 87420 schreef op woensdag 30 augustus 2006 @ 08:34:
Komt de update over verzenden toevallig nog?? O-)
Goed dat je het zegt.. het is er een beetje bij ingeschoten :P Ik zal een dezer dagen eens kijken..

Acties:
  • 0 Henk 'm!

Anoniem: 87420

sorrry voor het kickje maar ik ben toch wel heel erg benieuwd naar het zendgedeelte van je? aah pls kleine how-to??

Acties:
  • 0 Henk 'm!

Anoniem: 200590

Ok, Thijsch

Ik heb jouw schema even overgenomen, maar je zal direct aan "mijn" schema zie, dat ik absoluut niet veel van electronica ken.
Ik ben al even bezig met op het net her en der dingen te zoeken over RGB ledverlichting en er valt wel wat over te vinden. Zowel dmx als gewoon via dimmers.

Nu ga ik zelf software proberen schrijven (visual basic) om mijn licht in mijn woonkamer aan te sturen.
De bedoeling is dat ik rgb licht achter mijn zetel maak, zodanig dat het meest ondenkbare mogelijk wordt.

Nu heb ik wel nergens gevonden hoe je een shiftregister aansluit op een pic (16f628).
Ik heb dus een poging gedaan om er dat toch maar een shiftregister aan te hangen.

Hoe ver ben ik de mist in gegaan en weet er iemand of er eventueel andere mogelijkheden zijn om zowel een dipswitch als 9 uitgangen op 1 pic te hangen die alleen maar dmx in 9 verschillende kanalen moet omzetten. (gebruik ik bijvoorbeeld de juiste ic's of aansluitingen...)

Afbeeldingslocatie: http://users.telenet.be/visser/extra/dmx-schema.gif

Acties:
  • 0 Henk 'm!

  • virus.elektro
  • Registratie: Januari 2002
  • Laatst online: 17:00

virus.elektro

profesionele monitor sloper

ik zou in ieder geval niet de clock van het schuifregister aan het kristal hangen. Die pic kan dat nooit zo snel inlezen. beter is om de clock van het schuifregister aan een normaal i/o pootje te hangen. dan kan je namelijk zelf bepalen wanneer die leest van het schuif register. nu stuurt het register iedere keer bitjes en weet je niet eens bij welk van de acht schakelaars hij is

elektrotechniek is leuk (nog wel). ik ga dus weer verder met leuke dingen ontwerpen. amd 2200+ 256mb 333mhz,gf4 440mx, 120gb,16X dvd. jarr-url


Acties:
  • 0 Henk 'm!

  • TrailBlazer
  • Registratie: Oktober 2000
  • Laatst online: 08-05 14:33

TrailBlazer

Karnemelk FTW

Ik zie dat de standaard connector een 5Polige XLR is deze zijn echter een factor 3 duurder dan de 3Polige. Is mischien niet helemaal netjes maar ik denk dat ik deze ook wel mag gebruiken toch?

Acties:
  • 0 Henk 'm!

  • Wolf87
  • Registratie: Juli 2004
  • Laatst online: 21:53
TrailBlazer schreef op dinsdag 12 december 2006 @ 08:29:
Ik zie dat de standaard connector een 5Polige XLR is deze zijn echter een factor 3 duurder dan de 3Polige. Is mischien niet helemaal netjes maar ik denk dat ik deze ook wel mag gebruiken toch?
Dat maakt niets uit nee, in de profesionele wereld wordt bijna alleen maar gebruik gemaakt van 3-polig

Acties:
  • 0 Henk 'm!

  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

^^ idd, niets zo irritant om te merken dat je DMX kabel te kort is en dat er 5 polige pluggen aanzitten :X

@Thijsch:
Kun je ook op meerdere universes lezen/zenden dmv deze PIC?

Nu met Land Rover Series 3 en Defender 90


Acties:
  • 0 Henk 'm!

Anoniem: 200590

ik zou in ieder geval niet de clock van het schuifregister aan het kristal hangen. Die pic kan dat nooit zo snel inlezen. beter is om de clock van het schuifregister aan een normaal i/o pootje te hangen. dan kan je namelijk zelf bepalen wanneer die leest van het schuif register. nu stuurt het register iedere keer bitjes en weet je niet eens bij welk van de acht schakelaars hij is
Dus dan hang ik bijvoorbeeld de clockinput van de 74HC165 (pin 2) aan pin 18 van 16f628.
Maar dan krijgt die toch nooit een kloksignaal binnen???

Aan iedereen die DMX maakt. Neem gewoon 3pin-xlrs.
In het begin dachten ze: we nemen een 5pin, maar met pin 4 en 5 hebben ze nooit wat gedaan. En nu zijn er zelfs al veel moving heads gewoon 3pin's.
(zorg dat je gewoon wat overganggen hebt en klaar is kees...)

Als je met leds werkt kan je die 4de en 5de pin ook als 12v voedingskabels laten dienen...
Koppel dan wel 4 en 5 niet aan elkaar in je overgangsstuksjes :9

[ Voor 9% gewijzigd door Anoniem: 200590 op 12-12-2006 12:38 ]


Acties:
  • 0 Henk 'm!

  • virus.elektro
  • Registratie: Januari 2002
  • Laatst online: 17:00

virus.elektro

profesionele monitor sloper

je zal het kloksignaal ook zelf op dat pinnetje moeten zetten met de programatuur

voorbeeldje
klok pinnetje hoog -> data inlezen -> klok pinnetje laag en dat herhalen

elektrotechniek is leuk (nog wel). ik ga dus weer verder met leuke dingen ontwerpen. amd 2200+ 256mb 333mhz,gf4 440mx, 120gb,16X dvd. jarr-url


Acties:
  • 0 Henk 'm!

Anoniem: 200590

virus.elektro schreef op dinsdag 12 december 2006 @ 13:01:
je zal het kloksignaal ook zelf op dat pinnetje moeten zetten met de programatuur

voorbeeldje
klok pinnetje hoog -> data inlezen -> klok pinnetje laag en dat herhalen
Dus dan kan ik dit niet doen: nl. 9 + 2 leds aansluiten op een PIC 16f628
Afbeeldingslocatie: http://users.telenet.be/visser/extra/dmx-schema2.gif

Kan er mij trouwens iemand zeggen welke waarde R2 heeft? en of de andere waardes kloppen?
Ik ben een echte beginneling en alles wat ik leer komt van jullie (de internetproffen)...

Ik heb ook de Assemblyfile van Thijs aangepast, maar ik weet niet of ik het goed doe.
Assembly File
Alles wat rood is heb ik aangepast. Dus dat kan wel eens volledig fout zijn...

Hoe kan ik bijvoorbeeld het shiftregister aansluiten op de pic? enkel pin 13 is nog vrij (RB7)
Kan ik (zie assembly) het adres ipv 1 maal te laten optellen, 8maal?

Ik weet dat ik veel vraag, maar ik wil leren...

Acties:
  • 0 Henk 'm!

  • naftebakje
  • Registratie: Februari 2002
  • Laatst online: 09-05 15:06
Je hebt, om via dat schuifregister de DIP-switches uit te lezen, 3 pinnen nodig, een ingang (data) waarlangs je de status van de DIPswitches seriëel in de PIC binnenkrijgt, en 2 uitgangen (clock en een signaal dat aangeeft dat de DIPswitches ingelezen moeten worden, parallel load heet die lees ik bij nxp).
Dan komt er wel nog eens een klein beetje intelligent design bij, om die schuifregister met zo weinig mogelijk verlies (0 of 1 pinnetje nodig) aan te sluiten op de PIC, daarvoor moet je eens goed nadenken wat ie doet. Met éénmalig (bij het opstarten en initialiseren van de PIC) de DIP-swiches uit te lezen komt je toe, wil je het adres veranderen moet je dan even de spanning uitschakelen. Daardoor maakt het niet uit dat je de 2 nodige uitgangen samenneemt met pinnetjes waar ook een LED aan hangt, dat deze bij het opstarten even flikkeren maakt niets uit. Wat je dan wel in de gaten moet houden, is of je de ingang (data) mag samennemen met een ledje, daarvoor moet de 74HC165 20mA kunnen leveren (zie datasheet, als hij het niet kan dan moet je er een vrij pinnetje (13 dus) voor gebruiken).

Wat de waarde voor R2 moet zijn, vind je terug in de datasheet van de SN75176A.

Als de boer zijn koeien kust, zijn ze jarig wees gerust. Varkens op een landingsbaan, leiden nooit een lang bestaan. Als de boer zich met stront wast, zijn zijn hersens aangetast. Als het hooi is in de schuur, zit het wijf bij den gebuur.


Acties:
  • 0 Henk 'm!

  • Thijsch
  • Registratie: Februari 2002
  • Laatst online: 24-07-2024
naftebakje schreef op dinsdag 12 december 2006 @ 22:46:
Je hebt, om via dat schuifregister de DIP-switches uit te lezen, 3 pinnen nodig, een ingang (data) waarlangs je de status van de DIPswitches seriëel in de PIC binnenkrijgt, en 2 uitgangen (clock en een signaal dat aangeeft dat de DIPswitches ingelezen moeten worden, parallel load heet die lees ik bij nxp).
Dan komt er wel nog eens een klein beetje intelligent design bij, om die schuifregister met zo weinig mogelijk verlies (0 of 1 pinnetje nodig) aan te sluiten op de PIC, daarvoor moet je eens goed nadenken wat ie doet. Met éénmalig (bij het opstarten en initialiseren van de PIC) de DIP-swiches uit te lezen komt je toe, wil je het adres veranderen moet je dan even de spanning uitschakelen. Daardoor maakt het niet uit dat je de 2 nodige uitgangen samenneemt met pinnetjes waar ook een LED aan hangt, dat deze bij het opstarten even flikkeren maakt niets uit. Wat je dan wel in de gaten moet houden, is of je de ingang (data) mag samennemen met een ledje, daarvoor moet de 74HC165 20mA kunnen leveren (zie datasheet, als hij het niet kan dan moet je er een vrij pinnetje (13 dus) voor gebruiken).

Wat de waarde voor R2 moet zijn, vind je terug in de datasheet van de SN75176A.
Hier sluit ik me bij aan. Alleen nog even over R2: dat is een pulldown weerstand op de communicatie lijn, die de lijn laaghoudt als bv het tranciever ic er niet in zit. (Wat bij mij nog wel eens voorkwam). Deze kan je in principe gewoon weglaten.

Verder zit ik je code even door te kijken en ik zie bijvoorbeeld bij de equ's iets opmerkelijk:

Reg8 EQU 028h
Reg9 EQU 029h
Count EQU 030h
W_SAVE EQU 031h

Het zijn hexadecimale waarden, dus na 29 komt 2A 2B 2C 2D 2E 2F. En alle registers kan je gewoon achter elkaar zetten. (dat getal geeft een geheugenplaats aan).

/edit: verder zie ik wel dat sinds ik deze code heb geschreven ik wat heb bijgeleerd :P het is een zooitje :X ik ga er morgen eens aan spenderen :P

[ Voor 17% gewijzigd door Thijsch op 12-12-2006 23:05 ]


Acties:
  • 0 Henk 'm!

Anoniem: 200590

alvast bedankt.
Ik wacht even geduldig af.

Voor zover ik aan datasheets uitkan, kan die 74HC165 (shiftreg) geen 20mA uitgeven.
datasheet
Is het eventueel mogelijk om 2 leds (bijv rood en groen:controleleds) aan het shiftregister te hangen.
Ik weet dan dat ik een ander type moet gebruiken, maar welke raden jullie me dan aan.

Of zou het op de een of andere manier toch kunnen via deze opstelling???
Om dan inderdaad een leduitgang even te gebruiken als ingang voor de data?
Maar dan die clocklijn? kan ik niet gewoon de clockout(pin15) gebruiken van de 16f628?

Acties:
  • 0 Henk 'm!

  • Thijsch
  • Registratie: Februari 2002
  • Laatst online: 24-07-2024
Update: ik heb de pdf herschreven met andere code. En hopelijk is het nu wat duidelijker. Met adres instellen en verzenden ben ik nu nog bezig:

Klik

Acties:
  • 0 Henk 'm!

  • CyBeRSPiN
  • Registratie: Februari 2001
  • Laatst online: 01:58

CyBeRSPiN

sinds 2001

@Thijsch: Super! Ik heb net mn 3 RGB-leds uit China binnen, binnenkort eens de rest van de onderdelen gaan verzamelen, ik ga zeker gebruik maken van je PDF! Nog nooit iets met PIC's gedaan, maar heb er zin in :)

Acties:
  • 0 Henk 'm!

Anoniem: 200590

Dit assembly code is in elk geval een stuk compacter geworden...
Knap.
Nu moet ik alleen nog alles stapje voor stapje leren begrijpen.
(en vooral niets aanpassen :P )

Als zo in een eerste oogopslag kijk zijn de groene en rode controleleds weggevallen.
Vond ik anders wel grappig. En vooral nuttig als ik aan het breadboarden ga beginnen...

Kan het trouwens zijn dat wij alles wat reeds bestaat in een 28 pinsversie in een pic met maar 18 pins aan het stompen zijn (ok, dipswitch niet meegerekend...)
DMX-PWM-Controller 9 kanalen

[ Voor 26% gewijzigd door Anoniem: 200590 op 13-12-2006 18:13 ]


Acties:
  • 0 Henk 'm!

  • naftebakje
  • Registratie: Februari 2002
  • Laatst online: 09-05 15:06
Anoniem: 200590 schreef op dinsdag 12 december 2006 @ 23:53:
alvast bedankt.
Ik wacht even geduldig af.

Voor zover ik aan datasheets uitkan, kan die 74HC165 (shiftreg) geen 20mA uitgeven.
datasheet
Is het eventueel mogelijk om 2 leds (bijv rood en groen:controleleds) aan het shiftregister te hangen.
Ik weet dan dat ik een ander type moet gebruiken, maar welke raden jullie me dan aan.

Of zou het op de een of andere manier toch kunnen via deze opstelling???
Om dan inderdaad een leduitgang even te gebruiken als ingang voor de data?
Maar dan die clocklijn? kan ik niet gewoon de clockout(pin15) gebruiken van de 16f628?
Voor de dataingang moet je dan een apart pinnetje gebruiken (of een transistor gebruiken om de led te schakelen, en tussen de PIC en de basis van de transistor je datalijn van de schuifregister hangen >:) )

Als je nog wat statusledjes wil, kan je ofwel bij het initialiseren enkele bestaande led's als statusled's gebruiken, maar das niet zo interessant. Ofwel gebruik je een ander schuifregister (zoek op latch, daarmee zou je snel een geschikte schuifregister moeten vinden), de 3 uitgangen ernaartoe kunnen gedeeltelijk samengenomen worden met die van de DIP-inlezende-schuifregister, de clock en parallel load neem je samen met de clock en data (telkens je de statusleds update gaan de leds op die uitgangen knipperen, hou daar rekening mee), de latchuitgang naar de statusled-schuifregister kan je niet met een pinnetje met een ledje aan samennemen (anders gaan die statusleds willekeurig knipperen), daarvoor kan je dan de dataingang die gebruikt werd voor de DIP-switches in te lezen gebruiken (steek wel een serieweestandje naar de DIP-schuifregister, anders zit je stroom in zijn uitgang te pompen, vind ie niet lief).

Als de boer zijn koeien kust, zijn ze jarig wees gerust. Varkens op een landingsbaan, leiden nooit een lang bestaan. Als de boer zich met stront wast, zijn zijn hersens aangetast. Als het hooi is in de schuur, zit het wijf bij den gebuur.


Acties:
  • 0 Henk 'm!

Anoniem: 200590

Shift register... allemaal goed en wel,
maar wat als je nu een PIC vindt die 28 pins heeft, meer geheugen en goedkoper...
16F73 bij Voti

Maarrrr...
Als ik dit toevoeg:
code:
1
#DEFINE DMXADR  PORTB
kan ik dan de regel:
code:
1
CLRF    D_ADDR  ;set our dmx adress to 0
vervangen door deze
code:
1
2
MOVLW   PORTB
MOVWF   D_ADDR

in dit schema???
Afbeeldingslocatie: http://users.telenet.be/visser/extra/dmx-schema28p.gif
en kan er iemand mij vertellen welke waardes de weerstanden en de condensatoren hebben.
en ben ik nog dingen in dit scham vergeten?

Weer veel vragen... sorry, maar heb nooit electronica gehad. (en ik heb daar nu spijt van :$ )

Acties:
  • 0 Henk 'm!

  • Springuin
  • Registratie: Juli 2002
  • Laatst online: 09-05 13:54
Die code aanpassing zou moeten werken, maar let er op dat je leds ook op andere pinnen zitten.
Waarden van weerstanden en condensatoren: R1 en R2 10k C1 en C2 22 pf

Acties:
  • 0 Henk 'm!

  • Corpse2
  • Registratie: Januari 2004
  • Laatst online: 07-01-2023
Ik heb al vanalles gezien over DMX ontvangen met een PIC, maar aangezien Thijsch zijn verzendcode nog niet beschikbaar is vroeg ik mij af of er mensen zijn die een goede bron of schema hebben om DMX signalen te versturen met een PIC, zodat je een klein lichtpaneeltje met enkele kanalen kan maken zonder een computer nodig te hebben om de signalen te verzenden.

[ Voor 8% gewijzigd door Corpse2 op 18-12-2006 15:54 ]

keep trying...


Acties:
  • 0 Henk 'm!

  • Thijsch
  • Registratie: Februari 2002
  • Laatst online: 24-07-2024
Anoniem: 200590 schreef op maandag 18 december 2006 @ 00:45:
Als ik dit toevoeg:
code:
1
#DEFINE DMXADR  PORTB
Niet nodig, laat die hele regel maar weg
kan ik dan de regel:
code:
1
CLRF    D_ADDR  ;set our dmx adress to 0
vervangen door deze
code:
1
2
MOVLW   PORTB
MOVWF   D_ADDR

in dit schema???
Ja. In dat geval worden de 8 bits als adres genomen. Hou er wel rekening mee dat een dmxadres 9 bits is. In dit geval kan je dan de hoogste bit niet beïnvloeden en loopt je adres range van 1 tm 256
Wat je wel vergeten bent: Pull-down weerstanden bij de knopjes. Aan de input pinnen een weerstand van >= 10K naar de GND. Want denk je in dat het knopje niet omstaat. De input is dan niet hoog, maar ook niet laag! Dan gaat de ingang zweven zoals dat heet en kan je fouten krijgen. Die weerstand zorgt ervoor dat de input 0 is zodra het knopje niet is ingedrukt.
Weer veel vragen... sorry, maar heb nooit electronica gehad. (en ik heb daar nu spijt van :$ )
Het kan altijd nog...


Corpse2 schreef op maandag 18 december 2006 @ 15:45:
Ik heb al vanalles gezien over DMX ontvangen met een PIC, maar aangezien Thijsch zijn verzendcode nog niet beschikbaar is vroeg ik mij af of er mensen zijn die een goede bron of schema hebben om DMX signalen te versturen met een PIC, zodat je een klein lichtpaneeltje met enkele kanalen kan maken zonder een computer nodig te hebben om de signalen te verzenden.
Ik ben er nu mee bezig, de manier kan ik je wel alvast vertellen, die is infeite exact hetzelfde als het ontvangen. Je kan gewoon via de UART bytes uitpoepen. Het enige probleem is de Break. Die is namelijk niet dmv de UART te maken, de truuc is als volgt:

-Weet welke data je moet verzenden
-zet de UART uit (disable)
-maak de verzendpin laag.
-wacht 100 microseconden
-verzendpin hoog.
-wacht 8 us.
-Zet UART aan
-verstuur startcode (0x0)
-verstuur kanalen
-doe dit tot je alles verzonden hebt tot je wil verzenden en begin dan weer bij punt 1.

[ Voor 30% gewijzigd door Thijsch op 18-12-2006 16:08 ]


Acties:
  • 0 Henk 'm!

  • Corpse2
  • Registratie: Januari 2004
  • Laatst online: 07-01-2023
hmm, interesting :)

keep trying...


Acties:
  • 0 Henk 'm!

Anoniem: 200590

Hoe kan ik trouwens van jouw 4-kanaals-DMX-Ontvanger-Van-Thijsch een 9-kanaals-DMX-Ontvanger-Met-Dank-Aan-Thijsch maken?
Of kijk die code gewoon hoeveel out's je hebt?

Acties:
  • 0 Henk 'm!

Anoniem: 200590

'k ben trouwens net terug van een 3 uur durend reisje.
(Ben langs geweest bij Wouter van Voti)
Ik heb me wat dingen gekocht waarmee ik aan de slag kan.
Pic's, crystallen, ...
Nu nog even iemand zoeken die een dmx mengtafel heeft om de boel te testen...

Het einde (lees:"doel") is in zicht...

Anoniem: 200590

Breadboard volgepirkt...
Pic in progr.... DAMN, programmer kan die pic niet programmeren... AAaargghh

In elk geval.

Ik vond trouwens in de code van Thijsch:
code:
1
2
3
4
5
6
7
#DEFINE BREAK       DMX_reg,0       
#DEFINE STARTCODE   DMX_reg,1   
#DEFINE MOVED       DMX_reg,2   
#DEFINE ADDR9       DMX_reg,3   
#DEFINE RC9       DMX_reg,4  ; -> het gaat om deze regel
#DEFINE UP3       flag,0
#DEFINE UP2       flag,1


daar geeft die een error op want in de inc-file (16f73.inc) staat:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
;----- RCSTA Bits ---------------------------------------------------------

SPEN        EQU     H'0007'
RX9      EQU     H'0006'
RC9      EQU     H'0006'    ; Backward compatibility only
NOT_RC8     EQU     H'0006'    ; Backward compatibility only
RC8_9       EQU     H'0006'    ; Backward compatibility only
SREN        EQU     H'0005'
CREN        EQU     H'0004'
FERR        EQU     H'0002'
OERR        EQU     H'0001'
RX9D        EQU     H'0000'
RCD8        EQU     H'0000'    ; Backward compatibility only

dus ook een RC9
Maar in de datasheet (na een zoekactie) staat ook niets in van die RC9.
Mag ik die dan (in het *.asm-bestandje) hernoemen naar : RC_9
Of hangt die samen aan die van de INC-file???

  • Thijsch
  • Registratie: Februari 2002
  • Laatst online: 24-07-2024
Geen enkel probleem, gewoon hernoemen in de asm file. Die naam is alleen om niet iedere keer DMX_reg,4 te hoeven typen.. Op je 9-kanaals apparaat kom ik morgen terug!

Anoniem: 200590

Thijsch schreef op donderdag 21 december 2006 @ 00:45:
Geen enkel probleem, gewoon hernoemen in de asm file. Die naam is alleen om niet iedere keer DMX_reg,4 te hoeven typen.. Op je 9-kanaals apparaat kom ik morgen terug!
Superrrr.
Ik kan niet wachten tot ik dit kan testen...
Afbeeldingslocatie: http://users.telenet.be/visser/extra/dmxboard.jpg

En nu hopen dat ik geen kortsluiting op mijn bordje heb zitten zodat mijn PIC geen vuurwerk wordt...
Het is tenslotte nog geen nieuwjaar.

Acties:
  • 0 Henk 'm!

  • Thijsch
  • Registratie: Februari 2002
  • Laatst online: 24-07-2024
Anoniem: 200590 schreef op donderdag 21 december 2006 @ 15:58:
[...]


Superrrr.
Ik kan niet wachten tot ik dit kan testen...
[afbeelding]

En nu hopen dat ik geen kortsluiting op mijn bordje heb zitten zodat mijn PIC geen vuurwerk wordt...
Het is tenslotte nog geen nieuwjaar.
Dat ziet er al goed uit! Zo op het eerste oog zie ik geen fouten! Even over de code: Het is vrij eenvoudig aan te passen. Helemaal bovenaan zie je de volgende regels:

#DEFINE DATA_START 0x35
#DEFINE DATA_END 0x39

Dat zijn de geheugenadressen van waar de data wordt opgeslagen. Die beginnen 1 na DATA_START (foutje O-) ) In dit geval zijn dat dus 0x36, 0x37, 0x38, 0x39 waar de data in wordt opgeslagen. Als je daar 9 kanalen van wilt maken moet je dus als DATA_END het adres nemen: 0x35 + 9 = 3E.

#DEFINE DATA_END 0x3E en je hebt 9 kanalen...

Nu wil je ze natuurlijk ook nog naar buiten brengen. Dat doe je door een paar regels toe te vogen bij de pwm output:
code:
1
2
3
4
MOVF Reg1,W
XORWF pwmcounter,W
BTFSC STATUS,Z
BSF OUT1


Dit stukje zo vaak kopieren als je kanalen hebt, ipv Reg1 zet je het gehuegenadres met de data, en ipv OUT1 de output!

Acties:
  • 0 Henk 'm!

Anoniem: 200590

ok, dus:
code:
1
2
3
4
5
6
7
8
9
10
11
#DEFINE DATA_START  0x35        
#DEFINE DATA_END    0x3E        
#DEFINE Reg1    0x36        
#DEFINE Reg2    0x37
#DEFINE Reg3    0x38
#DEFINE Reg4    0x39
#DEFINE Reg5    0x3A
#DEFINE Reg6    0x3B
#DEFINE Reg7    0x3C
#DEFINE Reg8    0x3D
#DEFINE Reg9    0x3E


Dat had ik al even uitgezocht.
Maar nu is het enige probleem nog:
Het in te stellen DMX adres... (van 9 bit's: 512 kanalen)

Kan dit zo:
(zie post Thijsch maandag 18 december 2006 16:05)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#DEFINE D_ADDR  PORTB
#DEFINE ADDR9   PORTC,6         ;9de dipswitch voor 512 kanalen

...

CHANNEL         
    MOVF     Offset,W   ;inhoud van Offset naar W   
    XORLW   0x0     ;
    BTFSS   STATUS,Z    
    GOTO     CHAN   
    MOVF     R_ADDR,W   ;else: check if chans match
    XORWF   D_ADDR,W    
    BTFSC   STATUS,Z    
    GOTO     NINTH      ;if so: check for 9th bit
    CALL     INCREASE   
    GOTO     RET        ;if not: just return from interrupt
            
NINTH           
    BTFSC   ADDR9       ;9th addressbit is set
    GOTO     TRUE   
    BTFSS   RC_9    
    GOTO     CHAN   
    CALL     INCREASE   
    GOTO     RET


Als dit correct is, dan is het gewoon nog even wachten op mijn bestelling van mijn PIC-programmer... en dan:
LET THE SHOW BEGIN!!!

Acties:
  • 0 Henk 'm!

  • Thijsch
  • Registratie: Februari 2002
  • Laatst online: 24-07-2024
Anoniem: 200590 schreef op vrijdag 22 december 2006 @ 16:55:
ok, dus:

Kan dit zo:
(zie post Thijsch maandag 18 december 2006 16:05)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#DEFINE D_ADDR  PORTB
#DEFINE ADDR9   PORTC,6         ;9de dipswitch voor 512 kanalen

...

CHANNEL         
    MOVF     Offset,W   ;inhoud van Offset naar W   
    XORLW   0x0     ;
    BTFSS   STATUS,Z    
    GOTO     CHAN   
    MOVF     R_ADDR,W   ;else: check if chans match
    XORWF   D_ADDR,W    
    BTFSC   STATUS,Z    
    GOTO     NINTH      ;if so: check for 9th bit
    CALL     INCREASE   
    GOTO     RET        ;if not: just return from interrupt
            
NINTH           
    BTFSC   ADDR9       ;9th addressbit is set
    GOTO     TRUE   
    BTFSS   RC_9    
    GOTO     CHAN   
    CALL     INCREASE   
    GOTO     RET
Jazeker kan dit, en dit is eigenlijk nog een beter oplossing dan ik zelf had :) Wat ik deed is zodra de bende voor het eerst start de waarde van de switches naar een register schrijven en dat uitlezen als adres. Jij leest nu iedere keer de switches zelf uit, wat een mooie oplossing is om snel het adres te kunnen veranderen. Het enige wat eventueel zou kunnen gebeuren is dat je het knopje omzet op het moment dat hij aan het vergelijken is en er dus mogelijk een verkeerd kanaal wordt ontvangen.. Maar dat wordt bij de volgende cycle weer goed gezet.

Wat de code doet is als volgt: In R_ADDR zit een teller van de kanalen die reeds ontvangen zijn. Iedere keer als er data binnenkomt wordt die teller vergeleken met het eigen adres. Indien die gelijk zijn wordt gecontroleerd of de 9de bits ook gelijk zijn. Indien de adressen niet gelijk zijn wordt gewacht op de volgende ronde data.

Als de 2 9e bits ook gelijk zijn, zijn de voltallige adressen dus gelijk en wordt overgegaan tot spelen met de ontvangen data.

Acties:
  • 0 Henk 'm!

  • TrailBlazer
  • Registratie: Oktober 2000
  • Laatst online: 08-05 14:33

TrailBlazer

Karnemelk FTW

wat voor connectors ga je gebruiken. Als ik naar die XLR connectors kijk en het prijsverschil met een gewone DIN koppeling (factor 3) ben ik toch erg geneigd voor die te gaan. Ik kan altijd nog een verloopstukje maken mocht het nodig zijn. Ik verwacht echter niet dat ik ooit zelf DMX spul ga kopen en alleen zelf zal gaan bouwen.

Acties:
  • 0 Henk 'm!

Anoniem: 200590

Zoals het er nu naar uitziet ga ik vooral serial connectors gebruiken...
Afbeeldingslocatie: http://www.voti.nl/common/DB09F-SC.jpg
Voor 0.26 € houdt dit de prijs wat lager van het geheel.

En je kan ook nog wat stroom over de ander pinnen sturen.
5V +
5V -
12V +
12V -
Data...

Tenzij je voor 8.95 € Bij C. deze 5 pins connector wilt kopen...
Afbeeldingslocatie: http://www1.be.conrad.com/m/7000_7999/7300/7370/7379/737987_LB_00_FB.EPS.jpg

Acties:
  • 0 Henk 'm!

  • 0fbe
  • Registratie: Januari 2004
  • Laatst online: 21:55
Moet je geen Neutrik maar DAP ofzo pakken: Klik Kan handig als je ze niet te vaak los en vast maakt.

Acties:
  • 0 Henk 'm!

  • TrailBlazer
  • Registratie: Oktober 2000
  • Laatst online: 08-05 14:33

TrailBlazer

Karnemelk FTW

timcooijmans schreef op maandag 25 december 2006 @ 12:52:
Moet je geen Neutrik maar DAP ofzo pakken: Klik Kan handig als je ze niet te vaak los en vast maakt.
deze zijn in een stuk betaalbaarder. Is er nog een conventie over welke de input en output zijn (male/female)

Acties:
  • 0 Henk 'm!

  • Thijsch
  • Registratie: Februari 2002
  • Laatst online: 24-07-2024
TrailBlazer schreef op maandag 25 december 2006 @ 13:14:
[...]

deze zijn in een stuk betaalbaarder. Is er nog een conventie over welke de input en output zijn (male/female)
Ingeval van dmx:

Signaaldragend = female

Ingeval van geluid:

Signaaldragend = male

Female is logischer.. want pinnetjes kunnen makkelijk kortsluiting maken enzo ;) Rare geluidsmensen!

Acties:
  • 0 Henk 'm!

  • TrailBlazer
  • Registratie: Oktober 2000
  • Laatst online: 08-05 14:33

TrailBlazer

Karnemelk FTW

dus de kabels zijn altijd male en de connectors op het device dus female

Acties:
  • 0 Henk 'm!

  • Thijsch
  • Registratie: Februari 2002
  • Laatst online: 24-07-2024
TrailBlazer schreef op maandag 25 december 2006 @ 14:51:
dus de kabels zijn altijd male en de connectors op het device dus female
Dmx in = male
Dmx out = female

op het apparaat vindt je zowel een male als female, 1 voor input, 1 voor output. Iedere kabel heeft gewoon aan 1 kant male en aan 1 kant female.

Acties:
  • 0 Henk 'm!

  • TrailBlazer
  • Registratie: Oktober 2000
  • Laatst online: 08-05 14:33

TrailBlazer

Karnemelk FTW

ok logisch :p

Acties:
  • 0 Henk 'm!

  • 0fbe
  • Registratie: Januari 2004
  • Laatst online: 21:55
Thijsch schreef op maandag 25 december 2006 @ 13:30:
[...]


Ingeval van geluid:

Signaaldragend = male

Female is logischer.. want pinnetjes kunnen makkelijk kortsluiting maken enzo ;) Rare geluidsmensen!
Offtopic, dit is omdat er phantoom 48V vanaf een mixer op een geluids kabel kan staan. Hier kan je dan met je vingertjes (of iets anders) niet bij . En het geluidssignaal wat terug komt kan je zonder gevaar kortsluiten.

Acties:
  • 0 Henk 'm!

  • Thijsch
  • Registratie: Februari 2002
  • Laatst online: 24-07-2024
timcooijmans schreef op maandag 25 december 2006 @ 17:43:
[...]

Offtopic, dit is omdat er phantoom 48V vanaf een mixer op een geluids kabel kan staan. Hier kan je dan met je vingertjes (of iets anders) niet bij . En het geluidssignaal wat terug komt kan je zonder gevaar kortsluiten.
Kijk dat wist ik dan weer niet.. bedankt voor de info

Acties:
  • 0 Henk 'm!

  • 0fbe
  • Registratie: Januari 2004
  • Laatst online: 21:55
Thijsch schreef op maandag 25 december 2006 @ 18:30:
[...]


Kijk dat wist ik dan weer niet.. bedankt voor de info
Dat kan trouwens ook een reden zijn om bij 5 polige XLR te blijven (wat trouwens bijna niemand doet) je kan geen 48V op je DMX bus krijgen. Maar als je een beetje goed na denkt moet dit ook wel lukken zonder, wij gebruiken in iedergeval 3 polige XLR (de meeste verhuur bedrijven gebruiken ook 3 polige XLR)

Anyway:
Netjes project. Ik zal mijn steentje eens gaan bijdragen :)

Acties:
  • 0 Henk 'm!

  • TrailBlazer
  • Registratie: Oktober 2000
  • Laatst online: 08-05 14:33

TrailBlazer

Karnemelk FTW

waar hebben jullie die driver chips gekocht ik kan ze nergens vinden.

Acties:
  • 0 Henk 'm!

  • CyBeRSPiN
  • Registratie: Februari 2001
  • Laatst online: 01:58

CyBeRSPiN

sinds 2001

TrailBlazer schreef op woensdag 10 januari 2007 @ 10:42:
waar hebben jullie die driver chips gekocht ik kan ze nergens vinden.
Je bedoelt die SN RS-485-drivers? Gewoon bij voti.nl, maar bij elke elektronica handel wel lijkt me..

Acties:
  • 0 Henk 'm!

Anoniem: 204278

Modbreak:Sorry, this is a Dutch forum, with Dutch as its main language. If you want to post here, please do it in Dutch and expect to get replies in Dutch too. If you're unable to do that, I kindly suggest you find another forum to ask your questions.

[ Voor 72% gewijzigd door een moderator op 11-01-2007 13:36 ]


Acties:
  • 0 Henk 'm!

Anoniem: 204349

Beste Tweakers,

Ik zit al enige tijd met een probleem, ik heb van mijn baas een RGB ledstrip gehad uit china... ik wil deze heel graag gaan gebruiken in mijn bestaande dmx systeempje.

Het gaat hier om een strip waar 6 draden uitkomen

Wit = GND (-)
Grijs = Resident 12v +

Rood = Aansturing rode led (+)
Groen = Aansturing groene led (+)
Blauw = Aansturing blauwe led (+)
Zwart = Common GND (-)

Maaar nu komt het vervelende, de felheid van de LED word bepaald door de pulsbreedte die op de rood, groene of blauwe draad gezet word. Er zit in deze strip dus al een klein schakelingetje die die PWM vertaald in stroom sterkte...

Ik zou deze strip heel graag (indien het natuurlijk mogenlijk is) via DMX aansturen zodat iedere kleur zijn eigen kanaal heeft, de laatste weken heb ik al flink wat af gegoogled en heb diversen schematjes gevonden maar ik kom er nog niet helemaal uit :(

Zelf heb ik wel enige ervaring met elektronica maar niet met PWM icb. met Pics. Ik heb dus een klein beetje hulp nodig hierbij :P

Bij toeval heb ik laatst voor een ander project een velleman Pic programmer gekocht en wat PIC ic'tjes.. de PIC16F84-04. Zou deze hier ook bruikbaar voor zijn want ik zie dat jullie allemaal gebruik maken van de PIC16F628A.

Tevens ben ik zelf een beetje aan het knutselen gegaan en had het volgende schematje gemaakt:

Afbeeldingslocatie: http://www.djpsycho.nl/schema.gif

Maar ik heb hier helaas (nog) niet genoeg ervaring mee vrees ik, ik ben ltsér en heb een tijdje bij een grote elektonica speciaal zaak gewerk. Ik heb wel kennis van componenten maar dit gaat gaat me net iets boven m'n pet :)

Wel heb ik alle benodigde onderdelen in huis om mee te kunnen expirimenteren...

Ik hoop dan ook dat er hier iemand op het forum is die me een klein beetje op weg kan helpen want het zou erg leuk zijn als ik die led strip kan gebruiken :)

Andere goede ideeen zijn natuurlijk ook welkom :)


Alvast bedankt en met vriendelijke groet,

Bas de Waard

Acties:
  • 0 Henk 'm!

  • TrailBlazer
  • Registratie: Oktober 2000
  • Laatst online: 08-05 14:33

TrailBlazer

Karnemelk FTW

volgens mij zit die oscilator niet goed. Verder lijtk het schem wel redelijk. Overigens als je maar 4 weerstandjes hebt voor je adres kom je maar op 16 adressen DMX kan er 512 hebben

[ Voor 41% gewijzigd door TrailBlazer op 11-01-2007 18:52 ]


Acties:
  • 0 Henk 'm!

Anoniem: 204349

Dankje voor je reactie trailblazer, ik heb zojuist gehoren gekregen dat de PIC16F84 niet bruikbaar is voor dit soort toepassingen, er is een schijnbaar 20 MHz kristal voor nodig en dat kan deze PIC niet aan. Ik ga morgen de PIC16F628A bestellen. :)

Acties:
  • 0 Henk 'm!

  • TrailBlazer
  • Registratie: Oktober 2000
  • Laatst online: 08-05 14:33

TrailBlazer

Karnemelk FTW

weet je dat zeker wat is de max clockrate die je kan hebben

Acties:
  • 0 Henk 'm!

Anoniem: 204278

In Dutch please.

[ Voor 96% gewijzigd door Sprite_tm op 11-01-2007 21:21 ]


Acties:
  • 0 Henk 'm!

Anoniem: 204349

10 mhz is z'n max.. dus ja zal even moeten wachten op de nieuwe pic en 20mhz kristal voor ik veder kan..'k hoop ze overmorgen te hebben :)

Acties:
  • 0 Henk 'm!

  • naftebakje
  • Registratie: Februari 2002
  • Laatst online: 09-05 15:06
Even voor alle duidelijkheid, zo moet een schuifregistertje aangesloten worden, het aanpassen van de code is voor jullie (of tot ik eens zin en schuifregisters heb):
Afbeeldingslocatie: http://crew.tweakers.net/naftebakje/DMX.gif

Als de boer zijn koeien kust, zijn ze jarig wees gerust. Varkens op een landingsbaan, leiden nooit een lang bestaan. Als de boer zich met stront wast, zijn zijn hersens aangetast. Als het hooi is in de schuur, zit het wijf bij den gebuur.


Acties:
  • 0 Henk 'm!

  • 0fbe
  • Registratie: Januari 2004
  • Laatst online: 21:55
Denk je dat het mogelijk is om doormiddel van een Schuifregister te PWM-en? (en zo 18 PWM outputs te bereiken)

Acties:
  • 0 Henk 'm!

  • naftebakje
  • Registratie: Februari 2002
  • Laatst online: 09-05 15:06
timcooijmans schreef op vrijdag 12 januari 2007 @ 20:11:
Denk je dat het mogelijk is om doormiddel van een Schuifregister te PWM-en? (en zo 18 PWM outputs te bereiken)
Ik ben zeker dat het kan (maar niet perse met een 16F PICje), de standaard schuifregisters kunnen dit zeker aan (gaan tot 1MHz ofzo), maar je aansturing moet dan wel erg snel gebeuren wil je geen flikkering zien. Laten we ff rekenen:
-18 PWM outputs, plus wat overhead (latchen, data klaarzetten in de µC), neem een factor 20
-PWM frequentie, om zeker niet te flikkeren nemen we 150Hz
-we houden het op 8-bits dimmen, dus 256 keer updaten voor een PWM-cyclus doorlopen is
Dan moet de µC de data aan volgende frequentie kunnen uitsturen: 20*150*256 = 768KHz. Uit een voormalig PWM-progje weet ik dat ik in, 19 instructie's 3 kanalen kan PWM'en (met elke cyclus 55 instuctie's overhead), neem aan dat we dan 6 instructie's per bit verzenden nodig hebben (byte vergelijken=2 instructie's, clock hoog en laag = nog eens 2, data op uitgang zetten ook 2 instuctie's), daar komt de overhead nog bij: (55/18 = ongeveer) 3 instructies.
Onze 768kHz maal 9 instructie's, dan moet onze µC intern op ongeveer 7MHz draaien, bij een PIC is de interne klok een kwart van de oscillatorfrequentie, dus moet je er een 28MHz kristal aan hangen (het ontvangen van DMX data enzo zit nog niet meegerekend, maar waarschijnlijk lukt dat wel aangezien ik alles lekker ruim heb genomen)...
Berekeningen zijn een beredeneerde gok, en geen bindende waarden. Denk je dat het beter kan, voel je dan vrij om de fouten die ik gemaakt heb eruit te halen en jou betere berekening te showen.

Op een 16F-reeks PIC lukt het dus waarschijnlijk niet, een 18F-PIC kan dat wel aan (gaat zeker tot 48MHz, mss hoger).

Met wat intelligent prutsen kan dat echter opgelost worden, zonder over te stappen naar zaken als CPLD's of andere krachtiger oplossingen. Een optie is een led-driver te gebruiken, maxim heeft er zo een aantal, daar zend je gewoon de gewenste dimwaarde naartoe via een dataprotocol (I2C of SPI ofzo), en die driver handelt alles verder af, zoiets is érg interessant als je snel een oplossing die werkt wil.
Daarnaast heb je nog iets wat ik persoonlijk erg mooi vind, met name gebruik maken van comparatoren (zie ook deze site. Daarbij ga je op dezelfde wijze je PWM uit je schuifregister sturen, maar nu mag deze frequentie gerust erg laag zijn. Elke uitgang van het schuifregister wordt met een RC-filtertje afgevlakt tot een DC spanning, en wordt met behulp van een comparator vergeleken met een zaagtandsignaal dat loop op de gewenste PWM-frequentie, de uitgang van de comparator stuurt dan het ledje. Door die opbouw (alles vergelijken met een centrale zaagtand) kan je erg gemakkelijk de PWMfrequentie veranderen, ook kan je zonder programmeerwerk de belasting op de voeding verminderen (door 2 zaagtanden te gebruiken die 180° verschoven zijn, halveer je de piekstroom ruwweg).

Als de boer zijn koeien kust, zijn ze jarig wees gerust. Varkens op een landingsbaan, leiden nooit een lang bestaan. Als de boer zich met stront wast, zijn zijn hersens aangetast. Als het hooi is in de schuur, zit het wijf bij den gebuur.


Acties:
  • 0 Henk 'm!

  • 0fbe
  • Registratie: Januari 2004
  • Laatst online: 21:55
Allereerst geweldige reactie met goede uitleg _/-\o_

Ik heb al eens gekeken naar Maxim-IC PWM drivers. Daarbij vond ik bijvoorbeeld de MAX6964 maar deze heeft dus maar 4bit PWM (en 4bit globaal maar dat is zo lastig bij RGB). En met DMX ga je toch voor 255 stappen DMX stappen. De MAX6966/67 doet het wel. Dan zou je er alleen dus 2 van nodig hebben.

Alleen moet je dan even genoeg data zien te verplaatsen naar de 2 Driver chips. Alleen dit moet een minder groot probleem zijn dan PWM-en (alleen moet ik even SPI zien te leren ergens heb daar geen ervaring mee)

[ Voor 23% gewijzigd door 0fbe op 12-01-2007 21:48 ]


Acties:
  • 0 Henk 'm!

  • naftebakje
  • Registratie: Februari 2002
  • Laatst online: 09-05 15:06
SPI is erg vergelijkbaar met data in een schuifregister schuiven, klokje en data maken op de snelheid die je wil (want jij bent master en die Maxim-chip is slave) en het werkt, erg simpel dus.
Genoeg data doorsturen is geen probleem, want de PWM zelf gebeurt door de Maxim-chip, het aanpassen van de PWM moet zo snel niet gebeuren (10 keer per seconde lijkt me voldoende).

Als de boer zijn koeien kust, zijn ze jarig wees gerust. Varkens op een landingsbaan, leiden nooit een lang bestaan. Als de boer zich met stront wast, zijn zijn hersens aangetast. Als het hooi is in de schuur, zit het wijf bij den gebuur.


Acties:
  • 0 Henk 'm!

  • 0fbe
  • Registratie: Januari 2004
  • Laatst online: 21:55
naftebakje schreef op vrijdag 12 januari 2007 @ 22:10:
SPI is erg vergelijkbaar met data in een schuifregister schuiven, klokje en data maken op de snelheid die je wil (want jij bent master en die Maxim-chip is slave) en het werkt, erg simpel dus.
Genoeg data doorsturen is geen probleem, want de PWM zelf gebeurt door de Maxim-chip, het aanpassen van de PWM moet zo snel niet gebeuren (10 keer per seconde lijkt me voldoende).
Mijn doel was 44Hz (dit omdat dit ook de snelheid van een DMX512 bus is) Ik ga me eens inlezen in SPI en probeer zo veel mogelijk data hier terug te leveren zodat andere mensen er ook mee uit de voeten kunnen!

Acties:
  • 0 Henk 'm!

Anoniem: 204349

kan iemand mij mischien vertellen wat het verschil is tussen de PIC16F628 en de PIC16F628A ? Ik had dus namelijk de A versie besteld maar wat ik binnen gekregen heb is de PIC16F628-04/P

Acties:
  • 0 Henk 'm!

  • naftebakje
  • Registratie: Februari 2002
  • Laatst online: 09-05 15:06
Anoniem: 204349 schreef op zondag 14 januari 2007 @ 18:17:
kan iemand mij mischien vertellen wat het verschil is tussen de PIC16F628 en de PIC16F628A ? Ik had dus namelijk de A versie besteld maar wat ik binnen gekregen heb is de PIC16F628-04/P
Zo uit het hoofd: de A versie is nieuwer en goedkoper, rest maakt dacht ik niet uit. Sla er even de datasheet op na, dan ben je zeker.

Als de boer zijn koeien kust, zijn ze jarig wees gerust. Varkens op een landingsbaan, leiden nooit een lang bestaan. Als de boer zich met stront wast, zijn zijn hersens aangetast. Als het hooi is in de schuur, zit het wijf bij den gebuur.


Acties:
  • 0 Henk 'm!

Anoniem: 198056

timcooijmans schreef op vrijdag 12 januari 2007 @ 20:11:
Denk je dat het mogelijk is om doormiddel van een Schuifregister te PWM-en? (en zo 18 PWM outputs te bereiken)
Ja, dat is zeker mogelijk. Ik heb laatst 6 shuifregisters achter elkaar gezet en heb zo 48 pwm kanalen gemaakt. Data wordt ingeklokt met een attiny2313, deze draait op 16MHz. PWM is 8 bits. Ik haal niet de 150Hz waar naftebakje vanuit gaat in zijn berekening, ik denk dat ik ongeveer 80 Hz haal. Dit zie je overigens ook niet flikkeren. Met een 20 MHz kristal en slechts 18 PWM kanalen zou je dus makkelijk die 150 Hz kunnen halen als je dat wilt.

Acties:
  • 0 Henk 'm!

  • TrailBlazer
  • Registratie: Oktober 2000
  • Laatst online: 08-05 14:33

TrailBlazer

Karnemelk FTW

Ik zat even te denken over mijn DMX ding. Ik wil uiteraard een lampje laten faden maar ik wil eigenlijk in mijn databyte twee dingen zetten. de 6 MSB voor de intensiteit dit geeft dan 64 mogelijkheden en de 2 LSB de snelheid aangeven waarmee het ligt hier naar toe moet faden vanaf de huidige waarde. Mogen dit soort dingen of is het bij DMX gebruikelijk dat je enkel de nieuwe waardes opgeeft

Acties:
  • 0 Henk 'm!

  • 0fbe
  • Registratie: Januari 2004
  • Laatst online: 21:55
TrailBlazer schreef op dinsdag 16 januari 2007 @ 08:54:
Ik zat even te denken over mijn DMX ding. Ik wil uiteraard een lampje laten faden maar ik wil eigenlijk in mijn databyte twee dingen zetten. de 6 MSB voor de intensiteit dit geeft dan 64 mogelijkheden en de 2 LSB de snelheid aangeven waarmee het ligt hier naar toe moet faden vanaf de huidige waarde. Mogen dit soort dingen of is het bij DMX gebruikelijk dat je enkel de nieuwe waardes opgeeft
Je geeft enkel nieuwe waardes op, óf je gebruikt een 2e kanaal voor de fade time. Wat jij beschrijft is niet gebruikelijk.

Je hebt 2 mogelijkheden.
Of je gebruikt 1 kanaal en stuurt de fade time controlermatig aan (je stuurt dus enkel DMX waardes aan)
Of je gebruikt 2 kanalen en stuurt de fade time ook via DMX aan (1 kanaal bepaald je waarde waarvan of waarheen je zal faden. En kanaal 2 bepaald je fade time. Zet je fade time op 1 seconde bijv. Zet je dan kanaal 1 op 255 (full on) dan duurt het 1 seconde voordat je 255 bereikt.

Zo gebeurd het normaal.

[ Voor 28% gewijzigd door 0fbe op 16-01-2007 10:08 ]


Acties:
  • 0 Henk 'm!

Anoniem: 204349

Even een beginners vraagje, die pen 4 van de 16f628a die via de 10K weerstand verbonden staat met de 5V+, is de waarde van deze weerstand erg belangrijk, heb namelijk 1 stuks 10k teweinig meegekregen bij de elektronica zaak.. heb wel nog wat 1K weerstandjes over.. maar dit is waarschijnlijk te weinig ?

Acties:
  • 0 Henk 'm!

  • naftebakje
  • Registratie: Februari 2002
  • Laatst online: 09-05 15:06
Anoniem: 204349 schreef op woensdag 17 januari 2007 @ 17:44:
Even een beginners vraagje, die pen 4 van de 16f628a die via de 10K weerstand verbonden staat met de 5V+, is de waarde van deze weerstand erg belangrijk, heb namelijk 1 stuks 10k teweinig meegekregen bij de elektronica zaak.. heb wel nog wat 1K weerstandjes over.. maar dit is waarschijnlijk te weinig ?
Dat is de resetpin (MCLR= Master CLeaR), ik gok dat alles tusen 500 Ohm en 100 K wel zal werken in de meeste gevallen (liever naar de hogere waarden toe dan de lagere), als je rare dingen tegenkomt weet je meteen dat je eerst die reset moet checken.
Ik heb wel al een paar keer ander mensen geholpen die geen weerstand tussen de resetpin en de +5V hadden gezet, dat laat de PIC blijkbaar énorm raar doen.

Als de boer zijn koeien kust, zijn ze jarig wees gerust. Varkens op een landingsbaan, leiden nooit een lang bestaan. Als de boer zich met stront wast, zijn zijn hersens aangetast. Als het hooi is in de schuur, zit het wijf bij den gebuur.


Acties:
  • 0 Henk 'm!

Anoniem: 204349

Ok :) nou ik heb ik heb ondertussen m'n leven gewaagd door op de fiets door storm en
regen wat nieuwe onderdelen te gaan te halen in dordrecht..

Had eindelijk m'n printje klaar, bleek dat door een defecte 7805 vrolijk 14V door m'n SN75176 heen gestuurd werd. Ben dus bang dat deze overleden is.. maar goed.. het maakte uit eindelijk niet zo heel veel uit want ik moest toch terug naar de elektronica zaak om m'n bestelling van PIC's op te halen..

Eenmaal thuis aangekomen blijkt nu alleen dat ik weer niet de gene gekregen heb die ik besteld had... namelijk niet de 16F628A maar de 16F628-20/P, maar het schijnt dat deze wel op 20 Mhz kan draaien dus met een beetje geluk gaat het vandaag dan toch nog lukken om m'n 3 leds aan te sturen :P

Ik hoop alleen dat ik de .asm code die Thijsch gemaakt had bij het schematje in z'n PDF er in geprogrameerd krijg.. ik weet nu namelijk niet voor welke processor ik het moet compileren..

Bij de Velleman PIC programmer die ik heb,
( http://www.velleman.be/nl/en/product/view/?id=350903 )
zitten 2 programmatjes:

- MPASM (Assembler compiler)
- Progpic2 (Programmer)

In beide programma'skan ik het type PIC16F628-20/P niet terug vinden ...
Wel de gewone 16F628 en de 16F628A ..... Ik vraag me dus af welke ik moet nemen...

En daarbij kom ik gelijk op de vraag: weet er hier iemand toevallig of een pic beschadigd kan raken door er een verkeerd programma in te laden ?


In ieder geval 2 absolute beginners Tips die ik vandaag zelf geleerd hebt...:

1. Meet eerst je spannigs regulator of er wel echt 5V uitkomt voor je de rest van je circuit hier op aan sluit !!!
2. Ic voetjes zijn toch wel erg handig ! mocht je Ictje stuk gaan..

[ Voor 17% gewijzigd door Anoniem: 204349 op 18-01-2007 14:32 ]


Acties:
  • 0 Henk 'm!

Anoniem: 204349

Nou m'n nachtmerrie is waarheid geworden! M'n printje is af, alles netjes in doosje gebouwd.. en ja hoor.. krijg de code van Thijsch niet gecompileerd naar Hex :'(

Ik baal echt als een stekker op het moment, heb al enige uurtjes doorgebracht met "MPASMWIN" en heb al het mogelijke geprobeerd wat ik weet maar het lukt echt niet :'(

Zou er alsjeblieft iemand voor mij een hex file van deze code kunnen maken?
>> http://members.chello.nl/g.assies/DMXcode.asm

Al is het alleen maar even als test om te kijken of de hardware werkt.. :'(

MPASMWIN zegt na een poging tot compileren :

Errors : 4

Warnings:
--------------
Reported : 1
Suppressed: 0

Messages:
----------------
Reported: 11
Supressed: 0

Lines Assembled: 565

De error file die hij aanmaakt heb ik even online gezet:
http://www.djpsycho.nl/DMXcode.ERR


Uiteindelijk is het enige echte probleem dus om deze code:
http://members.chello.nl/g.assies/DMXcode.asm
In m'n PIC16F628-20/P te krijgen...

Hopelijk kan iemand me helpen, het liefst met een hex file :'(
Ik wil er zelfs nog wel een vergoeding tegenover zetten als iemand me aan de werkende hex file kan helpen... want ik ben bang dat dit me echt boven m'n verstand uit gaat.. :'(

peace :)

[ Voor 40% gewijzigd door Anoniem: 204349 op 18-01-2007 17:47 ]


Acties:
  • 0 Henk 'm!

  • Corpse2
  • Registratie: Januari 2004
  • Laatst online: 07-01-2023
ik heb het ook nog niet kunnen compileren, maar enkele dingetjes:

Warning[205] F:\DOCUMENTS AND SETTINGS\DARKNESS\DESKTOP\DMXCODE.ASM 5 : Found directive in column 1. (__CONFIG)

vervang de lijn eens door " __config" (dus TAB en dan config in kleine letters) dan gaat die warning al weg

code:
1
2
3
    __config        _CP_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC  & _LVP_OFF
    list    P=16F628
#include <P16F628.INC>

aangezien je voor andere pic compileert

Error[113] F:\DOCUMENTS AND SETTINGS\DARKNESS\DESKTOP\DMXCODE.ASM 153 : Symbol not previously defined (NO_DMX)

NO_DMX is niet gedefinieerd, je zal dat nog even moeten toevoegen.

Message[302] F:\DOCUMENTS AND SETTINGS\DARKNESS\DESKTOP\DMXCODE.ASM 72 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[305] F:\DOCUMENTS AND SETTINGS\DARKNESS\DESKTOP\DMXCODE.ASM 134 : Using default destination of 1 (file).

niet echt een idee waar dat vandaan komt

[ Voor 3% gewijzigd door Corpse2 op 18-01-2007 18:21 ]

keep trying...


Acties:
  • 0 Henk 'm!

Anoniem: 204349

Corpse2 schreef op donderdag 18 januari 2007 @ 18:21:
ik heb het ook nog niet kunnen compileren, maar enkele dingetjes:
Ok ik neem wel aan dat Thijsch de code getest heeft ? :s
ik heb het namelijk ook geprobeerd te compileren voor de 16F628A die hij gebruikt maar geeft de zelfde fouten..

Maar goed ik ga hier mee aan de slag.. bedankt in ieder geval :)

Is het eigenlijk uberhaupt al iemand gelukt om dit project te bouwen wat in DMX2.PDF staat ??

[ Voor 9% gewijzigd door Anoniem: 204349 op 18-01-2007 19:13 ]


Acties:
  • 0 Henk 'm!

  • naftebakje
  • Registratie: Februari 2002
  • Laatst online: 09-05 15:06
De benaming PIC16F628-20/P wil zeggen dat het een PIC16F628 is, in een 20-pins PDIP uitvoering, gaat dus enkel over de behuizing.
De message[302] mag je doorgaans negeren, of je nu in de juiste of verkeerde bank zit, hij blijft die warning geven, en microchip zelf geeft aan dat je die mag negeren.
De message[302] geeft aan dat er een instructie is waarbij geen destination is opgegeven, dus de uitkomst zal naar de standaard plaats geschreven worden (ik dacht dat standaard naar het W register wordt geschreven), wil nog niet perse zeggen dat het niet zal werken, gewoon een kleine slordigheid in het programmeren.

[ Voor 4% gewijzigd door naftebakje op 18-01-2007 20:01 ]

Als de boer zijn koeien kust, zijn ze jarig wees gerust. Varkens op een landingsbaan, leiden nooit een lang bestaan. Als de boer zich met stront wast, zijn zijn hersens aangetast. Als het hooi is in de schuur, zit het wijf bij den gebuur.


Acties:
  • 0 Henk 'm!

  • Corpse2
  • Registratie: Januari 2004
  • Laatst online: 07-01-2023
PIC16F628-20/P, die P betekent inderdaad PDIP, maar die 20 staat volgens mij voor het feit dat de interne oscillator tot 20MHz kan in tegenstelling tot bv de PIC16F628-4/P die maar 4MHz aankan.

In ieder geval is de originele code die je daar gebruikte voor de 16f628A en dat is dus een andere dan 16f628.

keep trying...


Acties:
  • 0 Henk 'm!

Anoniem: 204278

hebben julli oo k ''jal'' van deze ''asm'' code's, omdat ik verstaan niet van ''asm'' code's

Acties:
  • 0 Henk 'm!

  • M14
  • Registratie: Januari 2002
  • Laatst online: 08-05 16:50

M14

Wat ik me keer op keer afvraag is waarom bijna niemand die dingen in C programmeerd. Dat werkt toch veel makkelijker, overzichtelijker en sneller.

Mess with the best, Die like the rest
There is no such thing as Society
There are 2 kinds of people: Snipers and their targets
Never run for a sniper ... you only die tired :)


Acties:
  • 0 Henk 'm!

  • naftebakje
  • Registratie: Februari 2002
  • Laatst online: 09-05 15:06
M14 schreef op maandag 22 januari 2007 @ 00:53:
Wat ik me keer op keer afvraag is waarom bijna niemand die dingen in C programmeerd. Dat werkt toch veel makkelijker, overzichtelijker en sneller.
Op een PC die op hoge kloksnelheden draait, bergen RAM en ROM ter beschikking heeft, en een hele trukendoos automagisch toepast op het gecompileerde programma, kan je idd zonder nadenken wat code typen in C.

Een µC zoals hier gebruikt, moet je snappen, je moet kunnen denken als die µC, en daarvoor is ASM nogal essentiëel. Als je geen rekening houd met de hardware, zal je programma veel te groot, lomp en traag zijn, en krijg je de helft niet in gang. Eenmaal je een goeie kennis van ASM hebt, kan je idd hogere talen gebruiken als methode om gemakkelijker de ASM te laten genereren, maar de focus moet op ASM blijven liggen, daarvoor vind ik persoonlijk basic handiger.

Als de boer zijn koeien kust, zijn ze jarig wees gerust. Varkens op een landingsbaan, leiden nooit een lang bestaan. Als de boer zich met stront wast, zijn zijn hersens aangetast. Als het hooi is in de schuur, zit het wijf bij den gebuur.


Acties:
  • 0 Henk 'm!

Anoniem: 204349

Jongens die code van Thijsch klopt echt niet! heb er een paar experts bij gehaald en komen allemaal tot de conclusie dat er fouten in de code zitten... is er hier niemand met een werkende code ???

Acties:
  • 0 Henk 'm!

  • Thijsch
  • Registratie: Februari 2002
  • Laatst online: 24-07-2024
Anoniem: 204349 schreef op woensdag 24 januari 2007 @ 16:30:
Jongens die code van Thijsch klopt echt niet! heb er een paar experts bij gehaald en komen allemaal tot de conclusie dat er fouten in de code zitten... is er hier niemand met een werkende code ???
vreemd, wat gaat er mis?
En konden die experts dat niet oplossen dan

[ Voor 7% gewijzigd door Thijsch op 24-01-2007 17:25 ]


Acties:
  • 0 Henk 'm!

  • Corpse2
  • Registratie: Januari 2004
  • Laatst online: 07-01-2023
Kan je misschien eens een werkend asm bestandje ergens online zetten dat bij die pdf hoort?

Ik had ook een keer gewoon de text uit de pdf in een asm bestandje gesmeten en dat wilde ook niet compileren, maar ik weet niet meer wat het probleem precies was.

keep trying...


Acties:
  • 0 Henk 'm!

Anoniem: 204349

Thijsch schreef op woensdag 24 januari 2007 @ 17:24:
[...]

vreemd, wat gaat er mis?
En konden die experts dat niet oplossen dan
Het probleem is dat ik je asm file niet kan compileren.. is het mischien mogenlijk dat je een werkende .hex file post ?

Acties:
  • 0 Henk 'm!

  • CyBeRSPiN
  • Registratie: Februari 2001
  • Laatst online: 01:58

CyBeRSPiN

sinds 2001

Anoniem: 204349 schreef op donderdag 25 januari 2007 @ 11:39:
[...]


Het probleem is dat ik je asm file niet kan compileren.. is het mischien mogenlijk dat je een werkende .hex file post ?
Met MPASMWIN moest ik alleen de NO_DMX variabele nog defineren:
#DEFINE NO_DMX PORTB,4
(geen idee of dat goed is, maar hij compiled dan wel)

Net een lpr2dmx interface gemaakt, maar kan die niet testen bij gebrek aan dmx spul.. straks maar ff deze schakeling bouwen, om dan een mooie 3W highpower RGB-led te pwmen (later evt 3 in serie).

Acties:
  • 0 Henk 'm!

Anoniem: 206245

Hi,

I'm looking for source code (.asm) of 9 channel DMX/PWM (16F628A) connection mentioned in the schema above. Any help would be appreciated.

Thanks in advance, Frantisek
This is a dutch forum, so please write your posts in dutch, and expect the answers to be dutch too.

[ Voor 23% gewijzigd door naftebakje op 25-01-2007 19:45 ]


Acties:
  • 0 Henk 'm!

Anoniem: 204278

Hallo codeert Thijsch, uw asm heeft één of ander probleem en het is geen working.and ook ik probleem __ config en No_DMX ook maar niet nog werkend heb veranderd. kunt u achter het hier verzenden. uw correcte asm dienen zonder enig probleem in

Acties:
  • 0 Henk 'm!

Anoniem: 204278

..

[ Voor 100% gewijzigd door Anoniem: 204278 op 17-06-2007 14:55 ]


Anoniem: 204278

..

[ Voor 98% gewijzigd door Anoniem: 204278 op 17-06-2007 14:55 ]


  • Corpse2
  • Registratie: Januari 2004
  • Laatst online: 07-01-2023
programmer07, it's quite obvious that you used a translator to post those last 3 posts, they even include your english spelling errors. 8)7
there is no working code here, I tried it.

}:O

keep trying...


Acties:
  • 0 Henk 'm!

Anoniem: 200590

Ik ben er mee bezig.
Trouwens. Sinds wanneer wordt er hier iemand afgekraakt die iedereen probeert te helpen???
Aangezien er toch een paar mensen mee bezig zijn, is het blijkbaar wel iets dat op ieders verlanglijstje staat.

Voor mensen die niet kunnen wachten en dus NU resultaat willen:
Geef geld uit: DMX---9Kanal-PWM-Interface

Voor de anderen: Nog even geduld.
Er wordt aan gewerkt.

En door de hele tijd te zeggen dat het niet werkt, of dat er errors inzitten komen we ook geen stap verder.

VRIENDELIJKE groeten...

[ Voor 4% gewijzigd door Anoniem: 200590 op 24-02-2007 14:58 ]


Acties:
  • 0 Henk 'm!

  • Thijsch
  • Registratie: Februari 2002
  • Laatst online: 24-07-2024
Hm vreemd, van enkelen hoor ik dat de code wél werkt, en bij anderen weer niet. Een vreemde zaak. Wil de code uberhaupt niet compileren of is er meer aan de hand?

Acties:
  • 0 Henk 'm!

  • Corpse2
  • Registratie: Januari 2004
  • Laatst online: 07-01-2023
ik heb het nog even getest, het asm bestandje dat in de openingspost staat krijg ik niet gecompileerd:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Warning[205] F:\DMXCODE2.ASM 5 : Found directive in column 1. (__CONFIG)
Message[302] F:\DMXCODE2.ASM 63 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] F:\DMXCODE2.ASM 64 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] F:\DMXCODE2.ASM 65 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] F:\DMXCODE2.ASM 68 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] F:\DMXCODE2.ASM 69 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] F:\DMXCODE2.ASM 70 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] F:\DMXCODE2.ASM 71 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] F:\DMXCODE2.ASM 72 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[305] F:\DMXCODE2.ASM 134 : Using default destination of 1 (file).
Error[113]   F:\DMXCODE2.ASM 153 : Symbol not previously defined (NO_DMX)
Error[128]   F:\DMXCODE2.ASM 153 : Missing argument(s)
Error[113]   F:\DMXCODE2.ASM 156 : Symbol not previously defined (NO_DMX)
Error[128]   F:\DMXCODE2.ASM 156 : Missing argument(s)
Message[305] F:\DMXCODE2.ASM 209 : Using default destination of 1 (file).
Message[305] F:\DMXCODE2.ASM 250 : Using default destination of 1 (file).


ik had ook een keer geprobeerd om gewoon de code uit de pdf te kopieren maar dat geeft een gelijkaardig resultaat. |:(

keep trying...


Acties:
  • 0 Henk 'm!

  • naftebakje
  • Registratie: Februari 2002
  • Laatst online: 09-05 15:06
Die "message[302] ...." fouten, mag je gewoon negeren, dat is een foutje van de compiler (hij kan niet controleren of de bankswitching goed is, en geeft dus altijd meldingen), kan je afleggen met een command ("errorlevel -302" aan het begin van je code zetten, als ik het goed heb).

Die paar met [305], dat is waarschijnlijk geen probleem, daar is de bestemming niet opgegeven en wordt de standaard bestemming gekozen, zal ws gewoon een "slordigheidje" zijn (niet dat het slecht is, het werkt gewoon dus is het niet noodzakelijk om de puntjes op de i te gaan zetten, kruipt al genoeg tijd in zo).

De error met NO_DMX kan opgelost worden door dat symbol bovenaan je code te definiëren, de [128]'s erna zijn waarschijnlijk ook doordat NO_DMX niet gedefiniëerd is.

En die eerste, [205], die los je op door een tab of spatie voor "__CONFIG" te zetten.


Allemaal niet zo moeilijk als je al wat ervaring met MPLAB hebt, mss daardoor dat enkelingen het al werkend hebben gekregen. Kijk eens wat je kan doen met deze uitleg, en laat het weten als het werkt hé ;)

[ Voor 11% gewijzigd door naftebakje op 24-02-2007 21:35 ]

Als de boer zijn koeien kust, zijn ze jarig wees gerust. Varkens op een landingsbaan, leiden nooit een lang bestaan. Als de boer zich met stront wast, zijn zijn hersens aangetast. Als het hooi is in de schuur, zit het wijf bij den gebuur.


Acties:
  • 0 Henk 'm!

  • _ferry_
  • Registratie: Januari 2002
  • Niet online

_ferry_

Moderator Tweaking

Nipple Tweaker

Ik heb de code niet doorgelezen, maar iemand op MSN vertelde tegen mij dat er ergens __CONFIG staat, maar dat dit in kleine letters hoorde te zijn, en dat hij er daarom over struikelde. Geen idee of dat het is, ik vertel alleen maar wat hij zei :P

Acties:
  • 0 Henk 'm!

  • Corpse2
  • Registratie: Januari 2004
  • Laatst online: 07-01-2023
een beetje terug in deze thread had ik ook al enkele van die warnings weggekregen (hetgeen _ferry_ naar verwijst en ongeveer de dingen die naftebakje zegt) maar hetgeen ik hier net gezet heb was om aan te geven wat het probleem met de huidige code is omdat Thijsch erachter vroeg.

Een andere gebruiker had NO_DMX als iets gedefinieerd, maar ik weet effe niet meer wat

[ Voor 4% gewijzigd door Corpse2 op 25-02-2007 02:24 ]

keep trying...


Acties:
  • 0 Henk 'm!

Anoniem: 204278

hey friends.
is it possible to dmx512 receive code in picbasicpro ?

[ Voor 97% gewijzigd door Anoniem: 204278 op 17-06-2007 14:54 . Reden: edit ]


Acties:
  • 0 Henk 'm!

Anoniem: 214712

ik had een error omdat Offset niet gekend was...
Ik heb die voor te testen gedefinieerd als #DEFINE Offset DMX_reg,5
nu krijg ik errors op elke komma achter offset...

iemand raad?

ik kom van 109 errors, heb er nu nog 8 nog ff dus :)
*******************************************
edit: heb men errors eruit gekregen en heb het kunnen compileren en programmereren enzo...

hier vind ge tijdelijk mennen hex-file als ge der iets me kunt doen...

http://users.pandora.be/reinhardvoorspoels/rgb.HEX

heb het nog niet zelf getest maar misschien dat sommigen hier al iets me zijn...

[ Voor 42% gewijzigd door Anoniem: 214712 op 02-04-2007 21:32 . Reden: update ]


Acties:
  • 0 Henk 'm!

  • nonkeldw
  • Registratie: Maart 2007
  • Laatst online: 15-07-2024
Hallo ik ben nu ook aan het programmeren geslagen

nu heb ik al wat aan het definerne geweest da lukt me .
nu wil ik voor het dmx adress in te stellen de HEF4014 gebruiken (8bit schift register)
nu weet ik wel hoe dat ding ongeveer werkt
dit stuurt 8 bitten uit dit moet men pic opslaan en rekene dat hij pas van af dat adress mag luisteren
nu hoe doe ik dat ?

Acties:
  • 0 Henk 'm!

Anoniem: 204278

İt is nice code

[ Voor 94% gewijzigd door Anoniem: 204278 op 17-06-2007 14:53 ]


Acties:
  • 0 Henk 'm!

  • M14
  • Registratie: Januari 2002
  • Laatst online: 08-05 16:50

M14

Ik ben nu ook een tijdje bezig geweest om DMX binnen te krijgen op een pic16F877A (20Mhz kristal), maar zonder succes.

Hier een korte situatieschets: Op PORTC bit 7 zit de usart-receiver, waar het signaal binnen komt. Op PORTD zitten 8 leds en op PORTB zitten 8 dipswitches aangesloten.

De volgende code heb ik in MikroC geschreven:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
unsigned int teller=0, i;
unsigned char kanaal=0, nutteloos, brk=0;

void init_usart()
{
TRISC = 0xFF;

SPBRG = 0x04;
TXSTA.BRGH = 1;

TXSTA.SYNC = 0;
PIE1=0;
PIE1.RCIE = 1;
RCSTA.RX9 = 1;

nutteloos=RCREG;
nutteloos=RCREG;
nutteloos=RCREG;

RCSTA.CREN = 1;
RCSTA.SPEN = 1;


INTCON.PEIE=1;
INTCON.GIE=1;
}




void interrupt()
{

if (PIR1.RCIF)
  {
  if (RCSTA.OERR)
     {
     PORTD=0xCC;                 // Indien Overrun error leduitgang is 0xCC
     RCSTA.SPEN=0;
     RCSTA.SPEN=1;
     nutteloos=RCREG;
     nutteloos=RCREG;
     nutteloos=RCREG;
     teller=0;
     brk=0;
     }
     
  else
     {
     if (RCSTA.FERR)
        {
        PORTD=0xFF;              // Indien Frame error leduitgang is 0xFF
        nutteloos=RCREG;
        teller=0;
        brk=0xFF;
        }
     else
        {
        PORTD=0xAA;              // Indien er data binnen komt leduitgang 0xAA
        if (brk==0xFF)
           {
           if (teller==1) kanaal = RCREG;
           else nutteloos = RCREG;
           teller++;
           }
        else
            {
            nutteloos = RCREG;
            teller=0;
            }
        }
     }
  PIR1.RCIF=0;
  }
}




void main ()
{

TRISB = 0xFF;
TRISD = 0x00;
init_usart();
PORTD=0;


while(1)
  {
 // PORTD=kanaal;
  }
}


Op het moment is het de bedoeling dat alleen kanaal 1 wordt uitgelezen. Naar startcode oid wordt nog niet gekeken. Ook wordt er nog niks gedaan met addresseren.

Het probleem is dat er op een of andere manier continue een frame-error optreed. Hier ben ik achter gekomen door de led's in de interrupt aan te sturen, zie code. Zodra deze code op de uC draait en er DMX wordt uitgestuurd gaan de 8 led's continue branden zonder te knipperen ofzo.

Wanneer ik in de interrupt de 3 regels weg haal waarin PORTD wordt aangestuurd en in de while-loop van de main PORTD=kanaal; uitvoer begint de 8'ste led zonder enige regelmaat te knipperen :?.

Wat doe ik hier fout?

[EDIT]
Damn, zeer stomme fout gemaakt. Code werkt gewoon ....... In het printje wat ik een hele tijd geleden heb gemaakt met een SN75176 + buffer-ic zit de fout. + en - waren omgedraait ..... Hier heb ik gewoon meer dan 4 dagen naar zitten zoeken. Maar goed, het werkt :).

[ Voor 5% gewijzigd door M14 op 22-05-2007 00:25 ]

Mess with the best, Die like the rest
There is no such thing as Society
There are 2 kinds of people: Snipers and their targets
Never run for a sniper ... you only die tired :)


Acties:
  • 0 Henk 'm!

  • Danjel
  • Registratie: April 2004
  • Laatst online: 22:26
Hoe kunnen jullie aan de hand van het schema bepalen welke exacte onderdelen jullie nodig hebben voor het printje? Ik zie dat er niet bij staan namelijk.

Acties:
  • 0 Henk 'm!

  • nonkeldw
  • Registratie: Maart 2007
  • Laatst online: 15-07-2024
Heeft iemand dit programma van howto nu al werkend gekregen?


of hebben jullie een paar foutjes gevonden ?
ik heb al zo wat van alles aaagepast maar niets helpt :(

Acties:
  • 0 Henk 'm!

  • Bastiaan V
  • Registratie: Juni 2005
  • Niet online

Bastiaan V

Tux's lil' helper

Het lijkt er op dat de NO_DMX var helemaal niergens geset werd. heb daarom de 2 btf's weggehaald (NO_DMX zou altijd 0 zijn) en de boel compileerd.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
;4 chan DMX, PWM output
;On  RB5, RB6, RB7, RA3
;Thijs Assies

    __CONFIG        _CP_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC  & _LVP_OFF
    list    P=16F628A
#INCLUDE <P16F628a.INC>

#DEFINE OUT1    PORTB,5
#DEFINE OUT2    PORTB,6
#DEFINE OUT3    PORTB,7
#DEFINE OUT4    PORTA,3
#DEFINE RCLED   PORTB,3         ;green led

#DEFINE RX      PORTB,1
#DEFINE ERRLED  PORTB,4         ;red led

#DEFINE BREAK           DMX_reg,0
#DEFINE STARTCODE       DMX_reg,1
#DEFINE MOVED           DMX_reg,2
#DEFINE ADDR9           DMX_reg,3
#DEFINE RC9             DMX_reg,4

DMX_reg         EQU     020h
Reg1            EQU     021h
Reg2            EQU     022h
Reg3            EQU     023h
Reg4            EQU     024h
W_SAVE          EQU     026h
S_SAVE          EQU     027h
P_SAVE          EQU     028h
pwmcounter      EQU     029h
flag            EQU     02Ah
D_ADDR          EQU     02Bh
temp            EQU     02Ch
R_ADDR          EQU     02Dh
Offset          EQU     02Eh
temp2           EQU     02Fh



    ORG     00h
    GOTO    INIT            ;Initialize PIC

    ORG     04h             ;Interrupt vector
    MOVWF   W_SAVE          ;save context,
    MOVF    STATUS,W        ;save  STATUS, PCLATH & W
    MOVWF   S_SAVE
    MOVF    PCLATH,W
    MOVWF   P_SAVE  
    GOTO    INTHANDLER


INIT

    MOVLW   0x07            ;turn analog comparators off
    MOVWF   CMCON
    CLRF    PORTA
    CLRF    PORTB

    BSF     STATUS,RP0      ;Select Bank1   

    CLRF    TRISA           ;porta output
    CLRF    TRISB           ;portb output
    BSF     TRISB,1         ;B1 input (UART Recieve)

    MOVLW   04h
    MOVWF   SPBRG           ;Set baud rate
    BSF     TXSTA,BRGH      ;high speed
    BCF     TXSTA,SYNC      ;Async connection
    CLRF    PIE1            ;clear other interrupts
    BSF     PIE1,RCIE       ;Set recieve interrupt
    BCF     STATUS,RP0      ;Return to bank0

    BSF     RCSTA,RX9       ;Enable 9bit data

    MOVF    RCREG,W         ;clear RCREG FIFO
    MOVF    RCREG,W
    MOVF    RCREG,W   

    BSF     RCSTA,CREN      ;Enable recieve
    BSF     RCSTA,SPEN      ;Enable UART
    BSF     INTCON,PEIE     ;Enable interrupts
    BSF     INTCON,GIE

    BCF     RCLED           ;because RA4 is open drain, set means NOT on
    BCF     ERRLED

    CLRF    Reg1
    CLRF    Reg2
    CLRF    Reg3
    CLRF    Reg4
    CLRF    D_ADDR          ;set our dmx adress to 0
    BCF     ADDR9       

    GOTO    MAIN            ;Goto   Main Program


MAIN
    BCF     RCLED
    BCF     ERRLED
    MOVLW   0FFh
    MOVWF   pwmcounter
    BCF     OUT1
    BCF     OUT2
    BCF     OUT3
    BCF     OUT4
    CALL    PWM_CYCLE
    
    GOTO    MAIN


PWM_CYCLE
    MOVF    Reg1,W
    XORWF   pwmcounter,W
    BTFSC   STATUS,Z
    BSF     OUT1

    MOVF    Reg2,W
    XORWF   pwmcounter,W
    BTFSC   STATUS,Z
    BSF     OUT2

    MOVF    Reg3,W
    XORWF   pwmcounter,W
    BTFSC   STATUS,Z
    BSF     OUT3

    MOVF    Reg4,W
    XORWF   pwmcounter,W
    BTFSC   STATUS,Z
    BSF     OUT4

    DECFSZ  pwmcounter,W
    GOTO    PWM_CYCLE
    RETURN



INTRETURN
    MOVF    P_SAVE,W        ;restore context
    MOVWF   PCLATH
    MOVF    S_SAVE,W
    MOVWF   STATUS
    SWAPF   W_SAVE,F
    SWAPF   W_SAVE,W            
    RETFIE

INTHANDLER
    BTFSS   PIR1,RCIF
    GOTO    INTRETURN
    GOTO    DMX

DMX
    BSF     ERRLED
    BTFSC   RCSTA,OERR
    GOTO    OVERRUN

    BTFSC   RCSTA,FERR      ;Check for framing error
    GOTO    FRAME
    
    BTFSS   BREAK           ;check if break has passed
    GOTO    RET 
    
    BTFSS   STARTCODE       ;has a startcode passed ?
    GOTO    SC              ;yes: go check for valid startcode

    BTFSC   STARTCODE
    GOTO    CHANNEL
    
RET
    MOVF    RCREG,W
    GOTO    INTRETURN

OVERRUN
    BCF     RCSTA,SPEN
    BSF     RCSTA,SPEN
    MOVF    RCREG,W
    BSF     ERRLED
    GOTO    LAST

FRAME
    BCF     BREAK
    BCF     STARTCODE
    BCF     RC9
    CLRF    R_ADDR
    CLRF    Offset
    BTFSS   RCSTA,RX9D
    BSF     BREAK
        
    MOVF    RCREG,W
    GOTO    INTRETURN

SC
    MOVF    RCREG,W
    XORLW   00h
    BTFSC   STATUS,Z
    BSF     STARTCODE
    GOTO    INTRETURN

INCREASE
    INCF    R_ADDR,W
    BTFSC   STATUS,Z
    BSF     RC9 
    RETURN

CHANNEL

    MOVF    Offset,W
    XORLW   00h         ;check if offset != 0
    BTFSS   STATUS,Z
    GOTO    CHAN

    MOVF    R_ADDR,W    ;else: check if chans match
    XORWF   D_ADDR,W
    BTFSC   STATUS,Z
    GOTO    NINTH       ;if so: check for 9th bit

    CALL    INCREASE
    GOTO    RET     ;if not: just return from interrupt

NINTH
    BTFSC   ADDR9
    GOTO    TRUE
    MOVF    RCREG,W
    GOTO    FALSE

TRUE        ;our 9th bit is set
    BTFSC   RC9
    GOTO    CHAN
    CALL    INCREASE
    GOTO    RET

FALSE
    BTFSS   RC9
    GOTO    CHAN
    CALL    INCREASE
    GOTO    RET


CHAN
;   BCF     RCLED
    INCF    Offset,W
    MOVF    Offset,W
    XORLW   01h         ;check if count = 0
    BTFSC   STATUS,Z
    GOTO    CHAN1

    MOVF    Offset,W
    XORLW   02h
    BTFSC   STATUS,Z
    GOTO    CHAN2

    MOVF    Offset,W
    XORLW   03h
    BTFSC   STATUS,Z
    GOTO    CHAN3

    MOVF    Offset,W
    XORLW   04h
    BTFSC   STATUS,Z
    GOTO    CHAN4

    MOVF    Offset,W
    XORLW   05h
    BTFSC   STATUS,Z
    GOTO    LAST


CHAN1
    MOVF    RCREG,W
    MOVWF   Reg1
    CALL    INCREASE
    GOTO    INTRETURN
CHAN2
    MOVF    RCREG,W
    MOVWF   Reg2
    CALL    INCREASE
    GOTO    INTRETURN
CHAN3
    MOVF    RCREG,W
    MOVWF   Reg3
    CALL    INCREASE
    GOTO    INTRETURN
CHAN4
    MOVF    RCREG,W
    MOVWF   Reg4
    CALL    INCREASE
    GOTO    INTRETURN



LAST

    BCF     BREAK
    BCF     STARTCODE
    CLRF    Offset
    GOTO    INTRETURN   
    
    END


ik heb het nog niet door kunnen testen (geen dmx invoer app |:( )

Acties:
  • 0 Henk 'm!

  • Mike2k
  • Registratie: Mei 2002
  • Laatst online: 27-04 11:21

Mike2k

Zone grote vuurbal jonge! BAM!

Dit is wel een ontzettende gravekick maar het hoort hier wel thuis volgens mij...

Ik ben op dit moment bezig met het prototypen van een led array van 48 smd leds. Deze leds wil ik aansturen middels dmx. Ik heb al een MAX485 chip. Daar komt nog een PIC bij.

Nu ben ik nog opzoek naar de FET's om de stroom van die ledjes aan te kunnen. Met 20 mA en 48 leds komt het totaal op 960mA.

Dat betekent dat ik genoeg heb aan een 5V 1A logic level FET. Nu heb ik er een gevonden en wil graag jullie mening hierover:
- http://www.irf.com/product-info/datasheets/data/ips021l.pdf

Op pagina 2 van die datasheet staat het volgende:

Recommended Operating Conditions
These values are given for a quick design. For operation outside these conditions, please consult the application notes.

V IH High level input voltage 4v 6v
V IL Low level input voltage 0v 0.5v
Continuous drain current — 1.4 A

Dat zou toch de goede moeten zijn zonder dat ik teveel 'over' heb ?

You definitely rate about a 9.0 on my weird-shit-o-meter
Chuck Norris doesn't dial the wrong number. You answer the wrong phone.


Acties:
  • 0 Henk 'm!

  • lemming_nl
  • Registratie: Juli 2004
  • Niet online
De specs zijn voldoende. Het is een luxe mosfet met beveiligingen enzo ingebakken. Op zich werkt een BUZ11 ook prima. 'Over' hebben lijkt me geen probleem, gewoon kijken wat goedkoop is en of je behoefte hebt aan beveiligingen.

Geluk is een weerloos oud vrouwtje, alleen op straat met een bom geld

Pagina: 1 2 Laatste