Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

PIERIN e MM5450

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[11] Re: PIERIN e MM5450

Messaggioda Foto Utentespivo » 5 ott 2014, 21:01

Grazie mille :ok:
Ora provo a fare qualcosa grazie ancora ciao Ivo
Avatar utente
Foto Utentespivo
375 1 12
Frequentatore
Frequentatore
 
Messaggi: 179
Iscritto il: 19 dic 2012, 21:29

0
voti

[12] Re: PIERIN e MM5450

Messaggioda Foto Utentespivo » 7 ott 2014, 21:20

Ho provato ad modificare i pin dell'EUSART ma ho avuto qualche problema. :cry:
Per porvare ho fatto (scopiazzando in giro) un piccolo programmino che usava EUSART1, RC7 come rx e RC6 come tx, così funzionava. Poi ho provato a modificarlo usando EUSART2 e inserendo il cosice a pagina 164 per usare RA0 e RA1, ma qualcosa non funziona, forse ho sbagliato a tradurre da assembler a c? #-o
Allego il codice, Ciao
Codice: Seleziona tutto
void interrupt high_isr(void)
#elif defined (__18CXX)
#pragma code high_isr=0x08
#pragma interrupt high_isr
void high_isr(void)
#else
#error "Invalid compiler selection for implemented ISR routines"
#endif

{
   
    if (RC2IF)
    {
        while(!PIR3bits.RC2IF);
        ch = RCREG1;

        while(!PIR3bits.TX2IF);
        TXREG1 = ch;
    }

      /* This code stub shows general interrupt handling.  Note that these
      conditional statements are not handled within 3 seperate if blocks.
      Do not use a seperate if block for each interrupt flag to avoid run
      time errors. */

#if 0
   
      /* TODO Add High Priority interrupt routine code here. */

      /* Determine which flag generated the interrupt */
      if(<Interrupt Flag 1>)
      {
          <Interrupt Flag 1=0>; /* Clear Interrupt Flag 1 */
      }
      else if (<Interrupt Flag 2>)
      {
          <Interrupt Flag 2=0>; /* Clear Interrupt Flag 2 */
      }
      else
      {
          /* Unhandled interrupts */
      }

#endif

}

void InitApp(void)
{
  TRISD = 0x3F;
  LATD = 0;
}

void EUSART2_deInit(void)
{
    BAUDCON2 =0x00;
    SPBRG = 0x0000;

    TXSTA2 = 0x00;
    PIE3bits.TX2IE = 0;
    PIR3bits.TX2IF = 0;
    IPR3bits.TX2IP = 0;

    RCSTA2 = 0x00;
    PIE3bits.RC2IE = 0;
    PIR3bits.RC2IF = 0;
    IPR3bits.RC2IP = 0;

    RC2IE = 1;
    RC2IP = 1;

    GIE = 1;
    PEIE = 1;
}

void main(void)
{
    ConfigureOscillator();
    InitApp();
    EUSART2_deInit();

     // 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;

     // configurazione EUSART2
     TRISAbits.TRISA0 = 1;
     TRISAbits.TRISA1 = 0;

     SPBRG2 = 0xE2;
     SPBRGH2 = 0x04;
     BAUDCON2bits.BRG16 = 1;
     TXSTA2bits.BRGH = 1;

     TXSTA2bits.SYNC = 0;
     RCSTA2bits.SPEN = 1;
     
     TXSTA2bits.TXEN = 1;
     RCSTA2bits.CREN = 1;

    while(!PIR1bits.TX1IF);
    TXREG1 = 55;
    for(;;)
    {
        if (ch == 97)
        {
            LATDbits.LATD6 = 1;
        }
        if (ch == 98)
        {
            LATDbits.LATD6 = 0;
        }
        if (ch == 99)
        {
            LATDbits.LATD7 = 1;
        }
        if (ch == 100)
        {
            LATDbits.LATD7 = 0;
        }   
    }//for
}
Avatar utente
Foto Utentespivo
375 1 12
Frequentatore
Frequentatore
 
Messaggi: 179
Iscritto il: 19 dic 2012, 21:29

1
voti

[13] Re: PIERIN e MM5450

Messaggioda Foto UtenteGalaxi93 » 7 ott 2014, 22:31

Hai dimenticato di cambiare i registri nel interrupt: da RCREG1 a RCREG2 e TXREG1 a TXREG2. Anche nel main, subito prima del ciclo for infinito, devi sistemare i registri.
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

0
voti

[14] Re: PIERIN e MM5450

Messaggioda Foto Utentespivo » 8 ott 2014, 16:29

Grazie Foto UtenteGalaxi93, ho corretto i registri. :oops:
Ma purtroppo c'è ancora qualcosa che non funziona. :(
Questa sera con più calma ci provo ancora, ciao Grazie Ivo
Avatar utente
Foto Utentespivo
375 1 12
Frequentatore
Frequentatore
 
Messaggi: 179
Iscritto il: 19 dic 2012, 21:29

0
voti

[15] Re: PIERIN e MM5450

Messaggioda Foto Utentespivo » 13 ott 2014, 20:54

Purtroppo non sono ancora riuscito a far funzionare il programma.
Per testarlo sto usando il convertitore usb-seriale di questo articolo http://www.electroyou.it/tardofreak/wiki/convertitore-usb-seriale di Foto UtenteTardoFreak.
Non so più cosa provare, ciao ivo
Avatar utente
Foto Utentespivo
375 1 12
Frequentatore
Frequentatore
 
Messaggi: 179
Iscritto il: 19 dic 2012, 21:29

1
voti

[16] Re: PIERIN e MM5450

Messaggioda Foto UtenteGalaxi93 » 15 ott 2014, 18:32

Ciao Foto Utentespivo,

scusa l'attesa ma avevo perso di vista questa discussione.

Riguardando con più attenzione il codice, direi che manca l'abilitazione dell'interrupt alla ricezione di un pacchetto e quello generale:

Codice: Seleziona tutto
PIE3bits.RC2IE = 1;
INTCONbits.GIE  = 1;
INTCONbits.PEIE = 1;


E poi non capisco a cosa serva la funzione EUSART2_deInit(); Male non fa, ma è inutile dato che al reset del PIC i registri che modifichi sono già in quello stato.
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

0
voti

[17] Re: PIERIN e MM5450

Messaggioda Foto Utentespivo » 16 ott 2014, 12:47

Grazie Foto UtenteGalaxi93 per la tua risposta.
ci ho messo un po' a rispondere perché prima ho voluto fare qualche prova, e così mi sono accorto di una cosa strana:
Io carico il programma su pierin con il bootloader, prima collego l'USB poi premo reset e il bootloader vede pierin, carico il programma, scollego e ricollego l'USB per far partire il programma appena caricato.
Una volta caricato il programma su pierin solo se ho collegato RA0 al convertitore seriale-USB il bootloader vede pierin come se avessi premuto reset.
So che Foto UtenteTardoFreak aveva modificato i bootloader della seconda generazione di piern, magari è per questo che non funziona.
Grazie ancora ciao Ivo
Avatar utente
Foto Utentespivo
375 1 12
Frequentatore
Frequentatore
 
Messaggi: 179
Iscritto il: 19 dic 2012, 21:29

2
voti

[18] Re: PIERIN e MM5450

Messaggioda Foto UtenteGalaxi93 » 22 ott 2014, 18:48

Ciao Foto Utentespivo,

non so se alla fine hai risolto da solo, comunque il bootloader della prima versione controllava lo stato del pin RB2: se è allo stato logico 1, avvia il programma utente, altrimenti il bootloader. Nella seconda versione controlla lo stato di RD5 che è il tasto PL1 sul Pierin.

Se tu hai la prima versione e lasci il pin scollegato potresti avere comportamenti strani.

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

0
voti

[19] Re: PIERIN e MM5450

Messaggioda Foto Utentespivo » 23 ott 2014, 21:34

Grazie Foto UtenteGalaxi93.
Purtroppo non sono riuscito a fare molto tranne capire questo:
Il programma sembra funzionare solo se RA0 (l'input della comunicazione seriale) non è collegato, infatti se non lo collego pierin riesce a inviare dati tramite RA1 (l'output).
Se collego RA0 il programma non parte perché parte il bootloader.
Non ho nulla di collegato ne a RB2 ne a RD5.

Non so più cosa fare :(
Ciao Ivo

PS
la funzione EUSART2_deInit() cera nel programma (credo di TardoFreak) che ho modificato per fare questo, nel dubbio l'ho tenuta.
Avatar utente
Foto Utentespivo
375 1 12
Frequentatore
Frequentatore
 
Messaggi: 179
Iscritto il: 19 dic 2012, 21:29

0
voti

[20] Re: PIERIN e MM5450

Messaggioda Foto Utentespivo » 25 ott 2014, 21:10

ciao a tutti,
ho provato a sostituire il convertitore usb-seriale con un st202 e collegarlo ad un vecchio PC con la seriale, in questo modo quando viene collegato non si attiva il bootloader, ma purtroppo c'è ancora qualcosa che non funziona.
Avatar utente
Foto Utentespivo
375 1 12
Frequentatore
Frequentatore
 
Messaggi: 179
Iscritto il: 19 dic 2012, 21:29

PrecedenteProssimo

Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 5 ospiti