Pages: [1]   Go Down
Author Topic: Errore conversione  (Read 271 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salve, mentre stavo effetuando la conversione di uno sketch da arduino due ad arduino mega mi sono imbattuto in questo strano problema:

Code:
#include <Arduino.h>
#include <SPI.h>

void setup() {
  Serial.begin(9600);
  Serial.println(atoi( "123456" ), DEC);
}

void loop()

}

Su arduino mega il risultato è -7616 mentre su arduino due il risultato è corretto ed è 123456. Eseguendo un paio di prove ho scoperto che cambiando la stringa Serial.println(atoi( "123456" ), DEC); con  Serial.println(atoi( "12345" ), DEC); il risultato in entrambe le board si presenta corretto 12345. Quale puo essere il problema? grazie in anticipo smiley-grin
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 327
Posts: 22640
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

atoi converte una stringa in intero, però sulla MEGA un intero è lungo al max 16 bit, ossia da -32768 a +32767 oppure da 0 a 65535 in caso di interi senza segno.
Sulla DUE gli interi (probabilmente) sono a 32 bit per cui il valore è correttamente gestito.
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie smiley-cry non avevo considerato questo aspetto smiley-sleep
Logged

Pages: [1]   Go Up
Jump to: