ricevere dati via USART

11 Anni 9 Mesi fa - 11 Anni 9 Mesi fa #1 da luongo
ricevere dati via USART è stato creato da luongo
buongiorno a lor signori! :cheer: comunque avevo iniziato un topic sul mamdare dati via USART la fase di trasmissione dati alla fine non è stata di una complessitá enorme ma per quanto riguarda la ricezione? Visto che è un sistema asincrono mi puó arrivare qualunque cosa! Quindi susate cosa devo fare appena acquisito il primo byte devo controllare se corrisponde allo start byte e poi quindi continuare a controllare gli altri byte? Personalmente avevo pensato di ricevere il primo dato se era valido ricevere i tre seguenti e controllarli con delle switch/case e se uno solo differiva dai dati "mascherati" ricercare lo start byte secondo voi puó andare?

P.S.: ecco il link sulla trasmissione dei dati
www.laurtec.it/forum/17-programmazione-m...dare-bytes-via-usart

P.P.S.: ne approfitto per fare un'altra domanda in caso di caso non contemplato intendo ricominciare dccapo quindi ricpminciare la ricezione e quanto esposto sopra è ppssibile mettere come prima linea di codice una riga asm con una label e una nop e nel cao default mettere una linea asm con una goto alla label?

*scusate eventuali errori e virgole latitanti ma con sto tablet le correzioni sono ardue...
Ultima Modifica 11 Anni 9 Mesi fa da luongo.

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

  • luongo
  • Avatar di luongo
  • Premium Member
  • Premium Member
Di più
11 Anni 9 Mesi fa - 11 Anni 9 Mesi fa #2 da gcupini
Risposta da gcupini al topic Re: ricevere dati via USART
Ciao

In ricezione non esiste uno start Byte ma solo uno start Bit. Quindi tu ti devi limitare a ricevere il byte o i bytes che arrivano in sequenza.

Non è molto chiaro come intendi fare la ricezione, se usi nel firmware (nel main) una istruzione del tipo CH=getCh(); che rimane in attessa dell'arrivo del carattere. Oppure se il tuo firmware "lavora" e fai uso di interrupt su ricezione di un carattere.
In ogni caso l'evetuale selezione dei caratteri in arrivo la fai dopo aver ricevito ciascun carattere (o byte).

Sull'ultimo PPS non so se capisco la tua richiesta (l'accenno a label-asm non mi sono chiari). Se intendi dire che in caso di ricezione di dati errati vuoi ricevere una nuova sequenza di dati ti rispondo in questo modo:
(1)Il PIC1 è in attesa di ricevere dati
(2) Il PIC2 li trasmette
(3) Se per PIC1 la ricezione è corretta Fine.
Altrimenti PIC1 invia a PIC2 un comando di Ripetizione della trasmissione, e ripartri da (1)

Buon lavoro
Ultima Modifica 11 Anni 9 Mesi fa da gcupini.

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

  • gcupini
  • Visitatori
  • Visitatori
11 Anni 9 Mesi fa #3 da luongo
Risposta da luongo al topic Re: ricevere dati via USART

gcupini ha scritto: Ciao

In ricezione non esiste uno start Byte ma solo uno start Bit. Quindi tu ti devi limitare a ricevere il byte o i bytes che arrivano in sequenza.

Non è molto chiaro come intendi fare la ricezione, se usi nel firmware (nel main) una istruzione del tipo CH=getCh(); che rimane in attessa dell'arrivo del carattere. Oppure se il tuo firmware "lavora" e fai uso di interrupt su ricezione di un carattere.
In ogni caso l'evetuale selezione dei caratteri in arrivo la fai dopo aver ricevito ciascun carattere (o byte).

Sull'ultimo PPS non so se capisco la tua richiesta (l'accenno a label-asm non mi sono chiari). Se intendi dire che in caso di ricezione di dati errati vuoi ricevere una nuova sequenza di dati ti rispondo in questo modo:
(1)Il PIC1 è in attesa di ricevere dati
(2) Il PIC2 li trasmette
(3) Se per PIC1 la ricezione è corretta Fine.
Altrimenti PIC1 invia a PIC2 un comando di Ripetizione della trasmissione, e ripartri da (1)

Buon lavoro


La domanda principe è: bit vengono ricevuti a casaccio o il pic è in grado di scandire i vari bytes cosí come glieli mando io?

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

  • luongo
  • Avatar di luongo
  • Premium Member
  • Premium Member
Di più
11 Anni 9 Mesi fa #4 da gcupini
Risposta da gcupini al topic Re: ricevere dati via USART
ciao,

la seconda che hai detto.

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

  • gcupini
  • Visitatori
  • Visitatori
11 Anni 9 Mesi fa #5 da luongo
Risposta da luongo al topic Re: ricevere dati via USART

gcupini ha scritto: ciao,

la seconda che hai detto.


ergo non sia necessario mettere uno start byte (0b00000001) per convalidare l'inizio della ricezione vera e propria? di conseguenza a quanto detto basta fare dei controlli su ogni byte e agire di conseguenza.

P.S.: in un case posso metterci un'altro switch case?

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

  • luongo
  • Avatar di luongo
  • Premium Member
  • Premium Member
Di più
Moderatori: Mauro LaurentiPinnaStefAMatteo Garia

Registrati al sito

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

Registrati al sito LaurTec.

Login