Comunicazione in seriale, mediante tranceiver max485

  • FABRIZIO
  • Autore della discussione
  • Elit Utente
  • Elit Utente
Di più
1 Mese 2 Giorni fa - 1 Mese 2 Giorni fa #1 da FABRIZIO
Buongiorno a tutti, ho creato 2 schede, la prima gestita da un PIC16F18877 e la seconda da un PIC16F690; la prima scheda è la centralina di un antifurto e la seconda gestisce una tastiera 4x4 a matrice che serve a gestire l' antifurto; il mio problema è che non riesco a far comunicare totalmente le due schede, ma in maniera parziale perché il PIC16F690 trasmette e il PIC16F18877 riceve, ma non riesco a fare il contrario, cioè far ricevere quello che il PIC16F1877 trasmette; secondo voi i baud sono corretti visto che almeno in un senso la comunicazione funziona? Nel PIC16F18877 sono settati così:BRGH = 1; BRG16 = 0; //Settaggio per velocit� di comunicazione (baud rate) 9600    SPBRG = 207; con oscillatore interno a 32 MHz

Mentre che nel PIC16F690 sono settati così:  comunicazione a 9600       BRGH = 1; SPBRG = 51 BRG16=0;
Oscillatore interno a 8MH
Ultima Modifica 1 Mese 2 Giorni fa da FABRIZIO.

Si prega Accesso o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Moderatore
  • Moderatore
Di più
2 Settimane 6 Giorni fa #2 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Comunicazione in seriale, mediante tranceiver max485
Salve Fabrizio,

i due PIC appartengono a famiglie diverse, e le UART sono un poco diverse. Mi inviii la configurazione che usi per uno e l'altro PIC?

Hai errori di compilazione?

In generale, per limitare errori, è bene che in progetti fatti in casa si faccia uso sempre dello stesso PIC o famiglia.
In questo modo puoi usare molto del condiche che scrivi, per ogni progetto. 

Saluti,

Mauro Laurenti

 

Si prega Accesso o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Moderatore
  • Moderatore
Di più
2 Settimane 6 Giorni fa #3 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Comunicazione in seriale, mediante tranceiver max485
Inoltre, ricordati sempre di cambiare la direzione scrittura e lettura nel bus RS485, e di attivare il driver. 
Dopo il cambio, metti 1ms di attesa, prima di inviare i dati. 
Lo slave può essere sempre in ricezione. 
Lo slave se è sempre in ricezione, vuol dire che riceve dati anche quando trasmette, per cui li devi gestire.
Se non lo fai il modulo UART si blocca a causa di errori (buffer overflow).

Saluti,

Mauro Laurenti 

Si prega Accesso o Crea un account a partecipare alla conversazione.

Moderatori: Mauro LaurentiStefAMatteo Garia

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.