Managed to find out a solution by myself.
removed the three #define NO_PORTx_PINCHANGES
removed the #include <PinChangeInt.h>
changed PCintPort::attachInterrupt(pinInclusion, startInclusionInterrupt, RISING); to
attachInterrupt(1, startInclusionInterrupt, RISING);
Now I am able to use the Seeedstudip GPRS shield pins 7 and 8 with SoftwareSerial.
Hi all...
This is important for all ...
Hek I find problem with manual node ID setting ..
Your code is optimized for ATmega328P 16Mhz - 115200 serial speed ..
and here is problem ... big problem !!
16MHz -115200 is in normal speed : 3.549% ERROR , and in double speed : 2.124% ERROR
with no calibrated 8Mhz internal RC oscilator is normal speed : 8.507% ERROR and in double speed : 3.549%
then in fact .. no problem to send data from MCU to PC .. problem send data from PC to MCU ..
solution :
for sensor node or repeater .. we don't need received data from UART .. then can use 115200 with internal RC oscilator ..
for serial gateway is need to send and received data from to MCU with controller .. then use scrystal 16Mhz (as orginal code ) or use better crystall : 7.3728Mhz , 11.0592Mhz , 14.7456Mhz ... with this crystall is ERROR 0% ... or use lower speed for serial gateway for example 38400bps ...
sorry for all .. but I'm not thinking about it .. and problem was all time in hardware ..
interesting is that if generate own bootloader for my node then first time I set 115200 bps speed and my software show error more then 8.5% ERROR ..and I must change speed to 38400 ...
now it's working .. if node send request for new ID then I send it
regards.
One last thing I'd like to clarify after re-reading my previous post.
The correct send string I entered in the terminal is without trailing ";" - like it was supposed before. As mentioned, the problem has been the BAUD rate of 156k with 8MHz crystal..
So the correct command which will change the PWM -Dimmer level on node 3 to 50% is:
3;0;1;0;3;50\n
Hi. It's long time .. but standard function is : gw.processRadioMessage();
and I make changes in source code in MyGateway.cpp to this :
char MyGateway::processRadioMessage() {
char isMessage=0;
if (process()) {
// A new message was received from one of the sensors
isMessage=1;
MyMessage message = getLastMessage();
if (mGetCommand(message) == C_PRESENTATION && inclusionMode) {
rxBlink(3);
} else {
rxBlink(1);
}
// Pass along the message from sensors to serial line
serial(message);
}
checkButtonTriggeredInclusion();
checkInclusionFinished();
return isMessage;
}
But in new library is not file MyGateway.cpp .. then I don't now ..
using is :
if (gw.processRadioMessage()==1) {..}
regards..
there is possible make easy gateway .. controler .. to control only light for example.. then we don't need external controller .. etc..