0
Σκέφτομαι να ξεκινήσω ένα project για ένα απλό DMX controller, από αυτά που έχω βρει μέχρι τώρα είναι,
η κωδικοποίηση του dmx σήματος.
timingchat.gif
τα σήματα που πρέπει να διαχειριστούμε είναι,
IDLE = συνεχόμενο H
MTBP = mark time between packets, που θα το βάλω στα 20mS
BREAK = το ξεκίνημα του dmx πακέτου αυτό πρέπει είνα L για τουλάχιστον 88uS μια τιμή από 120 μέχρι 180uS πρέπει να είναι οκ.
MAB = mark after brake αυτό είναι το προβληματικό (διαφορά παλιού με νέου dmx), αλλά από ότι βρήκα πλέον τα 12uS πρέπει να είναι οκ.
SC = start code από ότι έχω βρει databyte=0 είναι για dimmer, αυτό το byte μπορεί να χρησιμοποιηθεί για να πει στο receiver τη είδους data ακολουθούν.
MTBF = mark time between frames αυτό άλλοι δεν το βάζουν καθόλου άλλοι πάλη το βάζουν εγώ θα το βάλω με μια τιμή 10 με 20uS.
και τέλος το CD ή FD = channels data ή frames data που είναι η πληροφορία των καναλιών με 512 κανάλια μέγιστο (εξού και DMX-512), δεν χρειάζεται να στέλνουμε και τα 512 κανάλια συνέχεια, εάν θέλουμε να ελέγξουμε ας πούμε δυο ρομποτικά με 5 κανάλια το καθένα μπορούμε κάλλιστα να στείλουμε μόνο τα πρώτα 10 κανάλια.
Τα byte πληροφορίας SC/CD αποτελούνται από 11 bit και είναι ίδια, το κάθε bit έχει χρόνο 4uS 250Khz δηλ. baud rate 250kbps γι αυτό θέλουμε και κρύσταλλο (για εμάς που δουλεύουμε με υψηλού επιπέδου γλώσσες και όχι assembly) μεγαλύτερο από 8Mhz και είναι έτσι.
Untitled.jpg
Το πρώτο bit είναι το start bit (5) που είναι L, και τα δυο τελευταία τα stop bit (8.) που είναι Η, το πρώτο byte είναι το SC (3) και τα υπόλοιπά τα CD
και επίσης η μετάδοση του byte γίνεται με το πρώτο bit σαν LSB.
Σιγά σιγά θα ακολουθήσουν και τα υπόλοιπα, την δημιουργία του dmx θα την φτιάξω με bit-banging, μου φαίνεται ποιο απλό από ότι να χρησιμοποιήσω την usart του pic.