Example egpc

From wiki.emacinc.com
Revision as of 18:18, 30 December 2013 by Mdean (talk | contribs) (Made various improvements and marked FinalDraft.)
Jump to: navigation, search
TODO: {{#todo:Review(12.27.13-14:22->JG+);(12.30.13-17:20->MD+)|Jgreene|oe 4,oe 5,jg,md,FinalDraft}}

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.

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.