- Messaggi: 63
- Ringraziamenti ricevuti 0
18f4550 e USART
9 Anni 6 Mesi fa #1
da velvettiere
18f4550 e USART è stato creato da velvettiere
Ciao a tutti,
sto passando ore d'inferno senza riuscire a far andare i comandi at della mia scheda gsm.
Questo sono i punti salienti del codice
#include <usart.h>
#pragma config FOSC = HSPLL_HS
#pragma config PLLDIV = 5
#pragma config CPUDIV = OSC1_PLL2
#pragma config USBDIV = 2
OpenUSART( USART_TX_INT_OFF & USART_RX_INT_OFF & USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_HIGH, 129);
Ho messo 129 perchè mi esce dal brgh1 e Fosc a 20 MHz ma secondo me non va bene prorpio questa temporizzazione,,,,non capisco se il mio pic va a 48 o 20 mhz
Ecco poi il codice dove invio i dati...
while (BusyUSART());
data = 0x41;
// Invio il dato A
WriteUSART(data);
while (BusyUSART());
data = 0x54;
// Invio il dato T
WriteUSART(data);
while (BusyUSART());
data = 0x44;
// Invio il dato D
WriteUSART(data);
while (BusyUSART());
data = 0x33;
// Invio il dato 3
WriteUSART(data);
while (BusyUSART());
data = 0x33;
// Invio il dato 3
WriteUSART(data);
while (BusyUSART());
data = 0x33;
// Invio il dato 3
WriteUSART(data);
while (BusyUSART());
data = 0x33;
// Invio il dato 3
WriteUSART(data);
while (BusyUSART());
data = 0x33;
// Invio il dato 3
WriteUSART(data);
while (BusyUSART());
data = 0x33;
// Invio il dato 3
WriteUSART(data);
while (BusyUSART());
data = 0x33;
// Invio il dato 3
WriteUSART(data);
while (BusyUSART());
data = 0x33;
// Invio il dato 3
WriteUSART(data);
while (BusyUSART());
data = 0x33;
// Invio il dato 3
WriteUSART(data);
while (BusyUSART());
data = 0x33;
// Invio il dato 3
WriteUSART(data);
while (BusyUSART());
data = 0x3B;
// Invio il dato ;
WriteUSART(data);
while (BusyUSART());
data = 0x0D;
// Invio il dato CR
WriteUSART(data);
while (BusyUSART());
la scheda non mi chiama....
Quale potrebbe essere il problema? Grazie.
sto passando ore d'inferno senza riuscire a far andare i comandi at della mia scheda gsm.
Questo sono i punti salienti del codice
#include <usart.h>
#pragma config FOSC = HSPLL_HS
#pragma config PLLDIV = 5
#pragma config CPUDIV = OSC1_PLL2
#pragma config USBDIV = 2
OpenUSART( USART_TX_INT_OFF & USART_RX_INT_OFF & USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_HIGH, 129);
Ho messo 129 perchè mi esce dal brgh1 e Fosc a 20 MHz ma secondo me non va bene prorpio questa temporizzazione,,,,non capisco se il mio pic va a 48 o 20 mhz
Ecco poi il codice dove invio i dati...
while (BusyUSART());
data = 0x41;
// Invio il dato A
WriteUSART(data);
while (BusyUSART());
data = 0x54;
// Invio il dato T
WriteUSART(data);
while (BusyUSART());
data = 0x44;
// Invio il dato D
WriteUSART(data);
while (BusyUSART());
data = 0x33;
// Invio il dato 3
WriteUSART(data);
while (BusyUSART());
data = 0x33;
// Invio il dato 3
WriteUSART(data);
while (BusyUSART());
data = 0x33;
// Invio il dato 3
WriteUSART(data);
while (BusyUSART());
data = 0x33;
// Invio il dato 3
WriteUSART(data);
while (BusyUSART());
data = 0x33;
// Invio il dato 3
WriteUSART(data);
while (BusyUSART());
data = 0x33;
// Invio il dato 3
WriteUSART(data);
while (BusyUSART());
data = 0x33;
// Invio il dato 3
WriteUSART(data);
while (BusyUSART());
data = 0x33;
// Invio il dato 3
WriteUSART(data);
while (BusyUSART());
data = 0x33;
// Invio il dato 3
WriteUSART(data);
while (BusyUSART());
data = 0x33;
// Invio il dato 3
WriteUSART(data);
while (BusyUSART());
data = 0x3B;
// Invio il dato ;
WriteUSART(data);
while (BusyUSART());
data = 0x0D;
// Invio il dato CR
WriteUSART(data);
while (BusyUSART());
la scheda non mi chiama....
Quale potrebbe essere il problema? Grazie.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- velvettiere
- Autore della discussione
- Senior Member
Riduci
Di più
9 Anni 6 Mesi fa #2
da alfa75
Risposta da alfa75 al topic 18f4550 e USART
ciao velvettiere
che valore hai sul quarzo esterno 20MHz?
che valore hai sul quarzo esterno 20MHz?
Si prega Accedi o Crea un account a partecipare alla conversazione.
- alfa75
- Platinum Member
Riduci
Di più
- Messaggi: 527
- Ringraziamenti ricevuti 86
9 Anni 6 Mesi fa #3
da velvettiere
Risposta da velvettiere al topic 18f4550 e USART
Sì proprio 20 MHZ. Perchè?? Grazie mille ciao ciao
Si prega Accedi o Crea un account a partecipare alla conversazione.
- velvettiere
- Autore della discussione
- Senior Member
Riduci
Di più
- Messaggi: 63
- Ringraziamenti ricevuti 0
9 Anni 6 Mesi fa #4
da alfa75
Risposta da alfa75 al topic 18f4550 e USART
te lo chiedo perchè vedo dai fuses che hai attivato il PLL dell'oscillatore quindi logicamente non andrà a 20MHz
Ringraziano per il messaggio: velvettiere
Si prega Accedi o Crea un account a partecipare alla conversazione.
- alfa75
- Platinum Member
Riduci
Di più
- Messaggi: 527
- Ringraziamenti ricevuti 86
9 Anni 6 Mesi fa #5
da velvettiere
Risposta da velvettiere al topic 18f4550 e USART
Il problema infatti è proprio che nello schema di temporizzazione del pic non c'è il modulo usart e non capisco da dove questo prende la temporizzazione. Ho necessità di lasciare attivo il PLL perché devo andare a 48 MHz per massimizzare la velocità dell'usb. Proprio per questo ho provato a calcolarmi e ad usare anche il valore relativo a quella frequenza che mi viene 77 ma non funziona uguale....non vorrei che ci siamo più errori in contemporanea compresa l'inizializzazione....Grazie dell'aiuto
Si prega Accedi o Crea un account a partecipare alla conversazione.
- velvettiere
- Autore della discussione
- Senior Member
Riduci
Di più
- Messaggi: 63
- Ringraziamenti ricevuti 0
Moderatori: Mauro Laurenti, Pinna, StefA, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.