This is the Revision A verion of the IO8 Module. The status of this project is finished.
This document is also available in PDF format.
The IO8 Module is used to provide 8-pins of of I/O capabilitiy. Each I/O pin can independently used as digital input, an analog input, or a digital output. The analog input is at 10-bits or resolution based off of a internal 5-volt reference or an externally supplied voltage reference.
Module Interrupt Protocol for those lines that are being used as inputs. The interrupt pending bit is set whenever the the formula:
L&(~I) | H&I | R&(~P)&I | F&P&(~I)is non-zero, where:
In addition to the common shared commands and the shared interrupt commands, the AnalogIn4 Module supports following commands:
Command | Send/ Receive |
Byte Value | Discussion | |||||||
---|---|---|---|---|---|---|---|---|---|---|
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||
Read Inputs | Send | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | Return 8-bits of input iiii iiii (after XOR'ing with complement mask) |
Receive | i | i | i | i | i | i | i | i | ||
Read Outputs | Send | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | Return 8-bits of the outputs oooo oooo (after XOR'ing with complement mask.) |
Receive | o | o | o | o | o | o | o | o | ||
Read Complement Mask | Send | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | Return 8-bits of complement mask cccc cccc |
Receive | c | c | c | c | c | c | c | c | ||
Read Direction Mask | Send | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | Return 8-bits of direction mask dddd dddd |
Receive | d | d | d | d | d | d | d | d | ||
Read Low Mask | Send | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | Return 8-bits of low mask llll llll |
Receive | l | l | l | l | l | l | l | l | ||
Read High Mask | Send | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | Return 8-bits of the high mask hhhh hhhh |
Receive | h | h | h | h | h | h | h | h | ||
Read Rising Mask | Send | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | Return 8-bits of the rising mask rrrr rrrr |
Receive | r | r | r | r | r | r | r | r | ||
Read Falling Mask | Send | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | Return 8-bits of the falling mask ffff ffff |
Receive | f | f | f | f | f | f | f | f | ||
Read Raw | Send | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | Return 8-bits of raw input data rrrr rrrr (without XOR'ing with complement mask) |
Receive | r | r | r | r | r | r | r | r | ||
Read Analog Mask | Send | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | Return the Analog mask aaaa aaaa. |
Receive | a | a | a | a | a | a | a | a | ||
Read Outputs Raw | Send | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | Return the raw outputs as oooo oooo with no complement mask. |
Receive | o | o | o | o | o | o | o | o | ||
Read Analog VRef | Send | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | Return the analog Vref at v (0 = 5 volts, 1 = IO1). |
Receive | 0 | 0 | 0 | 0 | 0 | 0 | 0 | v | ||
Reset Outputs | Send | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | Set all 8 bits of outputs to 0 (then XOR with complement mask). |
Set Outputs | Send | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | Set output bits to oooo oooo. |
Send | o | o | o | o | o | o | o | o | ||
Set Complement Mask | Send | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | Set 8-bits of complement mask to cccc cccc |
Send | c | c | c | c | c | c | c | c | ||
Set Direction Mask | Send | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | Set 8-bits of direction mask to dddd dddd 1=input; 0=output |
Send | d | d | d | d | d | d | d | d | ||
Set Low Mask | Send | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | Set 8-bits of low mask to llll llll |
Send | l | l | l | l | l | l | l | l | ||
Set High Mask | Send | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | Set 8-bits of the high mask to hhhh hhhh |
Send | h | h | h | h | h | h | h | h | ||
Set Rising Mask | Send | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | Set 8-bits of the rising mask to rrrr rrrr |
Send | r | r | r | r | r | r | r | r | ||
Set Falling Mask | Send | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | Set 8-bits of the falling mask to ffff ffff |
Send | f | f | f | f | f | f | f | f | ||
Set Outputs Raw | Send | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | Set 8-bits to oooo oooo with no complement mask. |
Send | o | o | o | o | o | o | o | o | ||
Set Analog Mask | Send | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | Set analog mask to aaaa aaaa. |
Send | a | a | a | a | a | a | a | a | ||
Set Analog VRef | Send | 0 | 0 | 0 | 1 | 1 | 0 | 1 | v | Set A/D converted Voltage refernce mode to v (0 = 5 volts, 1 = external). |
Reset Everything | Send | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | Reset all registers to 0 and set direction bits to 1 (input) |
Set Output Bit | Send | 0 | 0 | 1 | 0 | v | b | b | b | Set output bit bbbb to v |
Set Outputs Low | Send | 0 | 1 | 0 | 0 | l | l | l | l | Set low order 4-bits of Outputs to llll and then XOR complement mask |
Set Outputs High | Send | 0 | 1 | 0 | 1 | h | h | h | h | Set high order 4-bits of Outputs to hhhh and and then XOR complement mask |
Set Direction Low | Send | 0 | 1 | 1 | 0 | l | l | l | l | Set low order 4-bits of direction to llll. |
Set Direction High | Send | 0 | 1 | 1 | 1 | h | h | h | h | Set high order 4-bits of direction to hhhh. |
Read Analog 8-bits | Send | 1 | 0 | 0 | 0 | 0 | b | b | b | Read 8-bits of analog value from bbb and returns result as aaaa aaaa. Note: there is a firmware bug that remaps the channels thusly CH0=IO3=N4-4, CH1=IO6=N4-7, CH2=IO5=N4-6, CH3=IO1=N4-2, CH4=IO0=N4-1, CH5=IO4=N4-5, CH6=IO2=N4-3, CH7=IO7=N4-8. |
Receive | a | a | a | a | a | a | a | a | ||
Read Analog 10-bits | Send | 1 | 0 | 0 | 0 | 1 | b | b | b | Read 10-bits of analog value from bbb and returns result as aaaa aaaa bb. See Read Analog 8-bits command for information about the channel remapping bug. |
Receive | a | a | a | a | a | a | a | a | ||
Receive | b | b | 0 | 0 | 0 | 0 | 0 | 0 | ||
Read Low Threshold | Send | 1 | 0 | 0 | 1 | 0 | b | b | b | Read analog low threshold for bbb and returns result as llll llll. |
Receive | l | l | l | l | l | l | l | l | ||
Read High Threshold | Send | 1 | 0 | 0 | 1 | 1 | b | b | b | Read analog low threshold for bbb and returns result as hhhh hhhh. |
Receive | h | h | h | h | h | h | h | h | ||
Set Low Threshold | Send | 1 | 0 | 1 | 1 | 0 | b | b | b | Set the analog low threshold for bbb to llll llll. |
Send | l | l | l | l | l | l | l | l | ||
Set High Threshold | Send | 1 | 0 | 1 | 1 | 1 | b | b | b | Set the analog low threshold for bbb to hhhh hhhh. |
Send | h | h | h | h | h | h | h | h | ||
Set Interrupt Commands | Send | 1 | 1 | 1 | 1 | 0 | c | c | c | Set Interrupt Command ccc. |
Shared Commands | Send | 1 | 1 | 1 | 1 | 1 | c | c | c | Execute Shared Command ccc |
The hardware consists of a circuit schematic and a printed circuit board.
The schematic for the IO8 Module is shown below:
The parts list kept in a separate file -- io8.ptl.
The printed circuit board files are listed below:
The software for the IO8 is listed below:
Any fabrication issues will be listed here.