##// END OF EJS Templates
Correciones en la función de envío de archivos hacia los módulos de control
Correciones en la función de envío de archivos hacia los módulos de control

File last commit:

r20:21
r42:43
Show More
AT91gpio_Funciones.c
102 lines | 2.1 KiB | text/x-c | CLexer
First commit of the Control Module
r16 /*
* 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_ */
}