Ulteriore aggiornamento.
vorrei sapere se è il seguente risultato rientra, secondo voi, nella normale condizione di funzionamento del mio mega2560, se sbaglio qualcosa a livello di codice o se devo cambiare board.
Ho ridotto il codice al minimo per provare la comunicazione seriale. Ho spento il dispositivo (inverter) quindi la mia board invia un comando via Serial1 e non riceve (ovviamente) risposta. Ecco lo sketch:
#define LENGHT 10
#define CS_485 53
int cmd[LENGHT] = {2,50,0,0,0,0,0,0,237,105};
unsigned long PREVIOUS = 0;
unsigned long INTERVALL = 20000; //20 sec
void setup(){
Serial.begin(9600);
Serial.println("Start!");
Serial1.begin(19200);
pinMode(CS_485,OUTPUT);
digitalWrite(CS_485,HIGH);
}
void loop(){
if ( (millis() - PREVIOUS) >= INTERVALL ){
PREVIOUS = millis();
txMode();
for(byte index = 0; index<LENGHT;index++){
Serial.print(cmd[index]);
Serial.print(" ");
Serial1.write(cmd[index]);
Serial1.flush();
}
Serial.println();
rxMode();
int k=0;
while(Serial1.available()){
Serial.print(Serial1.read());
Serial.print(" ");
}
Serial.println();
}
}
void txMode(){
digitalWrite(CS_485,HIGH);
delay(1);
}
void rxMode(){
digitalWrite(CS_485,LOW);
delay(1);
}
Dato che il dispositivo seriale con cui comunico è spento, qui dentro non dovrei mai entrarci perchè non ricevo risposta, giusto?
while(Serial1.available()){
Serial.print(Serial1.read());
Serial.print(" ");
}
Eppure questo è quello che ho sul serial monitor:
Start!
2 50 0 0 0 0 0 0 237 105
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2 50 0 0 0 0 0 0 237 105
4
2 50 0 0 0 0 0 0 237 105
0
2 50 0 0 0 0 0 0 237 105
2 50 0 0 0 0 0 0 237 105
2 50 0 0 0 0 0 0 237 105
2
2 50 0 0 0 0 0 0 237 105
4
2 50 0 0 0 0 0 0 237 105
2 50 0 0 0 0 0 0 237 105
0
2 50 0 0 0 0 0 0 237 105
0
2 50 0 0 0 0 0 0 237 105
2 50 0 0 0 0 0 0 237 105
192
2 50 0 0 0 0 0 0 237 105
2
2 50 0 0 0 0 0 0 237 105
2 50 0 0 0 0 0 0 237 105
0
2 50 0 0 0 0 0 0 237 105
6
2 50 0 0 0 0 0 0 237 105
0
2 50 0 0 0 0 0 0 237 105
2 50 0 0 0 0 0 0 237 105
6
2 50 0 0 0 0 0 0 237 105
224
2 50 0 0 0 0 0 0 237 105
1
2 50 0 0 0 0 0 0 237 105
2 50 0 0 0 0 0 0 237 105
0 0
2 50 0 0 0 0 0 0 237 105
4
2 50 0 0 0 0 0 0 237 105
1
Come vedete la prima volta ho un treno di 0, poi byte "a caso" a volte nulla....
Qualcuno mi sa dire da dove vengano sti byte e cosa diamine sta succedendo???? =(