rhartl
August 1, 2015, 8:53pm
1
I have the following code that, I think, used to compile. But with the new compiler I get errors. Not sure what is going on.
code:
int readPassword()
{
byte hbyte = 0;
byte lbyte = 0;
lbyte = EEPROM.read(0);
hbyte = EEPROM.read(1);
//Return the recomposed pw by using bitshift.
return ((lbyte << 0) & 0xFF) + ((hbyte << 8) & 0xFFFF);
}
The call to the function in loop is...
int PassWord = readPassword();
I get the following error:
error: invalid conversion from 'int (*)()' to 'int' [-fpermissive]
What have I done?
system
August 1, 2015, 8:57pm
2
What have I done?
You have failed to post ALL of your code or ALL of your error message(s).
Is the lowbyte at '0' and highbyte at '1' when the eeprom_read_word() and eeprom_write_word() are used ? I'm not sure.
This reads two bytes from position 0 and 1:
#include <avr/eeprom.h>
#define readPassword() eeprom_read_word( (uint16_t *) 0)
This forces that the byte at '0' is the lowbyte and at '1' is the highbyte:
#include <EEPROM.h>
#define readPassword() word( EEPROM.read(1), EEPROM.read(0))
The Arduino programming language Reference, organized into Functions, Variable and Constant, and Structure keywords.
P.S.: I didn't check the code, the macro should be used to store the result into an integer.
@rhartl : Please use code tags.
Read this before posting a programming question
Please edit your post, select the code, and put it between [ code ] ... [ /code ] tags.
You can do that by hitting the "Code" icon above the posting area. It is the first icon, with the symbol: </>
rhartl
August 3, 2015, 2:40pm
6
Delta_G
Thanks. That was precisely the problem.