Strano problema con UART su PIC18F4550

4 Anni 1 Mese fa #1 da Nutshell
Strano problema con UART su PIC18F4550 è stato creato da Nutshell
Ciao a tutti!

La quarantena mi ha dato un po' di tempo per dedicarmi a qualche progetto lasciato in un angolo.
In questo caso ho riesumato un vecchio progetto che faceva da "filtro uart" scritto per C18. Adesso ho aggiunto una porta USB per fare anche da bridge e ho convertito tutto per XC8.
Ebbene.. la comunicazione via usb sta funzionando regolarmente, mentre quando tento di inviare qualche byte sulla uart, il programma si pianta.
La funzione per scrivere sulla uart è banalissima:

void WriteUSART(unsigned char byte)
{
while(!TXIF)
continue;
TXREG = byte;
}

Il programma si pianta nel ciclo while. Ho provato a commentare solo per un test il ciclo while e in questo caso ovviamente non si blocca il programma, ma comunque non viene trasmesso nulla.

Starò sbagliando qualcosa nella configurazione della porta?

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

  • Nutshell
  • Avatar di Nutshell
  • Premium Member
  • Premium Member
Di più
4 Anni 1 Mese fa #2 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Strano problema con UART su PIC18F4550
Salve,

il problema è proprio il while, che genera un blocco.

Lo stack USB Microchip, è una state machine che cambia stato con gli eventi.
Creando una funzione bloccante, impedisci il cambio di stato.
Quando arriva un nuovo pacchetto dati dall'host, se lo stato del device non è cambiato hai degli errori.

Devi controllare il flag ma non creare un blocco della state machine.

Come risolvere il problema lo trovi nel seguente tutorial.

Utilizzare la libreria USB Microchip

Saluti,

Mauro
Ringraziano per il messaggio: Nutshell

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

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
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