Im getting these errors:
error: lvalue required as left operand of assignment
error: void value not ignored as it ought to be
Basically I have a i2c capacitive touch controller that I am constantly scanning then checking the scanned data and then doing an d actions if required then repeating.
Here is my code:
#include <avr/io.h>
#include <util/delay.h>
#include "i2cmaster.h"
#define mpr03x 0x4A
int main(void)
{
unsigned char tou;
DDRA = 0xff;
DDRB = 0xff;
PORTA = 0x03;
_delay_ms(500);
PORTA = 0x00;
i2c_init(); //Initialize I2C
i2c_start_wait(mpr03x+I2C_WRITE); //Set device address and write mode
i2c_write(0x44); //Write address = 68
i2c_write(0x03); //Calibration = ON, Runmode = 1, Enabled = ELE0, ELE1, ELE2
while(1)
{
PORTA = 0x01;
i2c_start_wait(mpr03x=I2C_WRITE); //Set device address and write mode
i2c_write(0x00); //Write address = 68
i2c_rep_start(mpr03x+I2C_READ); // set device address and read mode
tou = i2c_readNak;
i2c_stop;
if(tou == 0x00); //If no pads are pressed
{
PORTA = 0x00;
_delay_ms(1);
}
else
{
if(tou == 0x01); //If pad 1 is pressed
{
PORTA = 0x05;
if(tou == 0x02); //If pad 2 is pressed
{
PORTA = 0x09;
if(tou == 0x03); //If pad 3 is pressed
{
PORTA = 0x11;
_delay_ms(1000);
}
}
else
{
if(tou == 0x02); //If pad 2 is pressed
{
PORTA = 0x09;
if(tou == 0x03); //If pad 3 is pressed
{
PORTA = 0x11;
_delay_ms(1000);
}
else
{
if(tou == 0x03);//If pad 3 is pressed
{
PORTA = 0x11;
_delay_ms(1000);
}
}
}
}
}
}
}`
Any help would be greatly appreciated.
This will certainly cause problems:
i2c_start_wait(mpr03x=I2C_WRITE); //Set device address and write mode
^
... because mpr03x
is not a variable.
My assumption is that a back-tick isn't actually in your code on the last line, but I'll mention it anyway.
As someone else pointed out, i2c_stop;
looks like a mistake.