Vai al contenuto
PLC Forum


Passare Da Ccs A Mplabx Hi-Tech Sarà Un Miglioramento?


lelerelele

Messaggi consigliati

Ciao a tutti.

Dopo avere realizzato una serie di programmi per PIC con la suite CCS, ed avere avuto in qualche occasione alcuni problemini, mi è venuta voglia di provare la suite HI_TECH, trovo che a prima vista i comandi e le gestioni dei registri sia nettamente più immediata.

Ecco il problema, anche usando una serie di righe di codice così come da tutorial, mi da sempre errori in fase di compilazione, trovandomi le righe in Mplabx sottolineate di rosso.

Magari per chi è esperto a colpo d'occhio troverà il motivo di tutto ciò, io per ora non ci sono riuscito.

Ecco alcuni esempi. il micro è il PIC12F615.


#include "../../Programmi/HI-TECH Software/PICC/9.71a/include/pic.h"

#include "../../Programmi/HI-TECH Software/PICC/9.71a/include/htc.h"

#include "../../Programmi/HI-TECH Software/PICC/9.71a/include/pic12f615.h"


//PIE bit 1 abilita interrupt timer1

//PIR1 bit0 se timer1 in overflow



void Init_Interrupt(void)

{


  INTCON=0x00001111;

  PIE1=0x0000001;

  ADIE=1

};



void interrupt isr(void)

{

   //interrupt on port RB0 change

   if (RBIF)

   {

	  RBIF=0;

	  x=TRUE;

   }

}






#include "../../Programmi/HI-TECH Software/PICC/9.71a/include/pic.h"

#include "../../Programmi/HI-TECH Software/PICC/9.71a/include/htc.h"

#include "../../Programmi/HI-TECH Software/PICC/9.71a/include/pic12f615.h"



//il bit 6 dell option register determina il fronte dell'interrupt INTEDG

//INTCON bit 7 attiva interrrupt, bit 4 abilita INT-GP2, bit 6 abilita interrup periferiche

//PIE bit 1 abilita interrupt timer1

//PIR1 bit0 se timer1 in overflow


void Init_Interrupt(void)

{

  INTCONbits.GIE=0x11;//abilita interrupt globali

  INTCON.bit(4) =0x1;//abilita inT EXT  

  INTCON.bit(5)=0x1;//abilita int timer1

  PIE1=0x0000001;

  ADIE=1

};


void EventoISR(void)

{

	if (EventoTimer1==1) evento_t1();// int timer1

	if (INTCON.bit(1)==1)  EventoIntExt();//evento int esterno

};


Quasi tutte le righe a parte i #include mi vengono segnalate in rosso, e da neofita non capisco il perchè.

Inoltre mi chiedevo se il passaggio può essere migliorativo, oppure non cambia niente, anche nell'ottica del debug, nel mio caso per ora è sempre stato software con appunto mplab.

Se qualcuno può darmi qualche consiglio tante grazie.

saluti.

Link al commento
Condividi su altri siti


Se usi la versione free, che non è ottimizzata, avrai risultati inferiori a quelli che puoi ottenere con CCS.

Link al commento
Condividi su altri siti

Ti ringrazio Livio per la tua risposta.

Ho risolto qualche problema sulla compilazione MPLABX usando la suite XC--, ma ancora mi ritornano dei problemi che non riesco a capire! Alcune righe copiate da tutorial non mi compilano.

Anche banalità come


ADCON0bits.GO = 1;

oppure

__delay_ms(1000);

pur avendo linkato le librerie necessarie, infatti le variabili suddette me le vede, ma in compilazione mi da errore.

Qualche idea?

Link al commento
Condividi su altri siti

Sto incontrando un difetto inaspettato.........suppongo non si tratta di problema software, ho provato sia con CCS che con XC8, ed il problema si presenta comunque.

lo schema è questo:

3038q2r.jpg

Ho usato questo sistema, molto semplice, per sincronizzare a rete un circuito di parzializzazione, ed il tutto funzionava bene;

in questa applicazione mi trovo a dovere leggere due ingressi analogici, non sono altro che un paio di potenziometri collegati alla tensione di alimentazione 5V stabilizzati, e mi trovo il difetto.

Se leggo semplicemente i due ingressi, senza applicare segnale di sincronismo, la lettura è buona, il bit letto ha qualche fluttuazione ma niente di allarmante;

se invio il segnale di sincronismo la lettura degli ingressi analogici è molto sporca, l'errore dei bit letti dall' ADC è anche il doppio del valore reale, cioè mi legge il valore reale per molti cicli, ma saltuariamente legge un valore anche doppio del valore reale, leggendo con oscilloscopio l'ingresso analogico non giustifica una lettura tanto sbagliata.

i condensatori sono 10uF; i resistori sono di 1Kohm.

E' capitato a qualcuno? Ho difficoltà a risolvere in modo ottimale.

saluti.

Link al commento
Condividi su altri siti

  • 3 weeks later...

Ecco le ultime novità. come detto da Livio il compilato di Mplab xc8 free compèorta un file di circa 3.3KB, mentre lo stesso ottenuto da CCs da un file di circa 2.8KB; detto questo mi sembra molto più immediato l'uso di mplab, in quanto rispecchia direttamente la struttura dei registri dei pic, andando ad operare su di loro come si farebbe in ASM. Deto questo la scelta sarà soggettiva. Tornando al difetto, sembra che tutto il problema fosse dovuto ad un'impedenza troppo elevata dei potenziometri da 10Kohm usati per gli ingressi ADC, io ero tranquillo, visto che da datasheets mi davano una impedenza di source inferiore ad i 10Kohm, ed io ero nella condizione più sfavorevole a zero centrale a 5Kohm, ma non bastava, anche se avevo messo grosse capacità verso massa, evidentemente non era sufficiente per mantenere stabili le tensioni all'ingresso. Da tenere presente per chi come me non è alle prime armi con i micro. saluti.

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...