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