parent
13ea7e7daa
commit
41c4b0ca40
@ -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
|
||||||
|
|
@ -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 \
|
||||||
|
|
@ -0,0 +1,3 @@
|
|||||||
|
This code needs wiringPi
|
||||||
|
|
||||||
|
Compile it by running make i2c_challenge
|
@ -0,0 +1,65 @@
|
|||||||
|
O/*
|
||||||
|
*i2ctest.c
|
||||||
|
* Raspberry Pi I2C test using wiringPi library.
|
||||||
|
*
|
||||||
|
*Copyright (c) Nahid Alam. <nahid.mahfuza.alam@gmail.com>
|
||||||
|
***********************************************************
|
||||||
|
*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 <stdio.h>
|
||||||
|
#include <wiringPi.h>
|
||||||
|
#include <wiringPiI2C.h>
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in new issue