I have a VERY SIMPLE sketch operating on an UNO board working Properly.
It monitors a input pulse ( and then generates an output ).
I use the exact same code, compile for Uno , then Mega2560 and results are completely wrong on Mega !!
I only use pin 2 and 7 ( 3 optional ).
Any explanation will be extremely helpful. THANK YOU !!
Here is sketch and results.
#define VSS1pin 2
#define VSS2pin 3
#define VSS2_OUTPUT 7
unsigned long time;
volatile boolean pinVSS2State =0;
volatile int vss1pulse = 0;
volatile int vss2pulse = 0;
volatile int vss2outpulse = 0;
volatile int vss2ctr = 0;
unsigned long rpmlastmillis = 0;
void setup() {
pinMode(13, OUTPUT);
Serial.begin(115200);
pinMode(VSS1pin,INPUT_PULLUP); //
attachInterrupt(digitalPinToInterrupt(VSS1pin), ISRVSS1, FALLING);
pinMode(VSS2pin,INPUT_PULLUP); //
attachInterrupt(digitalPinToInterrupt(VSS2pin), ISRVSS2, FALLING);
pinMode(VSS2_OUTPUT,OUTPUT); //
digitalWrite(VSS2_OUTPUT,HIGH);
}
void ISRVSS1(){
vss1pulse++;
vss2ctr++;
if (vss2ctr > 1) {
pinVSS2State=!pinVSS2State;
digitalWrite(VSS2_OUTPUT,pinVSS2State);
vss2outpulse++;
vss2ctr=0;
}
}
void ISRVSS2(){
vss2pulse++;
}
void loop() {
if (millis() - rpmlastmillis >= 1000){ //Update every one second
rpmlastmillis = millis(); // Update lastmillis
digitalWrite(13,!digitalRead(13));
Serial.print (rpmlastmillis/1000);
Serial.print (" VSS1_");
Serial.print(vss1pulse);
Serial.print (" VSS2_");
Serial.print(vss2pulse);
Serial.print (" VSS2OUT_");
Serial.println(vss2outpulse);
vss1pulse =0 ;
vss2pulse =0 ;
vss2outpulse =0;
}
}; // end of if loop
AND RESULTS.. NOTICE VSS1 value completely wrong on Mega !!
UNO 55 mph pin3 Connected - GOOD
12:20:43.332 -> 34 VSS1_250 VSS2_125 VSS2OUT_125
12:20:44.316 -> 35 VSS1_248 VSS2_124 VSS2OUT_124
12:20:45.299 -> 36 VSS1_244 VSS2_122 VSS2OUT_122
12:20:46.328 -> 37 VSS1_248 VSS2_124 VSS2OUT_125
12:20:47.298 -> 38 VSS1_246 VSS2_123 VSS2OUT_123
12:20:48.327 -> 39 VSS1_252 VSS2_126 VSS2OUT_126
12:20:49.311 -> 40 VSS1_240 VSS2_120 VSS2OUT_120
12:20:50.327 -> 41 VSS1_250 VSS2_125 VSS2OUT_125
12:20:51.310 -> 42 VSS1_246 VSS2_123 VSS2OUT_123
12:20:52.339 -> 43 VSS1_248 VSS2_124 VSS2OUT_124
12:20:53.322 -> 44 VSS1_240 VSS2_120 VSS2OUT_120
12:20:54.305 -> 45 VSS1_246 VSS2_123 VSS2OUT_123
12:20:55.335 -> 46 VSS1_244 VSS2_122 VSS2OUT_122
12:20:56.317 -> 47 VSS1_244 VSS2_122 VSS2OUT_122
12:20:57.300 -> 48 VSS1_242 VSS2_121 VSS2OUT_121
UNO 55 mph pin3 (vss2 in ) disconnected - GOOD
12:16:35.028 -> 36 VSS1_250 VSS2_0 VSS2OUT_125
12:16:36.011 -> 37 VSS1_254 VSS2_0 VSS2OUT_127
12:16:37.041 -> 38 VSS1_250 VSS2_0 VSS2OUT_125
12:16:38.023 -> 39 VSS1_248 VSS2_0 VSS2OUT_124
12:16:39.053 -> 40 VSS1_250 VSS2_0 VSS2OUT_125
12:16:40.022 -> 41 VSS1_246 VSS2_0 VSS2OUT_123
12:16:41.052 -> 42 VSS1_246 VSS2_0 VSS2OUT_123
12:16:42.035 -> 43 VSS1_240 VSS2_0 VSS2OUT_120
12:16:43.017 -> 44 VSS1_242 VSS2_0 VSS2OUT_121
12:16:44.048 -> 45 VSS1_252 VSS2_0 VSS2OUT_127
12:16:45.031 -> 46 VSS1_242 VSS2_0 VSS2OUT_121
12:16:46.014 -> 47 VSS1_244 VSS2_0 VSS2OUT_123
mega 55 MPH pin3 Connected FAILED
12:08:32.249 -> 37 VSS1_167 VSS2_41 VSS2OUT_83
12:08:33.232 -> 38 VSS1_165 VSS2_42 VSS2OUT_83
12:08:34.215 -> 39 VSS1_165 VSS2_41 VSS2OUT_82
12:08:35.244 -> 40 VSS1_164 VSS2_41 VSS2OUT_83
12:08:36.227 -> 41 VSS1_170 VSS2_43 VSS2OUT_85
12:08:37.226 -> 42 VSS1_168 VSS2_42 VSS2OUT_84
12:08:38.208 -> 43 VSS1_164 VSS2_41 VSS2OUT_82
12:08:39.238 -> 44 VSS1_171 VSS2_43 VSS2OUT_86
12:08:40.221 -> 45 VSS1_163 VSS2_40 VSS2OUT_81
12:08:41.204 -> 46 VSS1_164 VSS2_41 VSS2OUT_82
12:08:42.233 -> 47 VSS1_164 VSS2_41 VSS2OUT_82
mega 55 mph pin 3 (vss2 in ) disconnected. FAILED
12:10:47.614 -> 23 VSS1_112 VSS2_292 VSS2OUT_56
12:10:48.597 -> 24 VSS1_144 VSS2_238 VSS2OUT_72
12:10:49.626 -> 25 VSS1_149 VSS2_148 VSS2OUT_74
12:10:50.609 -> 26 VSS1_159 VSS2_99 VSS2OUT_80
12:10:51.639 -> 27 VSS1_167 VSS2_110 VSS2OUT_83
12:10:52.622 -> 28 VSS1_168 VSS2_103 VSS2OUT_85
12:10:53.604 -> 29 VSS1_175 VSS2_108 VSS2OUT_87
12:10:54.634 -> 30 VSS1_168 VSS2_111 VSS2OUT_85
12:10:55.617 -> 31 VSS1_169 VSS2_102 VSS2OUT_84
12:10:56.600 -> 32 VSS1_167 VSS2_102 VSS2OUT_84
12:10:57.629 -> 33 VSS1_167 VSS2_98 VSS2OUT_84
12:10:58.614 -> 34 VSS1_168 VSS2_104 VSS2OUT_84
12:10:59.644 -> 35 VSS1_167 VSS2_94 VSS2OUT_83
12:11:00.643 -> 36 VSS1_161 VSS2_99 VSS2OUT_81
12:11:01.612 -> 37 VSS1_160 VSS2_98 VSS2OUT_80
12:11:02.642 -> 38 VSS1_92 VSS2_82 VSS2OUT_46