- Messaggi: 131
- Ringraziamenti ricevuti 0
ricevere dati via USART
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...
Si prega Accedi o Crea un account a partecipare alla conversazione.
- luongo
- Autore della discussione
- Premium Member
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
Si prega Accedi o Crea un account a partecipare alla conversazione.
- gcupini
- Visitatori
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
- Autore della discussione
- Premium Member
- Messaggi: 131
- Ringraziamenti ricevuti 0
la seconda che hai detto.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- gcupini
- Visitatori
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
- Autore della discussione
- Premium Member
- Messaggi: 131
- Ringraziamenti ricevuti 0
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.