Hello together,
the following code makes problem if it is called inside inerrupt.
uint16_t b[].p?
void IntSCL(){
noInterrupts();
uint16_t v = 0xffff;
b[idx].p2 = v;
v = ((v >> 4) & 2);
b[idx].p = v;
idx++
interrupts();
}
in b[idx].p2 is the right value. b[idx].p2 = 0xFFFF
but b[idx].p will be always 0
what ever i try. if i use shift then i have problem.
6 hours of wasting time
Please post complete code or a small example that exhibits the problem.
uint16_t b[].p
What is that supposed to be? If I just add that line to an empty sketch, it already complains
sketch_oct20a:1: error: expected initializer before '.' token
uint16_t b[].p;
^
Please post code using code tags; see How to use this forum - please read, specifically point 7.
Please post complete error messages when encountering problems.
void IntSCL(){
// noInterrupts(); //////////// Not needed in an ISR
uint16_t v = 0xffff;
b[idx].p2 = v;
v = ((v >> 4) & 2); // This should always be 2 (0x0FFF & 0x0002)
b[idx].p = v;
idx++
// interrupts(); //////////// Not needed in an ISR
}