TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Pedro en 29 de Julio de 2016, 16:41:44
-
Saludos, he creado una pequeñita libreria ya que me estoy iniciando en ccs. La libreria que he creado es para leer datos de un ADC MCP3550. Pero en el circuito utilizo dos adc con los que me gustaria seleccionar el chip CS en la misma funciòn en la que la llamo para leer los datos. En el ejemplo CS lo tengo con adc_cs. Lo que quiero es que si door = 1 adc_cs se asigne a PIN_C0 y si door = 2 que sea PIN_C1 por ejemplo. :?
#define cs0 PIN_C0
int32 Mcp3550_read(int8 door)
{
int32 result_adc = 0 ;
result_adc = 0 ;
output_low(adc_cs) ;
while (input(adc_sdo) == 1){ }
output_high(adc_cs) ;
delay_us(50) ;
output_low(adc_cs) ;
delay_us(50) ;
for (int8 v_conta = 0 ; v_conta <= 24 ; v_conta++ ){
output_high(adc_sck) ;
delay_us(50) ;
if (input(adc_sdo) == true) { result_adc += 1 ;}
output_low(adc_sck) ;
delay_us(50) ;
result_adc = result_adc << 1;
}
output_high(adc_cs) ;
output_low(adc_sck) ;
result_adc = ( result_adc * 0.000786781319) ; //
return result_adc ;
}
-
Se me ocurren varias formas, no se si es posible. Ya que no me llevo demasiado bien con CCS.
- Usar un switch o if y que tenga el mismo codigo uno para cada salida, obviamente esto significa 2 codigos identicos casi, nomas que cambia la salida.
- Si es posible definir el registro, PORTC o LATC, depende del PIC:
- Definir el registro y usar las funciones que trae CCS
bit_set(LATC,door-1);
bit_clear(PORTC,door-1);
bit_toggle(xxxxx);
Es lo unico que se me ocurre, creo que los registros los definis con #BYTE
-
Gracias si lo de if si lo habia pensado voy a probar lo otro haber ;-)