Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
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!
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!!!
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 😉
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.
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 🙂