Pagina 1 di 3

Programmare i PIC

MessaggioInviato: 16 mar 2018, 11:17
da Fire91
Ciao ragazzi,
Da un po' di tempo ho cominciato a programmare i PIC, sono ancora alle prime armi e mi ritrovo con non poche difficoltà. finché i programmi da realizzare sono banali, cioè che non coinvolgono particolari registri non ho problemi, tuttavia quando c'è da lavorare con interrupt e timer cominciano a sorgere le difficoltà e mi ritrovo spesso ad avere programmi non funzionanti. Mi riferisco in particolare ai PIC24, infatti per quanto riguarda i PIC16 non ho molti problemi e riesco a lavorare discretamente con queste due funzionalità, invece con i PIC24 non c'è verso. Sto cominciando a lavorare su i PIC24 perché il mio professore (università) mi ha consigliato di passare a questa serie, dato che quelli a 16 bit sono vecchiotti. Mi rendo conto che la causa è la mancanza di una preparazione di base adeguata, fino ad ora ho imparato studiando i datasheet e basandomi su alcuni tutorial sul web, che per carità sono molto esaurienti ma trattano quasi esclusivamente i PIC16. Qualcuno mi può consigliare un libro di testo o una guida su cui partire per entrambi le famiglie?
Inoltre, vorrei farvi un'altra domanda. Come ambiente di sviluppo cosa usate? Io uso MPLAB X IDE, voi quale ritenete migliore? E microC della Mikroel?

Grazie a tutti!

Re: Programmare i PIC

MessaggioInviato: 16 mar 2018, 11:23
da aldofad
Complimenti al tuo professore. Che facoltà e dove? Questa conoscenza pratica è necessaria per passare l'esame?

Re: Programmare i PIC

MessaggioInviato: 16 mar 2018, 11:25
da IlGuru
Io uso ancora i pic8. Sono vecchio eh?

Re: Programmare i PIC

MessaggioInviato: 16 mar 2018, 11:48
da luxinterior
I concetti che impari usando PIC24 li puoi riutilizzare anche su altre architetture, ma siccome nel mondo professionale al 90% ti troverai a dover lavorare con processori ARM, Io la fatica la farei per fare pratica su ARM. Si trovano facilmente ambienti e tools di sviluppo gratuiti.

Re: Programmare i PIC

MessaggioInviato: 16 mar 2018, 11:51
da med90
In effetti i PIC16 sono un pochino vecchiotti se vuoi passare a qualcosa di più recente per cosi dire ma di pari fascia ci sarebbero i PIC18.

Io di solito uso sempre MPLAB X e mi trovo benissimo tuttavia utilizzo i PIC18 e i PIC32.
Secondo me se hai lacune sul C in effetti ti conviene trovare un libro, se invece hai problemi proprio sul micro secondo me ti conviene usare la documentazione rilasciata dalla microchip (compilatore XC16 e datasheet del micro)

Re: Programmare i PIC

MessaggioInviato: 16 mar 2018, 15:12
da Fire91
Studio ingegneria dell'informazione (triennale), fa parte della tesi di laurea. Concordo con voi sul fatto che i pic16, seppur usciti molto tempo fa, sono sempre di attualità. Se l'applicazione accetta requisiti in termini hardware non complessi, che male c'è ad utilizzarli? (questo è ciò che ho spiegato a lui). Quando gli dissi che stavo lavorando con i pic16 mi rispose ridendo "ma dai! Il pic16 lo usavo io da bambino!", e francamente rimasi un po' male, anzi infastidito. Purtroppo se lui vuole così, devo fare così eheh.

Con il C me la cavo abbastanza bene, il problema è capire come funzionano i registri del PIC, ad esempio configurare il timer2, invece con i PIC16 ci riesco facilmente.

Re: Programmare i PIC

MessaggioInviato: 16 mar 2018, 15:30
da aldofad
Fire91 ha scritto:fa parte della tesi di laurea

ah ok, mi pareva strano che a un esame italiano venga chiesto di programmare un PIC

Re: Programmare i PIC

MessaggioInviato: 16 mar 2018, 17:10
da Fire91
Ho provato a sfruttare l'interrupt ed il funzionamento del timer sul PIC24F16KA102 provando con il timer2 ed un interrupt su INT0, che corrisponde al pin RB7. E' un programmino molto banale giusto per testare l'interrupt, quando il flagbit per timer2 cambia stato la variabile c la pongo ad 1; invece, se avviene un interrupt su RB7 il pin RB0 deve passare a livello alto. Il giochetto con il timer2 funziona senza problemi, ma l'interrupt su RB7 non funziona. Cosa sbaglio?

Codice: Seleziona tutto
#include <xc.h>
#include "setup.h"

int c =0;

void main(void) {
   
    TRISB=0;
    PORTB=0;
   
   
    _T2IP = 0b001;  //timer2 ha priorità 1
    IFS0bits.T2IF = 0; //clear timer2 status flag
    IEC0bits.T2IE = 1; //interrupt su timer2
    //TCS impostato a 0, quindi viene usato clock interno
    //I bit TCKPS<1:0> sono settati a 0, quindi prescaler di timer2 1:1
    T2CONbits.TON = 1; //starts timer2
   
    IEC0bits.INT0IE = 1;    //abilita interrupt su RB7
    IFS0bits.INT0IF = 0;    //clear status flag interrupt on RB7
    _INT0IP = 0b010;    //priorità 2 per INT0

    //matching dopo 10 us, dato che timer2 incrementa ogni 0.25us per
    //arrivare ad 10us occorrono 10us/0.25us = 40 conteggi
    PR2 = 40;

   
    while(1) {
        while(_T2IF);
        IFS0bits.T2IF = 0;
        c=1;
    }
   
}

void _ISR _INT0Interrupt(void)
{
    if(_INT0IF) {
        _INT0IF = 0;
        _RB0=1;
    }
}

Re: Programmare i PIC

MessaggioInviato: 16 mar 2018, 17:59
da med90
Non hai impostato RB7 come input, devi scrivere
Codice: Seleziona tutto
TRISBbits.TRISB7=1;

Re: Programmare i PIC

MessaggioInviato: 16 mar 2018, 19:31
da Fire91
Cavolo che sbadato!! È vero, grazie mille med90 :D