This examples demonstrates how to use some pins as input and some as output. It routes the status from a set of pins to other pins. See the documentation for settings and how to deploy this example on target.
Definition in file pio_example.c.
#include "pio.h"
#include <avr32/io.h>
Go to the source code of this file.
Defines | |
#define | INPUT_MASK 0x000000ff |
#define | OUTPUT_MASK 0x000000ff |
#define | SUCCESS 0 |
Functions | |
int | main (void) |
#define INPUT_MASK 0x000000ff |
#define OUTPUT_MASK 0x000000ff |
#define SUCCESS 0 |
Definition at line 62 of file pio_example.c.
int main | ( | void | ) |
This function will read the dip switches on the STK1000 and put the status out on the leds. To get it to work, you must connect the input and output correctly on the STK1000. The input (switches) header marked J25 must be connected to the header labeled J1 (PORTB[0..7]). While the output (leds) header marked J15 must be connected to the header marked J3 (PORTC[0..7])
Definition at line 74 of file pio_example.c.
References INPUT_MASK, and OUTPUT_MASK.
00075 { 00076 volatile avr32_pio_t *piob = &AVR32_PIOB; 00077 volatile avr32_pio_t *pioc = &AVR32_PIOC; 00078 unsigned int input, output; 00079 00080 pioc->per = OUTPUT_MASK; 00081 piob->per = INPUT_MASK; 00082 00083 pioc->oer = OUTPUT_MASK; 00084 pioc->puer = OUTPUT_MASK; 00085 pioc->codr = OUTPUT_MASK; 00086 piob->codr = INPUT_MASK; 00087 00088 while(1){ 00089 input = ( piob->pdsr & INPUT_MASK); /* get input */ 00090 output = ( pioc->pdsr & OUTPUT_MASK); /* get output */ 00091 00092 if ( output != input){ 00093 pioc->codr = OUTPUT_MASK; /* clear output */ 00094 pioc->sodr = (~input & OUTPUT_MASK); /* set output from input */ 00095 } 00096 00097 } 00098 }