Difference between revisions of "Example egpc"
m (→Hardware Requirements: Increased visibility of note.) |
m (Made various improvements and marked FinalDraft.) |
||
Line 1: | Line 1: | ||
− | {{todo|Review(12.27.13-14:22->JG+)|Jgreene|project=oe 4,oe 5,jg,md, | + | {{todo|Review(12.27.13-14:22->JG+);(12.30.13-17:20->MD+)|Jgreene|project=oe 4,oe 5,jg,md,FinalDraft}} |
This is a guide to the <code>egpc</code> C example project included in the EMAC OE SDK. | This is a guide to the <code>egpc</code> C example project included in the EMAC OE SDK. | ||
− | <code>egpc</code> is an application for reading/writing/configuring gpio character devices. Specifically, | + | <code>egpc</code> is an application for reading/writing/configuring gpio character devices. Specifically, it will read/write/configure the 3 ports (ports '''A''', '''B''' and '''C''') on the GPIO header. |
The <code>egpc</code> project builds one executable: <code>egpc</code>. | The <code>egpc</code> project builds one executable: <code>egpc</code>. | ||
Line 30: | Line 30: | ||
===Hardware Requirements=== | ===Hardware Requirements=== | ||
− | The <code>egpc</code> C example project will run on any EMAC carrier board. | + | The <code>egpc</code> C example project will run on any EMAC carrier board which has one or more GPIO. |
− | |||
− | |||
===Using <code>egpc</code>=== | ===Using <code>egpc</code>=== | ||
− | ./egpc device d/c/i | + | ./egpc ''device'' ''[d/c/i]'' ''arg'' |
− | + | ''device'' is <code>/dev/porta</code>, <code>/dev/portb</code> or <code>/dev/portc</code><br /> | |
− | + | ''d/c/i'' specifies the port command : <code>d</code> (data), <code>c</code> (configure) or <code>i</code> (index)<br /> | |
− | + | ''arg'' is either a port index or a bitmask. The bitmask is in hex format, range <code>[0x00,0xff]</code>. | |
===Usage Example. Port Configuration=== | ===Usage Example. Port Configuration=== | ||
− | ./egpc device c | + | ./egpc ''device'' c ''[mask]'' |
− | If a mask is specified it configures the pins for input/output.<br /> | + | If a mask is specified, it configures the pins for input/output.<br /> |
− | If no mask is specified it returns the current configuration.<br /> | + | If no mask is specified, it returns the current configuration.<br /> |
− | + | ''mask'' is an input/output bitmask. <code>1</code>=output and <code>0</code>=input.<br /> | |
− | For example, this sets every other pin on | + | For example, this sets every other pin on '''Port A''' to be an output. |
./egpc /dev/porta c 0xaa | ./egpc /dev/porta c 0xaa | ||
− | ...and this reads the current pin configuration state of | + | ...and this reads the current pin configuration state of '''Port A'''. |
./egpc /dev/porta c | ./egpc /dev/porta c | ||
0xaa | 0xaa | ||
− | ===Usage Example | + | ===Usage Example: Port Data=== |
− | ./egpc device d | + | ./egpc device d ''[mask]'' |
If a mask is specified then it sets each bit's corresponding pin output latch to high/low accordingly.<br /> | If a mask is specified then it sets each bit's corresponding pin output latch to high/low accordingly.<br /> | ||
If a mask is not specified then the current pin state is retrieved.<br /> | If a mask is not specified then the current pin state is retrieved.<br /> | ||
− | For example, this writes pin output latches on | + | |
+ | For example, this writes pin output latches on '''Port C''' to alternating high and low. | ||
./egpc /dev/portc d 0x55 | ./egpc /dev/portc d 0x55 | ||
− | + | This flips the pins, writing all the pins that were set low in the previous command to high, and vice-versa: | |
./egpc /dev/portc d 0xaa | ./egpc /dev/portc d 0xaa | ||
− | + | This reads the current pin data state of '''Port C'''. | |
./egps /dev/portc d | ./egps /dev/portc d | ||
− | ''' | + | The pin values for '''Port C''' are displayed on the board's strip of 8 LEDs. Observe that the LEDs change state when a new value is written to '''Port C'''. This only works for '''Port C''', however. '''Ports A''' and '''B''' must be read with an oscilloscope, multimeter, logic analyzer or similar device. |
===Usage Example. Port Index=== | ===Usage Example. Port Index=== | ||
Line 84: | Line 83: | ||
If an index is specified then it sets the port's index<br /> | If an index is specified then it sets the port's index<br /> | ||
If an index is not specified then the port's current index is retrieved.<br /> | If an index is not specified then the port's current index is retrieved.<br /> | ||
− | For example, this sets the index of | + | |
+ | For example, this sets the index of '''Port A''' to 1 | ||
./egpc /dev/porta i 1 | ./egpc /dev/porta i 1 | ||
− | ...and this reads the current index of | + | ...and this reads the current index of '''Port A''' |
./egpc /dev/porta i | ./egpc /dev/porta i | ||
Line 94: | Line 94: | ||
==Summary== | ==Summary== | ||
− | <code>egpc</code> is an application | + | <code>egpc</code> is an application which demonstrates reading, writing and configuring the GPIO ports. |
Revision as of 17:18, 30 December 2013
This is a guide to the egpc
C example project included in the EMAC OE SDK.
egpc
is an application for reading/writing/configuring gpio character devices. Specifically, it will read/write/configure the 3 ports (ports A, B and C) on the GPIO header.
The egpc
project builds one executable: egpc
.
Contents
Opening, Building and Uploading the Project Files
1. Open the C/C++ editing perspective.
stub
2. Open the project files.
stub
3. Build the project.
stub
4. Upload the executables to the target system.
stub
Usage and Behavior
egpc
reads/writes/configures the GPIO ports.
Hardware Requirements
The egpc
C example project will run on any EMAC carrier board which has one or more GPIO.
Using egpc
./egpc device [d/c/i] arg
device is /dev/porta
, /dev/portb
or /dev/portc
d/c/i specifies the port command : d
(data), c
(configure) or i
(index)
arg is either a port index or a bitmask. The bitmask is in hex format, range [0x00,0xff]
.
Usage Example. Port Configuration
./egpc device c [mask]
If a mask is specified, it configures the pins for input/output.
If no mask is specified, it returns the current configuration.
mask is an input/output bitmask. 1
=output and 0
=input.
For example, this sets every other pin on Port A to be an output.
./egpc /dev/porta c 0xaa
...and this reads the current pin configuration state of Port A.
./egpc /dev/porta c 0xaa
Usage Example: Port Data
./egpc device d [mask]
If a mask is specified then it sets each bit's corresponding pin output latch to high/low accordingly.
If a mask is not specified then the current pin state is retrieved.
For example, this writes pin output latches on Port C to alternating high and low.
./egpc /dev/portc d 0x55
This flips the pins, writing all the pins that were set low in the previous command to high, and vice-versa:
./egpc /dev/portc d 0xaa
This reads the current pin data state of Port C.
./egps /dev/portc d
The pin values for Port C are displayed on the board's strip of 8 LEDs. Observe that the LEDs change state when a new value is written to Port C. This only works for Port C, however. Ports A and B must be read with an oscilloscope, multimeter, logic analyzer or similar device.
Usage Example. Port Index
./egpc device i (index)
If an index is specified then it sets the port's index
If an index is not specified then the port's current index is retrieved.
For example, this sets the index of Port A to 1
./egpc /dev/porta i 1
...and this reads the current index of Port A
./egpc /dev/porta i
Summary
egpc
is an application which demonstrates reading, writing and configuring the GPIO ports.