E' da qualche settimana che tento di far funzionare l'EUSART di un PIC18F46K22 http://ww1.microchip.com/downloads/en/DeviceDoc/41412F.pdf cosa che con PIERIN mi è sempre riuscita.
Ho scritto tutto il codice in un unica funzione per farlo leggere più facilmente.
- Codice: Seleziona tutto
void main(void)
{
// CONFIGURAZIONE OSCILLATORE
OSCCON = 0b01110000; // bit7: device enters SLEEP on sleep instruction[0]
// bit6-4: HFINTOSC 16MHz [111]
// bit3: status bit [0]
// bit2: status bit [0]
// bit1-0: clock defined by CONFIG bits [00]
OSCTUNE = 0b11000000; // bit7: device clock derived from the MFINTOSC or HFINTOSC source
// bit6: PLL enabled [1]
// bit5-0: oscillator tuning [000000]
Delay1KTCYx(10);
char ch;
UART1MD = 0;
LATA = 0x00;
TRISA = 0xFF;
LATB = 0x00;
TRISB = 0xFF;
//RC6 = TX1 RC7 = RX1
ANSELC = 0x00; //datasheet pag 296
//the analog I/O function must be disabled by clearing the corrisponding ANSEL bit
LATC = 0x00;
TRISC = 0xFF; //datasheet pag 268 RX1 e TX1 set 1
LATD = 0x00;
TRISD = 0x00; //USCITE
LATE = 0x00;
TRISE = 0xFF;
RC1IE = 1;
RC1IP = 1;
GIE = 1;
PEIE = 1;
// trasmissione a 19200 8 bit 1 di stop
SPBRG1 = 0b01000000; //parte bassa freq
SPBRGH1 = 0b00000011; //parte alta ferq
BAUDCON1bits.BRG16 = 1;
TXSTA1bits.BRGH = 1;
TXSTA1bits.SYNC = 0;
RCSTA1bits.SPEN = 1;
TXSTA1bits.TXEN = 1;
RCSTA1bits.CREN = 1;
RC1IE=1;
RC1IP=1;
GIE=1;
PEIE=1;
//MESSAGGIO 123
while(!PIR1bits.TX1IF);
TXREG1 = 49;
while(!PIR1bits.TX1IF);
TXREG1 = 50;
while(!PIR1bits.TX1IF);
TXREG1 = 51;
//CICLO INFINITO
while(1)
{
while(!PIR1bits.RC1IF);
ch = RCREG1;
while(!PIR1bits.TX1IF);
TXREG1 = ch;
if (ch == 50) LATD = 0xFF;
}
}
Ho collegato il PIC ad un convertitore seriale/USB e uso un "Hiperterminal" per comunicare, ma purtroppo c'è qualcosa che non va.
In pratica quando attivo il PIC dovrei ricevere il messaggio 123, ma ricevo solo 13, ed il ciclo infinito non finziona.
Credo sia un problema di interrupt visto che con l'ausilio di qualche led mi sono accorto che il ciclo infinito si blocca all'istruzione while(!PIR1bits.RC1IF);.
Avete consigli? Grazie ciao Ivo.

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)


