Created
March 18, 2015 03:52
-
-
Save nasamuffin/64dc1b6a55647d39ba8d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <unistd.h> | |
#include <fcntl.h> | |
#include <sys/mman.h> | |
#include <iostream> | |
#define OE_ADDR 0x134 | |
#define GPIO_DATAOUT 0x13C | |
#define GPIO_DATAIN 0x138 | |
#define GPIO0_ADDR 0x44E07000 | |
#define GPIO1_ADDR 0x4804C000 | |
#define GPIO2_ADDR 0x481AC000 | |
#define GPIO3_ADDR 0x481AF000 | |
using namespace std; | |
int main(){ | |
int fd = open("/dev/mem",O_RDWR | O_SYNC); | |
ulong* pinconf1 = (ulong*) mmap(NULL, 0x1000, PROT_READ | PROT_WRITE, MAP_SHARED, fd, GPIO1_ADDR); | |
pinconf1[OE_ADDR/4] &= (0xFFFFFFFF ^ (1 << 28)); | |
for(int i = 0 ; i < 5; i++){ | |
pinconf1[GPIO_DATAOUT/4] |= (1 << 28); | |
pinconf1[GPIO_DATAOUT/4] ^= (1 << 21); | |
sleep(1); | |
pinconf1[GPIO_DATAOUT/4] ^= (1 << 28); | |
pinconf1[GPIO_DATAOUT/4] |= (1 << 21); | |
sleep(1); | |
} | |
pinconf1[GPIO_DATAOUT/4] &= (0xFFFFFFFF ^ ((1 << 21) | (1 << 28))); | |
pinconf1[OE_ADDR/4] |= ( 1 << 28); | |
for(int i = 0; i < 20; i++){ | |
cout << pinconf1[GPIO_DATAIN/4] << endl; | |
if(pinconf1[GPIO_DATAIN/4] & (1 << 28)){ | |
cout << "on" <<endl; | |
pinconf1[GPIO_DATAOUT/4] |= (1 << 21); | |
} | |
else{ | |
cout << "off" <<endl; | |
pinconf1[GPIO_DATAOUT/4] &= (0xFFFFFFFF ^ (1 << 21)); | |
} | |
sleep(1); | |
} | |
pinconf1[GPIO_DATAOUT/4] ^= (1 << 21); | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment