Problema porta seriale addizionale

ciao a tutti,

sto provando a usare un modulo GPS su un pro mini. Ho visto che è necessario includere la libreria AltSoftSerial.h. Questa libreria prevede (per il pro mini) l'uso del pin D9 come TX e il pin D8 come RX. In effetti, con questa configurazione, leggo perfettamente il modulo.
Io però uso già D8 e D9 per fare altre cose (ma nel test non è collegato nulla a quei pin). Ho pensato di editare la libreria e cambiare questi pin.

// Arduino Uno, Duemilanove, LilyPad, etc
//
#elif defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__)

 #define ALTSS_USE_TIMER1
 #define INPUT_CAPTURE_PIN		 8 // receive
 #define OUTPUT_COMPARE_A_PIN		 9 // transmit
 #define OUTPUT_COMPARE_B_PIN		10 // unusable PWM

Ho liberi i pin D3, D4, D5 e D6. Ho provato a permutarli ma non riesco a leggere il modulo.

Dove sbaglio?

grazie a quanti interverranno.

La libreria usa un timer a 16 bit, "timer1" su un pro mini, e questo ha delle conseguenze sui pin che puoi usare. Poiché il tuo Arduino ha solo un timer a 16 bit, non puoi cambiare quei pin.

Purtroppo NON puoi cambiarli a tuo piacimento perché essi sono legati a determinati interrupt e timers e sono quindi stati fissati dall'autore.

Guglielmo

P.S.: mi sono sovrapposto a J-M-L :grin:

due volte la stessa opinione significa conferma :slight_smile:

In effetti ho notato la libreria "AltSoftSerial_Timers.h".
Ho cercato una descrizione dei parametri (tipo TIMSK1, TCCR1A, TCCR1B, ICNC1, CS10) ma non ho trovato niente.

Quindi, a meno di ridisegnare tutto il circuito e lasciare D8 e D9 liberi, per far comunicare il modulo GPS, mi sa che devo rinunciare...

puoi usare un'altra libreria software seriale ...
quali sono i requisiti di comunicazione seriale oltre al GPS?

Su ATmega328P può usare la classica SoftwareSerial che, su tale MCU, NON ha limitazioni sui piedini. E' un po meno performante, va limitata per non avere errori a 9600 bps, ma per il resto va benone!

Guglielmo