Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

PIERIN e MM5450

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[21] Re: PIERIN e MM5450

Messaggioda Foto Utentespivo » 2 nov 2014, 16:13

Ciao a tutti,
ancora nel tentativo di utilizzare eusart2 e pensando di aver fatto qualche errore di traduzione, volevo provare ad inserire nel programma direttamente il codice assembler di pagina 164.
ho provato con il comando _asm e _endasm ma non funziona.

Come si fa ad inserire codice assembler in mplab con xc8?

Oppure sapete dirmi se ho tradotto correttamente il codice di pagina 164:
Codice: Seleziona tutto
// Codice copiato da pagina 164 datasheet
     //Unlock registers
     INTCONbits.GIE = 0;
     EECON2 = 0x55;
     EECON2 = 0xAA;
     PPSCONbits.IOLOCK = 0;
     // Assign RX2 to pin RP0 (RA0)
          RPINR16 = 0x00;
     // Assign TX2 to pin RP1 (RA1)
          RPOR1 = 0x06;
     //Lock register
     INTCONbits.GIE = 0;
     EECON2 = 0x55;
     EECON2 = 0xAA;
     PPSCONbits.IOLOCK = 1;
   

Grazie ciao Ivo
Avatar utente
Foto Utentespivo
375 1 12
Frequentatore
Frequentatore
 
Messaggi: 179
Iscritto il: 19 dic 2012, 21:29

1
voti

[22] Re: PIERIN e MM5450

Messaggioda Foto Utentekf00115 » 12 nov 2014, 13:34

Se può essere utile. Tempo fa ho realizzato una centralina di comando per le funzioni di un pullman. In pratica c' era un tastierino sul cruscotto che dialogava con un centralina nel vano motore. Il circuito tastierino, grande come un autoradio aveva 21 pulsanti (alza vetro, apri porta, accendi luci, accendi clima...) con dei led per indicare lo stato delle varie funzioni. Avevo usato un MM5450 per pilotare 32 LED. Il tastierino era formato da tre circuito stampati sovrapposti ed era molto comodo pilotare 32 led con solo due fili. Ho scritto in PIC BASIC. Ti allego le routine, se ti possono dare una idea. Uso due normali PIN del PIC senza sprecare seriale hardware etc.


Codice: Seleziona tutto
wr5450:

         '----------------- BIT DI START ------
         GOSUB bit1

         ' 1ø  da  0 a  7
         ' 2ø  da  8 a 15
         ' 3ø  da 16 a 15

         ' invio display 3 : bit da  16 a 23
         ' invio display 4 : bit da  24 a 31
         ' invio display 1 : bit da   0 a  7
         ' invio display 2 : bit da   8 a 15

         '---------------invio primi 32  bit di uscita  ----------
         FOR ii =16 to 23                    'DISPLAY3
            if bitM54 (ii)=1 then HIGH datM  'out bit 1
            if bitM54 (ii)=0 then LOW  datM  'out bit 0
            GOSUB CLOCK
         NEXT ii

         FOR ii =24 to 31                    'DISPLAY4
            if bitM54 (ii)=1 then HIGH datM 'out bit 1
            if bitM54 (ii)=0 then LOW  datM 'out bit 0
            GOSUB CLOCK
         NEXT ii

         FOR ii = 0 to 7                    'DISPLAY1
            if bitM54 (ii)=1 then HIGH datM 'out bit 1
            if bitM54 (ii)=0 then LOW  datM 'out bit 0
            GOSUB CLOCK
         NEXT ii

         FOR ii = 8 to 15                   'DISPLAY2
            if bitM54 (ii)=1 then HIGH datM 'out bit 1
            if bitM54 (ii)=0 then LOW  datM 'out bit 0
            GOSUB CLOCK
         NEXT ii

         '---------------invio restanti 2 bit a livello basso  (2 led)--------
         FOR ii =1 to 2
            GOSUB bit0
         NEXT ii
         
         '----------------- BIT DI STOP  ------
         GOSUB bit1

         return


azzM54:
         'azzero sequenza bit per M5450
         for ii=0 to 23
            bitM54(ii)=0
         next ii

         return


BIT1:    '---------- INVIO BIT=1 ---------------
            HIGH datM
            HIGH clkM
            LOW  clkM
            LOW  datM
         return

BIT0:    '---------- INVIO BIT=0 ---------------
           LOW datM
            HIGH clkM
            LOW  clkM
         return

RES54:   for ii=1 to 36
            gosub BIT0
         next ii
         return

HIG54:   for ii=1 to 36
            gosub BIT1
         next ii
         return
Avatar utente
Foto Utentekf00115
35 3
New entry
New entry
 
Messaggi: 52
Iscritto il: 17 feb 2007, 18:16
Località: perugia

0
voti

[23] Re: PIERIN e MM5450

Messaggioda Foto Utentespivo » 13 nov 2014, 20:33

Molto interessante non sapevo potesse funzionare così, ma come gestisci la frequenza nella finzione CLOCK?
Non sapevo che si potesse usare il BASIC per i PIC, come si fa?
Grazie Ciao Ivo
Avatar utente
Foto Utentespivo
375 1 12
Frequentatore
Frequentatore
 
Messaggi: 179
Iscritto il: 19 dic 2012, 21:29

1
voti

[24] Re: PIERIN e MM5450

Messaggioda Foto Utentekf00115 » 13 nov 2014, 20:42

Io ho usato di tutto
dall 'assembler con emulatore costosissimo PicMaster datomi in conto sviluppo software
poi PicBasicProfessional ora mi sto cimentando con MikroC

Per il MM5450 non ho dovuto impostare frequenze varie, l'ho usato come vedi dal software

bit dopo bit giocando sul Clock e sul Data

tutto qui

Ora ci sono molte routine già pronte ma un tempo realizzavo la seriale software stesso modo:

linea a riposo a 5V
bit di start (pin a massa)
8 bit dati

nessun bit per nessun controllo parità o disparità

1 bit di stop
ovviamente qui tenendo conto del baud rate esempio 9600 bit per secondo sono 104.1 us
qui usi il timer e se non ti viene 104 preciso comincia a scorrere il bit e fa errori
ma per inviare 10 byte in sequenza va ancora bene

cose analoghe con la 485 con 2N75176 oppure CAN BUS con MCP2551 (in realtà un multi master)
Avatar utente
Foto Utentekf00115
35 3
New entry
New entry
 
Messaggi: 52
Iscritto il: 17 feb 2007, 18:16
Località: perugia

0
voti

[25] Re: PIERIN e MM5450

Messaggioda Foto Utentespivo » 14 nov 2014, 19:43

Grazie x i consigli, ciao Ivo
Avatar utente
Foto Utentespivo
375 1 12
Frequentatore
Frequentatore
 
Messaggi: 179
Iscritto il: 19 dic 2012, 21:29

0
voti

[26] Re: PIERIN e MM5450

Messaggioda Foto Utentespivo » 28 gen 2015, 22:58

Salve a tutti, scrivo su questa discussione per non aprirne un'altra.

Sono risuscito a far funzionare pierin con mm5450 usando la connessione SPI, ora però ho voluto aggiungere un altro componente SPI (mcp3008) e mi sono accorto che mm5450 reagisce anche quando porto a livello logico 1 la sua uscita enable.

Io credo che il problema sia questo: Pierin ha le uscite a 3.7V e forse non sono sufficienti per mm5440.
Può essere vero? e se si come posso fare per portare 5V al pin enable dell'mm5450?
Ciao grazie Ivo
Avatar utente
Foto Utentespivo
375 1 12
Frequentatore
Frequentatore
 
Messaggi: 179
Iscritto il: 19 dic 2012, 21:29

1
voti

[27] Re: PIERIN e MM5450

Messaggioda Foto Utentekf00115 » 28 gen 2015, 23:30

Tramite BJT con pin del PIC verso la base e collettore con pull-up a 5V verso MM5450 ? Poi dovresti invertire la gestione dei livelli sul pin del PIC.
Avatar utente
Foto Utentekf00115
35 3
New entry
New entry
 
Messaggi: 52
Iscritto il: 17 feb 2007, 18:16
Località: perugia

0
voti

[28] Re: PIERIN e MM5450

Messaggioda Foto Utentespivo » 29 gen 2015, 15:41

Grazie per la risposta, purtroppo non ho nessun BJT.
In alternativa visto che ho un 74ACT245 potrebbe funzionare una cosa così:

Ciao Ivo
Avatar utente
Foto Utentespivo
375 1 12
Frequentatore
Frequentatore
 
Messaggi: 179
Iscritto il: 19 dic 2012, 21:29

0
voti

[29] Re: PIERIN e MM5450

Messaggioda Foto Utentespivo » 30 gen 2015, 21:35

Dopo ore e ore di tentativi per caso ho deciso di cambiare le istruzioni con cui "chiamavo" mm5450 3 mcp3008.

Precisamente modificando PORTBbits.RB0=0; in LATBbits.LATB0=0; e ora tutto funziona.

Ho provato a capire la differenza tra PORT e LAT, ma non ci sono ancora riuscito. Su vari siti dicono che in output (come li uso io per chiamare i dispositivi spi) sono uguali, invece NO.
Ciao Ivo
Avatar utente
Foto Utentespivo
375 1 12
Frequentatore
Frequentatore
 
Messaggi: 179
Iscritto il: 19 dic 2012, 21:29

Precedente

Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti