Empiezo de cero, pero veo que utilizáis el compilador CCS. Tiene alguna ventaja utilizar este compilador?
Existen librerías/código de programa para ir comenzando con el proyecto?
No todos usan CCS, lo que veo es que la mayoria de las personas que se inician en el mundo de los microcontroladores lo hacen por ahi. Y se olvidan completamente del datasheet y luego vienen con esos problemas. Por que terminan "probando" codigo y no entendiendo el micro. Al menos es mi apreciacion desde que estoy en el foro.
Posee algunas ventajas y algunas desventajas.
Ventajas: Tiene algunas funciones que lo hacen "simple" para el usuario, Los mas claros ejemplos son UART / I2C / SPI, ejemplo:
#use RS232(xmit=PIN_A0,rcv=PIN_A1,bits=8,Parity=O,ERRORS,stream=Hola)
#use RS232(xmit=PIN_A0,rcv=PIN_A1,bits=8,Parity=O,ERRORS,stream=segundo)
Eso automaticamente el mismo compilador introduce codigo, si los pines corresponden a una UART por HW entonces usa eso, sino te crea una UART por software, te verifica la paridad por si solo. Otra tambien es output_toggle, los printf para lso RS232/I2C, como si fueran canales distintos, eso esta muy bueno y simple.
Al menos yo que vengo de ASM, tengo un solo punto de interrupcion, es decir en XC8 vos definis solo una funcion de interrupcion y de ahi preguntas por las flag. Estoy mas acostumbrado a eso, en CSS podes definir una funcion para cada interrupcion, obviamente que por detras el compilador agrega lo mismo que harias en XC8, pero eso no lo ves, por ejemplo para la funcion de interrupcion del timer 1, deberias hacer:
#INT_TIMER1
void Int_TMR1(void){
//....
}
Yo estoy acostumbrado a leer el flag y listo. Como te decia vengo del ASM. La traduccion del ASM y del datasheet mas directa la veo con XC8.
Desventajas:
Aprender todo lo que posee CCS y lo que hace por detras, es muy engorroso para alguien que recien empieza explicarle que el compilador si esta en STANDARD_IO ( por default ) si vos usas un input(PIN_A0), te cambia el TRIS por si solo, es decir el compilador agrega codigo para eso. Asi que tenes que usar FAST_IO y modificar los TRIS con set_tris_x(), Tambien lo engorroso que es para leer un registro del PIC, tenes que definirilo con #BYTE , para poder acceder al mismo. Tenes Muchas funciones para acceder a registros el cual necesitas el manual al lado, para ver si alguna es mejor. Ejemplo para setear el timer tenes set_timer0(xx); en XC8 haces TMR0 = xx; y listo.
-----------
En fin... XC8 vs CCS es casi lo mismo, vas a hacer exactamente lo mismo en un lado u otro. La diferencia esta en que XC8 las cosas estan en codigo, es decir que si qieres usar las PLIB tenes un OpenUSART1(xxx), y podes ir al archivo y ver el codigo que posee eso, mientras que en CCS con el #use RS232() no podes a pesar que generen un codigo parecido, tenes que buscar el manual y ver las opciones que tenes. Ese codigo de la UART es generado por el mismo compilador, vos te evitas el pensar que hay por detras.
Librerias sobre algunos integrados/teclados/etc/lcd hay, pero como es C, las librerias de CCS se podrian utilizar tranquilamente en XC8 si se reemplazan las funciones que posee. Incluso si agarras una libreria de Arduino en C++, seguro que podes transformarla a XC8.
Lo unico que se de CAN es este hilo de MGLSOFT
http://www.todopic.com.ar/foros/index.php?topic=19182.0