Progetti

   

Tutorial

   

Servizi

   

Sponsor  

   
Benvenuto, Ospite
Nome utente: Password: Ricordami
  • Pagina:
  • 1
  • 2

ARGOMENTO: svuotare buffer usart picc

svuotare buffer usart picc 8 Anni 1 Settimana fa #1

  • marcop20
  • Avatar di marcop20
  • Offline
  • Fresh Boarder
  • Messaggi: 4
  • Karma: 0
Appena iscritto e già qui a chiedere aiuto..... B)

In pratica ho la necessità di ricevere intere stringhe dalla porta RS232 del pc, tale stringa ha dimensioni variabili ma sempre terminanti con lo stesso codice ascii.

Il problema si verifica quando devo ricevere stringhe contenenti più di tre bit in quanto non riesco a svuotare RCREG.

Ve ne sarei immensamente grato se qualcuno potesse fare un esempio di codice.....
Ormai sono settimane che non dormo più in cerca di una soluzione.
Ah... uso hi-tech picc con mplab e freedom2 con le relative librerie usart
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

svuotare buffer usart picc 8 Anni 1 Settimana fa #2

  • StefA
  • Avatar di StefA
  • Offline
  • Moderatore
  • Messaggi: 1222
  • Ringraziamenti ricevuti 104
  • Karma: 14
la seriale trasmette un byte (8bit) [ad esempio un char] alla volta e mi pare abbia un buffer da 2 byte, se arrivano più di 2 byte e non hai svuotato dovrebbe perdersi il resto, almeno mi sembra funzionasse così.

Se metti un interrupt sulla seriale, quando ricevi un dato scatta e lo legge subito, se ancora perdi dati abbassa la velocità. Con le librerie di Mauro per C18 e XC8 funziona senza problemi e con baudrate alto.

Ste


ops..mi sono appena accorto che sei tra i micro a 16bit, io parlavo del "classico" 18F4550, non so se per altri pic è diverso, cosa stai usando sulla freedom II?
..avevano magari fatto lo sgambetto al ka, ma il sangue restava sempre più denso dell'acqua.. [cit.]
Ultima modifica: 8 Anni 1 Settimana fa da StefA.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

svuotare buffer usart picc 8 Anni 1 Settimana fa #3

  • marcop20
  • Avatar di marcop20
  • Offline
  • Fresh Boarder
  • Messaggi: 4
  • Karma: 0
Si, stef, uso freedom2 e 16f877.
Il funzionamento che descrivi è corretto, il problema e che ho provato a scrivere il codice in tutti i modi possibili (almeno credo) ma avendo sempre lo stesso pessimo risultato.
Comunque vada riesco solo a ricevere max 3 bit per volta.
Il micro invece ha solo 2bit di buffer, per cui dovrei realizzarne uno circolare, ma anche provando con sorgenti trovati in rete e riadattati al caso il problema persiste

La comunicazione avviene a 9600 baud 8N1
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

svuotare buffer usart picc 8 Anni 1 Settimana fa #4

  • StefA
  • Avatar di StefA
  • Offline
  • Moderatore
  • Messaggi: 1222
  • Ringraziamenti ricevuti 104
  • Karma: 14
Comunque vada riesco solo a ricevere max 3 bit per volta.
ricevi proprio solo 3 bit o intendi 3 byte?


Se guardi sul C18 step by step di Mauro a pag 233 inizia a spiegare l'USART, a pag 246 c'è l'esempio dell'USART con interrupt, basta che quando ricevi un dato lo metti dentro un array precedentemente definito, ogni volta in una posizione successiva.. ad esempio..
unsigned char datiRicevuti[10] e ti salva tutti i dati..

Non so se riesco a spiegarmi.
Con il 18F4550 funziona..

Ste
..avevano magari fatto lo sgambetto al ka, ma il sangue restava sempre più denso dell'acqua.. [cit.]
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

svuotare buffer usart picc 8 Anni 1 Settimana fa #5

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Offline
  • Moderatore
  • Messaggi: 4677
  • Ringraziamenti ricevuti 561
  • Karma: 52
Ciao Marco,

In ricezione e´ meglio usare le interruzioni.
Se il buffer in ricezione va in overflow hai un errore e la UART non funziona piu´ fino a quando non resetti l´errore.

COn le interruzioni puoi andare anche a 115200 bits/s .
...ma per ora rimani sui 9600bits/s.

COme esempio di ricezioni di byte multipli puoi vedere il progetto Domotino.
I PIC18 hanno due livelli di interruzioni ma per il resto non cambia molto se confrontati con i PIC18 (almeno per questa applicazione).

Saluti,

Mauro

Saluti,

Mauro
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
  • Pagina:
  • 1
  • 2
Moderatori: Mauro Laurenti, Matteo Garia
Powered by Forum Kunena
   
© LaurTec 2006-2015