problema con SoftwareSerial e NewSoftSerial

ok questo è il boards.txt dei tiny, l'avevo modificato solo per i tiny84, perchè io ho solo questi...
io uso gli 84 a 8MHz... ma a te te lo compila senza errori?

boards.txt (14.2 KB)

Il file mi pare a posto.

A me compila senza errori. Non ho provato l'upload perché non ho breadboard libere al momento, però non mi ha dato errori, su 2 PC differenti.

comunque non è un problema di upload, è di compilazione, quindi se a te lo compila dovrebbe compilarlo anche a me... è un problema mio... cosa può significare quel errore?
ricontrollo tutto anche se non so cosa ci possa essere di sbagliato visto mi dici che il file boards è apposto...

E' un problema sicuramente sulla NewSoftSerial, dato che se commenti la riga che la richiama non ti da errore.
Ma tu che versione di NewSoftSerial usi?
Io ho la 1.0c presa direttamente da qui:
http://arduiniana.org/libraries/NewSoftSerial/

eh l'ultima penso l'ho scaricata anch'io da quel sito qualche giorno fa... e poi l'ho modificato come suggerito dalla tua guida

Ovviamente stiamo parlando di core Tiny, vero?
Non hai il core di Saporetti ancora installato sul PC, vero?

PS:
ho allegato la mia copia della NewSoftSerial. Prova a sostituirla alla tua.

NewSoftSerial.tar.gz (11.8 KB)

come faccio a vedere che core ho? :~
ho provato a sostituire la libreria ma mi da lo stesso errore... però ho notato una cosa strana: se provo a commentare tutta la parte dentro l'else non mi da più errore quindi non è un problema della NewSoftSerial...

non capisco perchè se tolgo pezzi di programma me lo compila :~

In quell'errore non c'è alcun riferimento allo sketch, ma solo alle librerie avr-libc questo farebbe pensare ad un bug della var-libc, ma non essendo li al posto tuo è difficile stostenere questa tesi.

In pratica far riferimento ad un troncamento che si verifica quando un tipo viene convertito in un tipo di dimendsioni minori, es un int in char. Poi dice che "exit" è stato definito. Io non vorrei che un puntatore di quella matrice punti a zonzo.

Non mi viene altro in mente.

ok grazie ora controllo il codice :wink:
ma come si spiega che Leo riesce a compilarlo? e che se imposto la board come mega2560 me lo compila?

ok grazie ora controllo il codice smiley-wink
ma come si spiega che Leo riesce a compilarlo? e che se imposto la board come mega2560 me lo compila?

Ma il core tiny è compatibile con la mega?
Io penso proprio di no.

Comunque visto che nel codice non c'è nulla di dipendente dal micro ti compila, diversamente non compilerebbe.

er_like_no_other:
scusa Leo, tu che predichi il vangelo degli ATtiny, sai dirmi perchè mi da questo errore compilando un programma per i tiny con la NewSoftSerial?

c:/arduino-0022/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr25/crttn84.o:(.init9+0x2): relocation truncated to fit: R_AVR_13_PCREL against symbol `exit' defined in .fini9 section in 

c:/arduino-0022/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/avr25\libgcc.a(_exit.o)



se imposto come board il mega2560 non mi da più errore quindi penso sia un problema riguardante i tiny...

Come vedi il file crttn84.o è un file oggetto proveniente dalla libreria avr-libc, avr25 è la famiglia a cui appartiene il micro scelto. Quindi Attiny84 (crttn84) appartenente alla famiglia avr25.

È evidente che c'è una non compatibilità tra la tua avr-libc ed il core che stai usando, almeno da quello che si intuisce.

Ciao.

si intendevo dire che con il mega non mi da problemi e che quindi non è un problema del codice... quindi dovrebbe essere un problema del core che uso...
grazie :wink:

la cosa che mi lascia più perplesso è che se tolgo/commento alcuni pezzi di programma me lo compila senza errori :~

come faccio a vedere che core ho? smiley-confuse
ho provato a sostituire la libreria ma mi da lo stesso errore... però ho notato una cosa strana: se provo a commentare tutta la parte dentro l'else non mi da più errore quindi non è un problema della NewSoftSerial...

Io a leo ho posto la stessa domanda, ma non ho idea di che fine abbia fatto il post.

Eccolo trovato http://arduino.cc/forum/index.php/topic,79835.0.html

E leo mi ha dato questo link
http://code.google.com/p/arduino-tiny/

Questo è quello che leo NON chiama il saporetti, quindi dovresti avere questo.

Ciao.

er_like_no_other:
scusa Leo, tu che predichi il vangelo degli ATtiny, sai dirmi perchè mi da questo errore compilando un programma per i tiny con la NewSoftSerial?

c:/arduino-0022/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/lib/avr25/crttn84.o:(.init9+0x2): relocation truncated to fit: R_AVR_13_PCREL against symbol `exit' defined in .fini9 section in 

c:/arduino-0022/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/avr25\libgcc.a(_exit.o)



se imposto come board il mega2560 non mi da più errore quindi penso sia un problema riguardante i tiny...

IHMO c'è una funzione definita tramite define (exit) che ha lo stesso nome nei due file, qundi cozzano tra loro.

eppure su internet, cercando l'errore ho trovato:

Basically, the problem stems from the fact that the linker allows all devices in only the avr2 and avr4 architectures to wrap around the offsets. Devices in the avr25 architecture should be allowed to do that too (as avr25 is the same as avr2, plus 2 extra instructions), but for some reason it looks like the avr25 was forgotten when it comes to this reloc. It just so happens that the ATtiny85 belongs to the avr25 architecture. My work colleague mentions that he doesn't have this problem when he uses an ATmega8 (with the same amount of code space). And that is because the ATmega8 belongs to the avr4 architecture.

io non so che core uso :cold_sweat: so solo che ho seguito la guida di Leo e ho scaricato tutto da li, poi ho modificato il file boards e basta... fino ad adesso è sempre andato tutto, la NewSoftSerial da sola non mi ha mai dato problemi di compilazione e neanche il codice senza la NewSoftSerial, adesso mettendo tutto insieme mi da errore...

il post di Lesto non l'ho capito bene ma non sembra che spieghi il motivo per cui a Leo va e a me no :frowning:

er_like_no_other:
io non so che core uso :cold_sweat: so solo che ho seguito la guida di Leo e ho scaricato tutto da li, poi ho modificato il file boards e basta... fino ad adesso è sempre andato tutto, la NewSoftSerial da sola non mi ha mai dato problemi di compilazione e neanche il codice senza la NewSoftSerial, adesso mettendo tutto insieme mi da errore...

il post di Lesto non l'ho capito bene ma non sembra che spieghi il motivo per cui a Leo va e a me no :frowning:

Fai una cosa di questo tipo...
salvati tutti i dati che ti interessano... cancella la cartella contenente arduino e i cores, riscarica e riassembla entrambi :smiley:

ratto93:
salvati tutti i dati che ti interessano... cancella la cartella contenente arduino e i cores, riscarica e riassembla entrambi :smiley:

si stavo prorpio pensando di farlo ahaha
magari lo faccio su un altro computer...

ti spego veloce veloce il motivo...
tu che versione del compilatore gcc hai? e invece leo? :grin:

mmmm io ho la versione 0022 dell'IDE non so del "gcc"...

mmmm io ho la versione 0022 dell'IDE non so del "gcc"...

Lesto di voleva fare notare che non è detto che leo abbia la tua stessa versione della toolchain.
La toolchain è un insieme di strumenti usati dall'ide arduino, tra questi ci sono il compilatore avr-gcc e librerie avr-libc.

In più leo usa un sistema opertativo GNU/Linux, tu Widnowss.

Comunque tu hai sul tuo PC la versione 4.3.2 di avr-gcc, mentre quasi sicuramente leo ha la 4.6.x.

Ecco spiegato l'arcano. Comunque questo core tiny ha altri problemini di incompatibilità, che fino ad ora non sono usciti fuori.

Ciao.