fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Programar PIC en C
 
Avisos
Vaciar todo

Programar PIC en C

9 Respuestas
6 Usuarios
0 Reactions
3,240 Visitas
superprp
Respuestas: 203
Topic starter
(@superprp)
Estimable Member
Registrado: hace 18 años

Buenas,

Hasta ahora he programado siempre los PIC en ensamblador, pero estoy viendo que mucha gente los programa en c, y quería saber con que programa puedo hacerlo, porque he estado buscando y solo he encontrado el ccs, pero es de pago, y me gustaría saber si hay alguno gratuito, se puede hacer con el visual studio.net 2005? una vez que lo tengo en c como lo paso a .hex?

Además si conoceis algun programador que pueda grabar toda la familia de PICs, me gustaría saber los mejores programadores que hay.

Gracias!

Responder
8 respuestas
heli
Respuestas: 748
 Heli
(@heli)
Ardero
Registrado: hace 19 años

El CCS es bastante malo, en cuanto a optimización de código y tiene bastantes "manías", aunque es muy fácil de usar. Me han comentado que el Hi-Tech es mucho mejor, aunque no lo he probado, y existe una versión gratuita:
http://www.htsoft.com/products/compilers/PICClite.php
Por supesto tienes el SDCC: http://sdcc.sourceforge.net/
que soporta muchos mas micros a parte del PIC y es mas estándar. Corre bajo Linux y también hay una versión que corre bajo Windows!!!

Responder
technik
Respuestas: 287
(@technik)
Reputable Member
Registrado: hace 18 años

como programador yo uso un te-20 y nunca he tenido problemas con ningun pic (hasta 28 pines). Y con respecto al compilador de C para pics yo miraria en la web de microchip, alli los hay gratuitos, yo suelo usar el C18 desde mplab 😉

Responder
furri
Respuestas: 2708
(@furri)
Ardero
Registrado: hace 19 años

El de Hitec es solo para algunos micros lo que limita mucho... el de sourceforge me lo voy a bajar a ver que tal.
...
Por supesto tienes el SDCC: http://sdcc.sourceforge.net/
...

No funciona este link, quizá sea temporal, este si va.
http://sourceforge.net/projects/sdcc/

furri.

Responder
choda
Respuestas: 7
(@choda)
Active Member
Registrado: hace 17 años

Hola!!! Soy nuevo y os leo desde hace tiempo.

Este es mi primer post y voy a ser sincero, es por DESESPERACIÓN!!!!! 😕

Estoy programando el 18F2331 en C para control de motores así que creo que este post está aquí bien, ¿no? Si no es así, movedlo 😉

Bien, la cosa es que tengo ya mi programita que "supuestamente" me configura el PIC para leer los encoders pero cuando simulo no obtengo ningún resultado. Uso el MPLAB 7.6, y aquí va el código:

/*

PROGRAMACIÓN DEL BUCLE PRINCIPAL PARA EL MANEJO DEL ENCODER

*/

#include <p18f2331>

void main( void ) {

//--------------------------------------------------------------
// Configuración de las patillas 4, 5 y 6 como NO ANALÓGICAS
ANSEL0bits.ANS2 = 0;
ANSEL0bits.ANS3 = 0;
ANSEL0bits.ANS4 = 0;

//--------------------------------------------------------------
// Configuración de las patillas 4, 5 y 6 como entradas (1):
// 4 -> INDX
// 5 -> QEA
// 6 -> QEB
// Correspondientes al puerto A, bits 2, 3 y 4:
TRISAbits.TRISA2 = 1;
TRISAbits.TRISA3 = 1;
TRISAbits.TRISA4 = 1;

//--------------------------------------------------------------
// Reconfiguración del registro QEICON, que define el modo QEI:
// QEICON = 1__11000
// PDEC = 00
// QEIM = 110
// VELM = 1
//
QEICONbits.PDEC0 = 0;
QEICONbits.PDEC1 = 0;
QEICONbits.QEIM0 = 0;
QEICONbits.QEIM1 = 1;
QEICONbits.QEIM2 = 1;
QEICONbits.VELM = 1;

//--------------------------------------------------------------
// Configuración del filtro de ruido
// DFLTCON = _0000111
// FLTCK = 111
// FLT1EN = 0
// FLT2EN = 0
// FLT3EN = 0
// FLT4EN = 0
DFLTCONbits.FLTCK0 = 1;
DFLTCONbits.FLTCK1 = 1;
DFLTCONbits.FLTCK2 = 1;
DFLTCONbits.FLT1EN = 0;
DFLTCONbits.FLT2EN = 0;
DFLTCONbits.FLT3EN = 0;
DFLTCONbits.FLT4EN = 0;

//--------------------------------------------------------------
// Máxima cuenta posible del registro POSCNT ==> MAXCNT = 65353
// 2 bytes = [ MAXCNTH MAXCNTL ]
// 65353 = 0xFFFF
MAXCNTH = 0xFF;
MAXCNTL = 0xFF;

//--------------------------------------------------------------
// Reseteo del registro contador de pasos POSCNT
// 2 bytes = [ POSCNTH POSCNTL ]
// Sirve como extensión del registro
POSCNTH = 0x00;
POSCNTL = 0x00;

//--------------------------------------------------------------
// Inicio del bucle infinito
while( 1 ) {

}

}

¿Alguna sugerencia? Muchas gracias a todos anticipadamente 🙂

Responder
Página 1 / 2
Compartir: