Problemen met DMX-aansturing icm Pic

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Thijsch
    • Feb 2005
    • 45

    #1

    Problemen met DMX-aansturing icm Pic

    Hallo,

    Ik ben bezig met een klein DMX-besturingspaneeltje(puur voor het bouwen, uiteraard niet voor professioneel gebruik), wat bestaat uit 5 knoppen, een PIC (de 16f628A, met een krystal van 20 Mhz),en een 75176 RS-485 Ictje. Ik heb het geconstrueerd maar het werkt niet.

    En het probleem is: Ik kan alleen controleren of het werkt of niet. Ik heb verder geen geavanceerde apparatuur om te kijken wat er niet klopt. Vandaar mijn vraag: kan iemand een fout ontdekken in mijn schakeling of programma?

    Er gebeurd gewoon helemaal niets. of ik de knoppen wel of niet indruk maakt helemaal geen verschil.

    Dit is mijn schema:


    //edit: oja, de pic zit in dit schema niet aan de massa maar in het echt uiteraard wel


    (de twee lijnen rechts onder zijn de Hot &Cold van de DMX)

    Het krystal is 20 Mhz,rechts-midden bij de parralele lijnen zitten de drukknoppen met een pulldown weerstand naar de grond (de knoppen zelf zijn niet getekend ivm de grootte maar dit lijkt me duidelijk zo). Het grote IC is uiteraard de !6f628A en de kleine de 75176.

    Mijn programma is hier te vinden:



    Het is erg groot en dat heeft een reden. In DMX-land (RS-485...) duurt het verzenden van 1 bit 4 us. omdat mijn pic een krystal van 20 mhz heeft loopt dat ding dus op 5 mhz, ofwel: 5 instructies per us. Voor 4 us hoog moet ik dus 4*5 = 20 instructies lang wachten. Vandaar de vele NOP'jes en wachtlussen.

    Het idee is: aan het begin stopt hij de waarden van de knopjes in een register, dan wordt de BREAK verstuurd, MAB, Startbit, startcode, stopbit. Startbit, Chanel1 data, stopbit. etc. precies zoals het hoort dus. Ik zie geen fouten in mijn schakeling of programmatuur.

    Iemand anders wel??


    (is er trouwens een goed programma om code te simuleren? het liefst met schakeling natuurlijk maar het lijkt me sterk dat zoiets bestaat)


    (Op dit forum mogen toch ook dergelijke vragen of is dit "te technisch" ?)
  • laserguy
    • Jun 2003
    • 2755

    #2
    Een assembler programma van een ander lezen is zowiezo al geen pretje. Gelieve dus minstens ALLE vaste hardware registers te benoemen. Een BSF 03,5 leest net iets moeilijker dan een BSF STATUS,5. Er wordt ook aangeraden door Microchip zelf om steeds de codetemplates te gebruiken (worden meegeleverd bij de gratis te downloaden IDE).
    Waarom gebruik je geen loopjes dan die hoop NOP's? [EDIT]Dit[/EDIT] houdt de code korter DUS makkelijker te overlezen.
    In ieder geval succes.

    Beware! To touch these wires is instant death. Anyone found doing so will be prosecuted.

    Comment

    • Thijsch
      • Feb 2005
      • 45

      #3
      citaat:Geplaatst door laserguy

      Een assembler programma van een ander lezen is zowiezo al geen pretje. Gelieve dus minstens ALLE vaste hardware registers te benoemen. Een BSF 03,5 leest net iets moeilijker dan een BSF STATUS,5. Er wordt ook aangeraden door Microchip zelf om steeds de codetemplates te gebruiken (worden meegeleverd bij de gratis te downloaden IDE).
      Waarom gebruik je geen loopjes dan die hoop NOP's? Houdt de code korter DUS makkelijker te overlezen.
      In ieder geval succes.
      Daar heb je inderdaad gelijk in. Ik heb mijn code nu aangepast en voorzien van commentaar, het moet nu voor iedereen duidelijk zijn welke code wat doet.
      Maar nu loop ik meteen ergens tegenaan. Ik heb wachtlussen ingebouwd met deze code:

      [code]
      BCF PORTA,0 ; startcode
      NOP ; 1 cycle
      NOP ; 1 cycle
      MOVLW 35h ; 1 cycle
      MOVWF teller1 ; 1 cycle
      loop2 DECFSZ teller1,1 ; 1 cycle * 52
      GOTO loop2 ; 2 cycle * 52
      ;------------- +
      ; 160 cycles = 8 bits


      [/code]

      op deze manier ben ik precies 160 cycles bezig. Maar nu mijn vraag, die regel van GOTO, neemt die wel 2 cycles in beslag? anders zou dat betekenen dat mijn break, startcode en channeldata dus 1/3e te kort duren, wat het probleem zou verklaren.

      Comment

      • laserguy
        • Jun 2003
        • 2755

        #4
        Dit lijkt eral beter op. Ik weet dat bij de PIC16F84 de GOTO ALTIJD 2 cycles duurt MAAR PIC's zijn rare dingen dus ik zou voor alle zekerheid de datasheet van jouw PIC16F628 er zeker eens op nakijken (staat in de lijst met commando's).
        Ik zal bij gelegenheid je code eens nakijken en ik moet zeggen: nu véél beter leesbaar!!! Omdat jij moeite hiervoor hebt gedaan zal ik dan ook moeite doen om ze eens te controleren.
        Beware! To touch these wires is instant death. Anyone found doing so will be prosecuted.

        Comment

        • SjoerdOptLand
          • Jul 2003
          • 261

          #5
          Even een scoop/logic analyzer gepakt? (Als je een ongebruikt lijntje aan het begin van elke cycle hoog en laag maakt, kun je daar de sync-ingang van de scoop op aansluiten.)

          Succes
          Sjoerd

          Comment

          • Dave
            • Jan 2001
            • 757

            #6
            In ieder geval het schrijven naar een register duurt 2 cycles. Volgens mij schrijf je met een goto een waarde naar de PC (program counter), dus dan zou dat ook 2 cycles in beslag moeten nemen.
            Overigens komt het bij DMX niet zo heel nouw met de timing, de break mag langer zijn en als ik het goed herrinner de MAB ook.
            U x I = Boem.

            Comment

            • Thijsch
              • Feb 2005
              • 45

              #7
              Mensen het werkt! Ik had een foutje gemaakt met de code in de PIC zetten. Ik heb het nu als volgt:

              Break: 30 bits (120 us) (minimum 11 maar dit kwam mooit uit zo),
              MAB: 2 bits ( 8 us)
              startbit: 1 bit ( 4 us)
              startcode: 8 bits ( 32 us)
              stopbits: 2 bits (8 us)
              startbit: 1 bit ( 4 us)
              etc.

              Heel af en toe zit ik er 0.4 us naast. maar dat lijkt me zo weinig dat dat geen verschil moet maken.

              Het werkt nu met de Led-in-XLR-tester. Morgen kan ik het testen op een echte dmx installatie

              Comment

              • FiëstaLj
                • Oct 2000
                • 2068

                #8
                Zou je je software es online willen zetten voor de rest van de knutselaars onder ons ?
                Hockeysletten JA! BrEeZaHs NEE!

                Comment

                • Thijsch
                  • Feb 2005
                  • 45

                  #9
                  de software staat online in de startpost.

                  Comment

                  Working...