-
Notifications
You must be signed in to change notification settings - Fork 0
Hardware Documentation
Here's a reference for what every programmer needs to know: the hardware interface.
Device: PIC18F2685
Fosc: 40MHz (10 MIPS)
A five-position DIP switch is used to select the block of DMX channels used by the heads. The switches are pulled high to indicate "off", and pulled low to indicate "on". They're on pins RA0
, RA1
, RA2
, RA3
, and RA5
. RA0
is the most significant bit, RA5
is the least significant bit.
What could be more fun than a bunch of blinking lights? There are a total of six status LEDs connected to the microcontroller. Setting a pin high results in illumination. Their usage is not completely fixed, so if you can think of something better, go for it.
Four pink LEDs are connected to RB0
, RB1
, RB2
, and RB3
. These are intended to show the status of the individual heads. Two more LEDs are connected to RB4
and RB5
. These are intended to show the status of the DMX input, and possibly a self test.
LED | Port | Pin # |
---|---|---|
1 (Pink) | RB0 | 21 |
2 (Pink) | RB1 | 22 |
3 (Pink) | RB2 | 23 |
4 (Pink) | RB3 | 24 |
5 (Green) | RB4 | 25 |
6 (Blue) | RB5 | 26 |
The RS-485 DMX input and output are connected to the TX and RX serial pins. The hardware is capable of serving as a DMX master, so don't transmit anything unless you know exactly what you're doing. For the light show, don't transmit anything at all.
Function | Port | Pin # |
---|---|---|
Transmit | TX | 17 |
Receive | RX | 18 |
Why are hardware USART TX/RX pins used to transmit DMX? Because DMX is a layer on top of RS-485.
"Therefore, we can use the USART to accept bytes and not rely on bit-banging. It additionally allows a mild bit of "multi-threading" as the USART hardware and CPU do their work in parallel. We have to switch to interrupt-driven first though! ~tylrtrmbl"