LCD_write_message("$PING 200");

8 Anni 6 Mesi fa #16 da alfa75
Risposta da alfa75 al topic LCD_write_message("$PING 200");
il pin di trasmissione UART RC6 deve essere un output
quindi prova a cambiare RC6 da 1 a 0 è dovresti vedere il led lampeggiare

Ciao
Andrea

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

  • alfa75
  • Avatar di alfa75
  • Platinum Member
  • Platinum Member
Di più
8 Anni 6 Mesi fa #17 da Lello Guidi
Risposta da Lello Guidi al topic LCD_write_message("$PING 200");
Ho provato, ho anche aggiunto nella configurazione iniziale il comando "LATCbits.LATC7 = 1;" ma l'Usart non invia i dati in uscita.
Devo verificare con un oscilloscopio se dal Tx(Rc6) esce qualche cosa.
Ho scritto un messaggio nell'argomento Progetti, sperando che Technomaker mi risponda in merito al problema.
Saluti

Lello

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

  • Lello Guidi
  • Avatar di Lello Guidi
  • Platinum Member
  • Platinum Member
Di più
8 Anni 5 Mesi fa #18 da Lello Guidi
Risposta da Lello Guidi al topic LCD_write_message("$PING 200");
Questo e' quello che vedo con l'oscilloscopio, quindi la Usart del pic invia correttamente i dati.
Saluti

Lello
Allegati:

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

  • Lello Guidi
  • Avatar di Lello Guidi
  • Platinum Member
  • Platinum Member
Di più
8 Anni 5 Mesi fa - 8 Anni 5 Mesi fa #19 da technomaker
Risposta da technomaker al topic LCD_write_message("$PING 200");
Ciao :)
sto facendo un progetto usando PIC18F46K22 e miuPanel.
Ricordo che se non si mette un ritardo (diciamo 10ms) dopo aver attivato la seriale, i primi caratteri sono incomprensibili.
Inoltre ricordo di inserire un ritardo di 5 secondi (abbondiamo per togliere il dubbio che sia quello) tra l'accensione del vostro PIC e l'invio di messaggi al modulo wi-fi, in modo di dare al modulo wi-fi il tempo di eseguire il boot.

Vi passo la funzione che ho fatto per inizializzare la periferica (uso oscillatore interno a 16M con PLL attivato, per avere una fosc di 64Mhz)

void UART_Open (void){

//Impostazione EUSART (modo asincrono)

BAUDCON1bits.CKTXP =0; // Transmit Polarity Select bit (1 = Idle state for TX is LOW)
BAUDCON1bits.DTRXP=0; // Receive Polarity Select bit
BAUDCON1bits.BRG16 =1; // 16-bit Baud Rate Generator bit (1 = 16bit , 0= 8bit )
TXSTA1bits.TX9 = 0; // 0 = Selects 8-bit transmission, nessun bit di parità
TXSTA1bits.SYNC =0; // 0 = Asynchronous mode
TXSTA1bits.BRGH = 1; // 1= alta velocità

SPBRG1 = 0x15; // Baud rate 57.600 (valore tabulato per Fosc=64,SYNC=0, BRG16=1, BRGH=1)
SPBRGH1 = 0x01;

PIE1bits.TX1IE = 0; // Abilitazione interrupt EUSART1 in trasmissione (0=disabilitato, 1=abilitato)
IPR1bits.TX1IP = 0; // Priorità interrupt EUSART1 in trasmissione (0= BASSA, 1= ALTA)

PIE1bits.RC1IE = 1; // Abilitazione interrupt EUSART1 in ricezione (0=disabilitato, 1=abilitato)
IPR1bits.RC1IP = 0; // Priorità interrupt EUSART1 in ricezione (0= BASSA, 1= ALTA)

RCSTA1bits.SPEN = 1; // 1= Serial port enabled (configures RXx/DTx and TXx/CKx pins as serial port pins)
TXSTA1bits.TXEN = 1; // TX enabled
RCSTA1bits.CREN =1; // RX enabled

delay_ms(5); // serve un delay di almeno 1 ms altrimenti i primi caratteri sono incomprensibili

}
Ultima Modifica 8 Anni 5 Mesi fa da technomaker.
Ringraziano per il messaggio: Lello Guidi

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

  • technomaker
  • New Member
  • New Member
Di più
8 Anni 5 Mesi fa #20 da Lello Guidi
Risposta da Lello Guidi al topic LCD_write_message("$PING 200");
Grazie per la risposta.
Io ho a disposizione il 16F877A e il 18F4550.
Non conosco il PIC18F46K22 ma scarico il datasheet e gli do una occhiata.
Dopo la lettura del datasheet vedo di adattare la sua funzione per poterla provare con i miei pic.
Saluti

Lello

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

  • Lello Guidi
  • Avatar di Lello Guidi
  • Platinum Member
  • Platinum Member
Di più
Moderatori: Mauro Laurenti

Registrati al sito

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

Registrati al sito LaurTec.

Login