lelerelele Inserito: 22 maggio 2013 Segnala Inserito: 22 maggio 2013 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.
Livio Orsini Inserita: 22 maggio 2013 Segnala Inserita: 22 maggio 2013 Se usi la versione free, che non è ottimizzata, avrai risultati inferiori a quelli che puoi ottenere con CCS.
lelerelele Inserita: 26 maggio 2013 Autore Segnala Inserita: 26 maggio 2013 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?
lelerelele Inserita: 31 maggio 2013 Autore Segnala Inserita: 31 maggio 2013 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: 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.
lelerelele Inserita: 18 giugno 2013 Autore Segnala Inserita: 18 giugno 2013 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.
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora