diff --git a/AVR/README.md b/AVR/README.md new file mode 100644 index 0000000..ba97668 --- /dev/null +++ b/AVR/README.md @@ -0,0 +1,13 @@ +This code is made to run on an atmega328p using the library avr-i2c-slave (https://github.com/thegouger/avr-i2c-slave.git) + +I included my avrdude.conf for easy building. + +On Debian you need: +avrdude +gcc-avr +Probably a lot other stuff I forgot. + +Make sure you have the correct fuses, the correct name for you AVR and then run: +make +sudo make program + diff --git a/RPi/Makefile b/RPi/Makefile new file mode 100644 index 0000000..b462983 --- /dev/null +++ b/RPi/Makefile @@ -0,0 +1,19 @@ +# +# Makefile: +################################################################################# + + +#DEBUG = -g -O0 +DEBUG = -O3 +CC = gcc +INCLUDE = -I/usr/local/include +CFLAGS = $(DEBUG) -Wall $(INCLUDE) -Winline -pipe + +LDFLAGS = -L/usr/local/lib +LDLIBS = -lwiringPi -lwiringPiDev -lpthread -lm + +# Should not alter anything below this line +############################################################################### + +SRC = i2c_challenge.c \ + diff --git a/RPi/README.md b/RPi/README.md new file mode 100644 index 0000000..ef53d02 --- /dev/null +++ b/RPi/README.md @@ -0,0 +1,3 @@ +This code needs wiringPi + +Compile it by running make i2c_challenge diff --git a/RPi/i2c_challenge.c b/RPi/i2c_challenge.c new file mode 100644 index 0000000..ea5d48d --- /dev/null +++ b/RPi/i2c_challenge.c @@ -0,0 +1,65 @@ +O/* +*i2ctest.c +* Raspberry Pi I2C test using wiringPi library. +* +*Copyright (c) Nahid Alam. +*********************************************************** +*i2ctest is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * i2ctest is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * +*********************************************************** +*/ + +#include +#include +#include + +int main (int argc, char *argv[]) +{ + int fd; + int data; + int send=1; + wiringPiSetup () ; + fd=wiringPiI2CSetup (0x20) ; /*Use i2cdetect command to find your respective device address*/ + if(fd==-1) + { + printf("Can't setup the I2C device\n"); + return -1; + } + else + { + while(data != 6) { + wiringPiI2CWrite(fd, send); + data=wiringPiI2CRead(fd); + if(data==-1) + { + printf("No data\n"); + //return -1; + } + else if(data == send*3) { + printf("Sending challenge"); + wiringPiI2CWrite(fd, 4); + } + else if(data == 6) { + printf("Read proper response \n"); + break; + } + else + { + //print data + printf("Waiting to send challenge"); + } + printf(" data=%d\n", data); + + } + } + return 0; +} +