--- layout: post status: publish published: true title: Arduino 1.0 rc2 (+ patch) author: display_name: Siv login: admin email: alessandro.sivieri@gmail.com url: https://launchpad.net/~scattino author_login: admin author_email: alessandro.sivieri@gmail.com author_url: https://launchpad.net/~scattino excerpt: 'E’ uscita da qualche settimana (un paio se non ho visto male) la seconda release candidate di Arduino 1.0 (scaricabile da qui), ma per poter utilizzare il layer di rete su Ubuntu 11.10 รจ necessario patchare il file w5100.h, che si trova sotto /libraries/Ethernet/utility; alla riga 271 va modificata la seguente define: static uint16_t read##name(SOCKET [...]' wordpress_id: 2805 wordpress_url: http://sivieri.wordpress.com/?p=2011 date: '2011-11-21 22:02:53 +0000' date_gmt: '2011-11-21 21:02:53 +0000' categories: - PlanetPOuL tags: [] comments: [] ---

E’ uscita da qualche settimana (un paio se non ho visto male) la seconda release candidate di Arduino 1.0 (scaricabile da qui), ma per poter utilizzare il layer di rete su Ubuntu 11.10 è necessario patchare il file w5100.h, che si trova sotto /libraries/Ethernet/utility; alla riga 271 va modificata la seguente define:

static uint16_t read##name(SOCKET _s) { \
uint16_t res = readSn(_s, address); \
res = (res << 8) + readSn(_s, address + 1); \
return res; \
}

in questo modo:

static uint16_t read##name(SOCKET _s) { \
uint16_t res = readSn(_s, address); \
uint16_t res2 = readSn(_s, address+1); \
res = (res << 8); \
res2 = res2 & 0xFF; \
res = res | res2; \
return res; \
}

GCC-AVR in Oneiric, infatti, per qualche motivo (che non sto ad indagare) non digerisce l’altra definizione, e rende inutilizzabili i socket aperti (esperimenti con Wireshark infatti mostrano pacchetti malformati). Questa modifica peraltro vale anche per le versioni precedenti di Arduino, eccetto quelle pacchettizzate, che già includono la patch (ma chi usa Arduino pacchettizzato…).