Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

PIERIN e MM5450

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[1] PIERIN e MM5450

Messaggioda Foto Utentespivo » 5 ott 2014, 13:33

Ciao a tutti, vorrei riuscire a collegrate Pierin con un Driver led MM5450, prendento spunto da questo articolo http://www.electroyou.it/galaxi93/wiki/impariamo-con-il-pierin-il-bus-spi di Galaxi93 e scopiazzando un po' in giro sorno riuscito a fare questo:


Codice: Seleziona tutto
void ConfigureOscillator(void)
{
    /* FA PARTIRE IL PLL */
    OSCTUNEbits.PLLEN = 1;
    __delay_ms(20);
}

void InitApp(void)
{
    //Configuro le porte D come uscite
    TRISD=0;
    PORTD=0;
   
    //Pin SPI
    TRISC7=0;
    TRISB4=0;
    PORTBbits.RB4=0;
    //Chip select
    TRISB0=0;
   
    //Inizializza il modulo MSSP in modalità SPI master:
    //invio dati da condizione di riposo
    //condizione di riposo a livello basso
    //Frequenza = Fosc/64 = 12000kHz/64 = 187.5kHz
    SSP1STAT=0b01000000;
    SSP1CON1=0b00100010;
}

void main(void)
{
    ConfigureOscillator();
    InitApp();
   
    while(1)
    {
    LATDbits.LATD6=1; //segnalo inizio

    PORTBbits.RB0=0; //Indica allo slave che i dati in arrivo
    SSP1BUF=0b11111111111111111111111111111111111; //Invio
    while(!SSP1IF); //Attesa e reset
    SSP1IF=0;
    PORTBbits.RB0=1; //Fine comunicazione

    __delay_ms(65);__delay_ms(65);__delay_ms(65);__delay_ms(65);__delay_ms(65);
    LATDbits.LATD6=0; //segnalo fine

    LATDbits.LATD7=1; //seganlo inizio

    PORTBbits.RB0=0; //Indica allo slave che i dati in arrivo
    SSP1BUF=0b10000000000000000000000000000000000; //Invio
    while(!SSP1IF); //Attesa e reset
    SSP1IF=0;
    PORTBbits.RB0=1; //Fine comunicazione

    __delay_ms(65);__delay_ms(65);__delay_ms(65);__delay_ms(65);__delay_ms(65);
    LATDbits.LATD7=0; //seganlo fine
    }
}


Io scrivendo questo programma avrei voluto che i led collegari al mm5450 lampeggiassero tutti insieme ogni 325ms (65x5), e che i led di PIERIN si accendessero alternativamente quando viene inviato il comando di accensione o spegnimento.
Ma qualcosa non funziona, i led collegati al mm5450 lampeggaino in una strana maniera, avete qualche consiglio? Grazie Ivo
Avatar utente
Foto Utentespivo
375 1 12
Frequentatore
Frequentatore
 
Messaggi: 179
Iscritto il: 19 dic 2012, 21:29

0
voti

[2] Re: PIERIN e MM5450

Messaggioda Foto Utentespivo » 5 ott 2014, 13:39

Ops perché non si vede Pierin nell'immagine di fidocad ?
Avatar utente
Foto Utentespivo
375 1 12
Frequentatore
Frequentatore
 
Messaggi: 179
Iscritto il: 19 dic 2012, 21:29

1
voti

[3] Re: PIERIN e MM5450

Messaggioda Foto Utentesimo85 » 5 ott 2014, 13:49

spivo ha scritto:Ops perché non si vede Pierin nell'immagine di fidocad ?


Codice: Seleziona tutto
MC 50 70 0 0 libreria pierin pic18.7

Hai disegnato il componente e lo hai salvato in una libreria personale ? ;-)

In tal caso devi copiare anche le macro.
Avatar utente
Foto Utentesimo85
30,8k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9928
Iscritto il: 30 ago 2010, 4:59

0
voti

[4] Re: PIERIN e MM5450

Messaggioda Foto Utentespivo » 5 ott 2014, 13:52

Grazie, sai dirmi come si fa?
Avatar utente
Foto Utentespivo
375 1 12
Frequentatore
Frequentatore
 
Messaggi: 179
Iscritto il: 19 dic 2012, 21:29

3
voti

[5] Re: PIERIN e MM5450

Messaggioda Foto Utentesimo85 » 5 ott 2014, 13:57

Usando Fidocadj in inglese, dal menù a tendina:

Edit >> Copy, split non standard macros.

Altrimenti dovrebbe essere Ctrl + M.
Avatar utente
Foto Utentesimo85
30,8k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9928
Iscritto il: 30 ago 2010, 4:59

3
voti

[6] Re: PIERIN e MM5450

Messaggioda Foto Utentespivo » 5 ott 2014, 14:00



GRAZIE, simo85 ora ho capito e funziona.
Avatar utente
Foto Utentespivo
375 1 12
Frequentatore
Frequentatore
 
Messaggi: 179
Iscritto il: 19 dic 2012, 21:29

0
voti

[7] Re: PIERIN e MM5450

Messaggioda Foto Utentesimo85 » 5 ott 2014, 15:09

De nada Foto Utentespivo. :ok:
Avatar utente
Foto Utentesimo85
30,8k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9928
Iscritto il: 30 ago 2010, 4:59

2
voti

[8] Re: PIERIN e MM5450

Messaggioda Foto UtenteGalaxi93 » 5 ott 2014, 15:20

Ciao Foto Utentespivo,

il tuo errore è che cerchi di inviare tutti i 36bit in una volta sola mettendoli nel registro SSP1BUF che è a 8 bit. Come si vede nel mio articolo, per inviare informazioni più grandi bisogna "spezzare" il pacchetto in byte e inviarli uno alla volta. Nel tuo caso sarebbe così:
Codice: Seleziona tutto
PORTBbits.RB0=0; //Indica allo slave che i dati in arrivo
SSP1BUF=0b11111111; //Invio
while(!SSP1IF); //Attesa e reset
SSP1IF=0;
SSP1BUF=0b11111111; //Invio
while(!SSP1IF); //Attesa e reset
SSP1IF=0;
SSP1BUF=0b11111111; //Invio
while(!SSP1IF); //Attesa e reset
SSP1IF=0;
SSP1BUF=0b11111111; //Invio
while(!SSP1IF); //Attesa e reset
SSP1IF=0;
SSP1BUF=0b11110000; //Invio
while(!SSP1IF); //Attesa e reset
SSP1IF=0;
PORTBbits.RB0=1; //Fine comunicazione


Stessa cosa per spegnere i led. Prova e fammi sapere.
O_/
Galaxi93.

Visita il mio sito!! E' ancora in costruzione, ma anche tu puoi contribuire a farlo crescere e darmi dei consigli per migliorarlo! Dai prova, provare non costa nulla! Vieni!
Avatar utente
Foto UtenteGalaxi93
3.104 3 7 13
Master
Master
 
Messaggi: 618
Iscritto il: 15 apr 2009, 16:27

1
voti

[9] Re: PIERIN e MM5450

Messaggioda Foto Utentespivo » 5 ott 2014, 16:19

Grazie, ora funziona :D
Avrei ancora un paio di dubbi:

1) io ho configurato così MSSP perché sul datasheet del MM5450 c'è scritto che il clock può lavorare al massimo a 500 kHz e quindi se usassi Fosc/16 andrebbe a 750 kHz, troppo veloce quindi. È giusto il mio ragionamento ?
Codice: Seleziona tutto
    //Inizializza il modulo MSSP in modalità SPI master:
    //invio dati da condizione di riposo
    //condizione di riposo a livello basso
    //Frequenza = Fosc/64 = 12000kHz/64 = 187.5kHz
    SSP1STAT=0b01000000;
    SSP1CON1=0b00100010;


2) mi piacerebbe comandare MM5450 da un PC tramite collegamento seriale USART. Ma se uso il pin RC7 per inviare i dati al MM5450 posso usarlo anche per la connessione USART? o è meglio cambiare qualcosa?
Grazie ancora ciao Ivo
Avatar utente
Foto Utentespivo
375 1 12
Frequentatore
Frequentatore
 
Messaggi: 179
Iscritto il: 19 dic 2012, 21:29

4
voti

[10] Re: PIERIN e MM5450

Messaggioda Foto UtenteGalaxi93 » 5 ott 2014, 19:39

1)Se il datasheet dice così, non puoi fare altro.
2)Direi di no, perché avresti dei problemi con il PC quando invii i dati al MM5450 (riceve qualcosa di strano).
Il PIC18F47J53 ha due periferiche USART, e la seconda in particolare non ha dei pin "fissi" ma ha la possibilità di rimapparli dove vuoi segliendoli tra quelli contrassegnati con il prefisso RP (datasheet pagina 7).
A pagina 160 c'è il paragrafo dedicato ai pin rimappabili e spiega come funzionano; in particolare a pagina 164 c'è un esempio in assembler su come configurare i pin della periferica USART 2 (proprio quella che interessa a te!).

Prova te a scrivere il codice per la configurazione della USART2 e delle sue porte, guardando se ti serve, il mio articolo sulla USART. Se poi hai qualche problema, chiedi pure.

Ciao,
Galaxi93.

Visita il mio sito!! E' ancora in costruzione, ma anche tu puoi contribuire a farlo crescere e darmi dei consigli per migliorarlo! Dai prova, provare non costa nulla! Vieni!
Avatar utente
Foto UtenteGalaxi93
3.104 3 7 13
Master
Master
 
Messaggi: 618
Iscritto il: 15 apr 2009, 16:27

Prossimo

Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti