##// END OF EJS Templates
Adicion de diagrama de flujos
Adicion de diagrama de flujos

File last commit:

r20:21
r26:27
Show More
AT91gpio_Funciones.c
102 lines | 2.1 KiB | text/x-c | CLexer
/*
* This programmer uses AT91' GPIO lines
*
* 2006 by Carlos Camargo
* 2007.May.10 Andres Calderon
* 2009.Aug.26 Jose Francisco Quenta
*/
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include <fcntl.h>
#include "./Librerias/AT91gpio_Funciones.h"
void pio_out(AT91S_PIO * pio, int mask, unsigned long val, int opcion)
{
if (opcion == 1)
pio->PIO_SODR = mask & val;
else
pio->PIO_CODR = mask & val;
}
int pio_in(AT91S_PIO * pio, int mask)
{
return (pio->PIO_PDSR & mask);
}
AT91S_PIO *pio_map(unsigned int piobase)
{
int fd;
void *base;
AT91S_PIO *pio;
off_t addr = piobase;
if ((fd = open("/dev/mem", O_RDWR | O_SYNC)) == -1) {
fprintf(stderr, "Cannot open /dev/mem.\n");
exit(EXIT_FAILURE);
}
fprintf(stderr, "/dev/mem opened.\n");
base = mmap(0, MAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, addr & ~MAP_MASK);
if (base == (void *) -1) {
fprintf(stderr, "Cannot open /dev/mem.\n");
exit(EXIT_FAILURE);
}
fprintf(stderr, "Memory mapped at address %p.\n", base);
pio = base + (addr & MAP_MASK);
return pio;
}
void pio_enable(AT91S_PIO * pio, int mask)
{
pio->PIO_PER = mask; /* Enable PIO */
}
void pio_output_enable(AT91S_PIO * pio, int mask)
{
pio->PIO_OER = mask; /* Set TDI, TMS and TCK as outputs */
}
void pio_input_enable(AT91S_PIO * pio, int mask)
{
pio->PIO_ODR = mask; /* Set TDO as input */
pio->PIO_IFER = mask; /* Enable Input Filter */
}
void pio_disable_irq(AT91S_PIO * pio, int mask)
{
pio->PIO_IDR = mask; /* Disable pin interrupts */
}
void pio_disable_multiple_driver(AT91S_PIO * pio, int mask)
{
pio->PIO_MDDR = mask; /* Disable Multiple Diver */
}
void pio_disable_pull_ups(AT91S_PIO * pio, int mask)
{
pio->PIO_PUDR = mask; /* Disable Pull-Ups */
}
void pio_synchronous_data_output(AT91S_PIO * pio, int mask)
{
pio->PIO_OWDR = mask; /* Synchronous Data Output Write in PIO_ */
}