Autor Tema: Acceso puertos directamente CCS en pic 18f4550  (Leído 3203 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado al9

  • PIC10
  • *
  • Mensajes: 16
Acceso puertos directamente CCS en pic 18f4550
« en: 11 de Agosto de 2012, 08:58:43 »
Hola.
Estoy programando con el CCS pero quiero acceder a los registros de los puertos diréctamente, por velocidad y por que no encuentro manera de cambiar el registro TRIS bit a bit.
He probado con assembler pero tengo un poco de lio con los modos de direccionamiento.
También he probado asi:

Código: CSS
  1. #byte PORTC  =  0x0F82
  2. #byte TRISC    =  0x0F94
  3.  
  4. #bit PORT_1W1 = PORTC.1
  5. #bit TRIS_1W1 = TRISC.1
  6.  
  7. void outputlow1W(){
  8.  
  9.                 PORT_1W1=0;
  10.                 TRIS_1W1=0;
  11.  
  12. }


Pero esto causa problemas en la estabilidad del programa  :huh:

Podeis ayudarme?
Gracias.

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Acceso puertos directamente CCS en pic 18f4550
« Respuesta #1 en: 11 de Agosto de 2012, 10:10:21 »
  Usando "set_tris" con el valor adecuado debería funcionar. ¿Estás usando la sentencia #use fast_io? ya que si no la usas, CCS configurará el tris según lo crea necesario.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado al9

  • PIC10
  • *
  • Mensajes: 16
Re: Acceso puertos directamente CCS en pic 18f4550
« Respuesta #2 en: 11 de Agosto de 2012, 12:43:07 »
Si pero set_tris no actua sobre un bit individual..

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Acceso puertos directamente CCS en pic 18f4550
« Respuesta #3 en: 11 de Agosto de 2012, 12:54:48 »
  Es verdad, pero se podría buscar la forma combinando operaciones sobre una variable y luego llevar el valor de la variable al registro TRIS.

  ¿No tenía CCS las funciones set_bit y clear_bit? De existir, tal vez las puedas usar con tus definiciones.

  Por ejemplo para setear el bit 1 y dejar el resto como está podrías hacer lo siguiente...

Código: C
  1. variable = variable | 0b00000010;
  2. set_tris_b(variable);

  Para borrar dicho bit y dejar el resto como está se puede recurrir a...

Código: C
  1. variable = variable & 0b11111101;
  2. set_tris_b (variable);
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado pajaro

  • PIC24H
  • ******
  • Mensajes: 1121
Re: Acceso puertos directamente CCS en pic 18f4550
« Respuesta #4 en: 11 de Agosto de 2012, 15:00:47 »
Hola

como dice AngelGris puedes usar las funciones de ccs
bit_clear(var,bit),
bit_set(var,bit),
bit_text(var,bit);
segun la version se van incrementando mas y mas, y tambine los bug en ellas.  :mrgreen:


bit_clear(PORTA,1);

mira estos enlace para el manual de referencia de ccs:

http://www.ccsinfo.com/content.php?page=compilers

http://www.ccsinfo.com/downloads.php


de todas formas si defines :

PORTA

no recuerdo si era con #define, o #byte
 PORTA 0xzzzz --> este numero "zzzz" lo puedes encontrar
en el mapeo del data del pic

despues puedes hacer
PORTA.1=valor;

tambien lo puedes redefinir, no recuerdo si era con #define, o #bit


LED0 porta.1


Espero haber sido de ayuda.

Un cordial saludo.


Desconectado al9

  • PIC10
  • *
  • Mensajes: 16
Re: Acceso puertos directamente CCS en pic 18f4550
« Respuesta #5 en: 11 de Agosto de 2012, 18:27:55 »
Si Pajaro, eso es lo que hago.. la duda esta en si haciéndolo asi tengo que cambiar algun banco de registros como hace el assembler.
Por cierto, cómo e haría en assembler?

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Acceso puertos directamente CCS en pic 18f4550
« Respuesta #6 en: 11 de Agosto de 2012, 18:38:33 »
  Cuando programas en C, no tienes que estar pendiente del cambio de banco -al menos en la teoría-, después dependerá un poco del código que genere el compilador.

  Lo que sí tienes que tener en cuenta es que si quieres manejar a tu antojo el TRIS, debes colocar la sentencia

Código: C
  1. #use Fast_io(PORTB)

  No recuerdo si está escrito en la forma correcta, tendrás que buscar en la ayuda del compilador
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas