TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: black_flowers en 04 de Julio de 2007, 17:48:11

Título: manejar pines de entrada salida en ccs.
Publicado por: black_flowers en 04 de Julio de 2007, 17:48:11
hola, tengo una duda con el ccs: ¿puedo para modificar las salidas hacer esto:

PORTB=0;

en lugar de esto: output_high(PORTB,1)

por ejemplo, (quizás haya algun error en la sintaxis pero la idea es si puedo utilizar la variable directamente e igualarla a cero.

un saludo.
Título: Re: manejar pines de entrada salida en ccs.
Publicado por: dhmejia en 04 de Julio de 2007, 19:29:12
En CCS lo puedes hacer, pero antes tienes que definir la variable PORTB haciendo:
Código: C
  1. #byte PORTB = 0x06  //Direccion del puerto B

saludos,
Título: Re: manejar pines de entrada salida en ccs.
Publicado por: jfh900 en 04 de Julio de 2007, 19:34:38
Se puede hacer de varias maneras:

1º)
#byte PORTB = 0x06
PORTB.1 = 1;

2º)
#bit Patilla_Bombilla = 0x06.1
Patilla_Bombilla = 1;

3º)
#define PORTB 0x06
#bit Patilla_Bombilla = PORTB.1
Patilla_Bombilla = 1;

4º)
PIN_B1 = 1;

Saludos
Título: Re: manejar pines de entrada salida en ccs.
Publicado por: micro_cadaver en 05 de Julio de 2007, 00:24:47
por eso no me gusta el CCS  :mrgreen: debido a que no puedes operar directamente con los registros del pic, sino que tienes que estar definiendolos antes.
Título: Re: manejar pines de entrada salida en ccs.
Publicado por: jfh900 en 05 de Julio de 2007, 06:18:51
¿No entiendo lo que quieres decir que hay que definir antes los registros del pic?. Si metes la definición del puerto en el .h del pic correspondiente, con una vez que lo definas, se termino la historia. ¿Lo que no sé es por que no lo han incluido los del CCS?.

Un saludo
Título: Re: manejar pines de entrada salida en ccs.
Publicado por: micro_cadaver en 05 de Julio de 2007, 10:53:58
si, me referia a cuando hay que hacer:

#byte portb = 0x06

por ejemplo si quiero usar el option_reg de la gama 16FXXX tendria que ponerlo o redefinirlo, o algun otro registro especial. Pues las otras instrucciones que manejan este registro (option_reg) generan mucho codigo hex, y asi mismo en otras funciones.
Título: Re: manejar pines de entrada salida en ccs.
Publicado por: black_flowers en 05 de Julio de 2007, 18:14:43
y no habrá por ahì algún fichero para incluír que tenga las direcciones grabadas?
Título: Re: manejar pines de entrada salida en ccs.
Publicado por: Nocturno en 06 de Julio de 2007, 02:03:36
La cosa es que el CCS tiene una filosofía algo diferente al resto de compiladores. Es como subir un nivel, aunque no todos los programadores lo vemos como una ventaja.

La diferencia, por ejemplo, es que mientras que para configurar el oscilador en cualquier otro compilador hay que escribir en el registro OSCCON, mientras que en CCS hay un comando llamado "setup_oscillator".

Esta misma filosofía se traslada a la gestión de los puertos. En CCS lo habitual es utilizar el input(), output_low(), output_high() que ya hacen la gestión del TRIS que corresponda.
Título: Re: manejar pines de entrada salida en ccs.
Publicado por: RedPic en 06 de Julio de 2007, 04:13:56
Y CCS tiene tambien una característica de "alto" nivel que puede volver loco a cualquiera si no la tiene en cuenta.

CCS admite unas directivas de compilación que le dicen al compilador cómo debe tratar los TRIS de puerto (configuración bit a bit de cada pin de un puerto para indicar si es de entrada, de salida o flotante)

Estas directivas son:


Si declaramos un puerto como #USE FAST_IO(X) es el usuario quien debe asegurarse de que el sentido del pin es el correcto y para ello debe colocar antes de leer o escribir en el puerto correspondiente el SET_TRIS_X(0b00000000) para indicar el uso de entrada o salida de cada bit del puerto.

Si declaramos un puerto como #USE FIXED_IO(X_OUTPUTS=1,3,5,7) el compilador genera e inserta en tu código los SET_TRIS_X(0b10101010) correspondientes a dicha declaración independiente del uso que tus instruciones hagan después de dichos pines. Si has declarado con FIXED_IO de salida el pin 1 del puerto X y después lo lees el compilador no hará nada y estarás leyendo un puerto de salida.

Si por último declaramos el puerto como #USE STANDARD_IO(X) el compilador generará automáticamente e insertará antes de cualquier operación de entrada o salida de cualquier pin del puerto X los SET_TRIS_X() correspondientes a la instrución que le sigue. Esto hace que los TRIS siempre estén de acuerdo con la instrucción a ejecutar. Si colocamos en nuestro código un OUTPUT_HIGH(PIN_B0) y el puerto B está declarado como #USE STANDARD_IO(B) justo antes del output habrá un TRIS declarando el PIN_B0 como salida, si acontinuación ponemos un INPUT_(PIN_B0) el compilador pondrá ahora un TRIS para declarar PIN_B0 como entrada.

Este #USE STANDARD_IO(X) es el modo POR DEFECTO de todos los puertos en CCS si no se declara lo contrario y por ello si no usamos cualquiera de los otros dos tipos de use de los puertos LOS TRIS QUE NOSOTROS PONGAMOS NO VALEN PARA NADA porque el CCS LOS REDECLARA A PARECER EN FUNCION DE LAS INSTRUCCIONES DE NUESTRO CÓDIGO SEAN DE ENTRADA O DE SALIDA.

Un saludo a todos.




Título: Re: manejar pines de entrada salida en ccs.
Publicado por: black_flowers en 06 de Julio de 2007, 18:01:13
gracias por la explicación redpic. La verdad es que me acabo de quedar algo desilusionado con el ccs. ¿qué otro compilador sería recomendable? El picc de hi-tech por ejemplo?

un saludo.
Título: Re: manejar pines de entrada salida en ccs.
Publicado por: RedPic en 06 de Julio de 2007, 18:09:46
El CCS no es mal compilador del todo pero, como todo en este mundo, tiene sus particularidades que es conveniente conocer para no meter la pata demasiado. Realmente no me ha costado mucho adaptarme a él, tiene una documentación que no es mala, y eso sí trae mas de un centenar de ejemplos de códigos fuente para casi todo lo que hacen los PIC's. No sería una mala elección.

 
Título: Re: manejar pines de entrada salida en ccs.
Publicado por: micro_cadaver en 07 de Julio de 2007, 03:14:33
claro el HI-TECH tambien es bueno. Todos son buenos pero lo define el estilo de programar de cada uno.
Título: Re: manejar pines de entrada salida en ccs.
Publicado por: zurdo en 07 de Noviembre de 2007, 20:20:25
hola quisiera informacion sobre donde puedo localizar un tutorial sobre CCS  :-/
Título: Re: manejar pines de entrada salida en ccs.
Publicado por: micro_cadaver en 07 de Noviembre de 2007, 22:56:25
pues estas sentado sobre una banca de oro.  :mrgreen:
Título: Re: manejar pines de entrada salida en ccs.
Publicado por: jfh900 en 08 de Noviembre de 2007, 08:31:44
Hola zurdo, ¿por que no pruebas con Google?

(http://img256.imageshack.us/img256/5571/manualui4.th.jpg) (http://img256.imageshack.us/my.php?image=manualui4.jpg)

Un saludo
Título: Re: manejar pines de entrada salida en ccs.
Publicado por: PalitroqueZ en 08 de Noviembre de 2007, 19:03:15
si, me referia a cuando hay que hacer:

#byte portb = 0x06

por ejemplo si quiero usar el option_reg de la gama 16FXXX tendria que ponerlo o redefinirlo, o algun otro registro especial. Pues las otras instrucciones que manejan este registro (option_reg) generan mucho codigo hex, y asi mismo en otras funciones.

sip micro.. pero observa que hay algo importante, mientras se pueda definir cualquier cosa es valioso, hecho que le he visto al hitech (sin mencionar que hay funciones que no trae y hay que hacerlas o buscar el código no oficial por internet)



zurdo el principal manual lo consigues en http://www.ccsinfo.com/downloads/CReferenceManual.pdf

uno en castellano: http://www.eupmt.es/cra/inform/Manual_Compilador_C_Para_PICs.pdf