svuotare buffer usart picc

10 Anni 5 Mesi fa #1 da marcop20
svuotare buffer usart picc è stato creato da marcop20
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

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

  • marcop20
  • Avatar di marcop20
  • New Member
  • New Member
Di più
10 Anni 5 Mesi fa - 10 Anni 5 Mesi fa #2 da StefA
Risposta da StefA al topic svuotare buffer usart picc
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 10 Anni 5 Mesi fa da StefA.

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

  • StefA
  • Avatar di StefA
  • Moderator
  • Moderator
Di più
10 Anni 5 Mesi fa #3 da marcop20
Risposta da marcop20 al topic svuotare buffer usart picc
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

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

  • marcop20
  • Avatar di marcop20
  • New Member
  • New Member
Di più
10 Anni 5 Mesi fa #4 da StefA
Risposta da StefA al topic svuotare buffer usart picc

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.]

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

  • StefA
  • Avatar di StefA
  • Moderator
  • Moderator
Di più
10 Anni 5 Mesi fa #5 da Mauro Laurenti
Risposta da Mauro Laurenti al topic svuotare buffer usart picc
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

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

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
Moderatori: Mauro LaurentiMatteo Garia

Registrati al sito

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

Registrati al sito LaurTec.

Login