Hola a todos. estoy en mis inicios con el lenguaje C para PICs con CCS y tengo unos problemas y dudas. A ver si alguien se anima a ir ayudándome a sacar éstas dudas.
Tengo pensado realizar un proyecto con unos sensores de fotodiodo para detectar luz (realizaré su acondicionamiento y demás para tener un cierto margen de voltage a su salida en función de la intensidad lumínica). En total utilizaré unos 10 de éstos sensores.
Luego acoplaré éstos sensores a dos ADC MCP3008 de 10bits y 7 canales (como tienen 7 canales tengo que utilizar dos ya que tengo 10 sensores que analizar) cada uno para pasar el voltage analógico de los sensores a digital.
Por último conectaré cada ADC a un PIC16F877A para pasar la información del ADC al PIC con el (desconocido para mi) protocolo SPI (utilizo dos PIC16F877A ya que utilizaré dos ADC que me pasarán la información mediante SPI).
Por último último conectaré estos dos PICs a una placa ARDUINO UNO o DUEMILANOVE para que me pase la información via RS232. Quiero utilizar solo un bus tipo ONE-WIRE (de solo un hilo) para comunicar mis PICs a la placa ARDUINO via RS232.
Espero que hasta aquí haya quedado un poco claro lo que pretendo realizar. Bien pues ahora explico un poco el algoritmo...
Los sensores captarán la información lumínica cada uno situado en un lugar distinto. Ésta información la irá analizando el ADC externo por turnos (Primero el canal 0, luego el canal 1, etc) el cual se encargará el PIC de seleccionar dicho canal.
Ésta información pasará al PIC via SPI y éste se encargará de enviarla al ARDUINO via RS232. Luego el Arduino enviará la información de los ADC a un PC via RS232 con un programa realizado en Labview para que lo analice. Cuando el primer Pic haya analizado el último canal, le enviará una señal al segundo PIC para que comience a analizar (Realizaré un efecto barrido sobre los sensores) y cuando éste llegue a su final volveremos a comenzar con el primer sensor.
Bueno pues mi pregunta es... ¿Es muy difícil comenzar a realizar todo ésto para que acabe funcionando, me refiero a la utilización del protocolo SPI con un ADC externo y PIC y lo que se refiere al tema de comunicar dos pics con un ARDUINO?
Estoy comenzando primero de todo la configuración DEL PRIMER MICRO 16F877A para protocolo SPI y RS232 con el entorno MPLAB y compilador CCS. Es mi primera vez con ésto así que expondré el código para ver si voy comenzando por buen camino con las configuraciones.
Aún faltan muchas cosas pero quiero ir comenzando a repasarlo todo.
Muchas gracias y disculpen la extensión del tema.
#include <16F877A.h>
#FUSES NOWDT, XT, NOPUT, NOPROTECT, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG
//Configuración del puerto serie
#USE DELAY (clock = 20000000)
#USE rs232 (BAUD=4800,XMIT=PIN_C6,RCV=PIN_C7,BITS=8 )
//Configuración SPI
#USE setup_spi(SPI_MASTER | SPI_H_TO_L | SPI_CLK_DIV_16);
//Inicialización de variables y estados
void main () {
if (Flag_Micro1){
switch (SENSOR) {
//El próximo sensor (con su ADC) a leer será el 2;
SENSOR=SENSOR2;
//Escogeremos salida del canal de ADC1
output_hight(PIN_AO1);
output_hight(PIN_AO2);
output_hight(PIN_AO3);
case SENSOR1:
break;
case SENSOR2:
break;
case SENSOR3:
break;
case SENSOR4:
SENSOR=SENSOR1;
Flag_Micro1=0;
break;