Autor Tema: Configuracion puerto C y I2C  (Leído 1845 veces)

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

Desconectado micro_pepe

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3216
Configuracion puerto C y I2C
« en: 27 de Julio de 2006, 10:52:11 »
Hola, me pregunto si la directiva del CCS para usar el puerto I2C en un pic16f876 configura el puerto C como entrada por defecto, pues revisando un viejo programa que hice, el RC2 lo tenia configurado como salida, sin embargo lo estoy usando como entrada, un pulsador exactamente, y el programa funcionaba perfectamente.

La cabecera del main es esta:

Código: [Seleccionar]
void main(){
setup_ccp1(CCP_OFF);
restart_wdt();
Set_TRIS_A(0b11011111);
Set_TRIS_C(0b11111011);
TRISB3=0;//PB3 como salida
RELE=RELE_ON;

setup_timer_1(T1_INTERNAL | T1_DIV_BY_1);
Setup_ADC_Ports(RA0_RA1_ANALOG_RA3_REF);
Setup_ADC(ADC_CLOCK_DIV_32);
enable_interrupts(INT_TIMER1);
enable_interrupts(GLOBAL);
Set_ADC_Channel(0);
delay_ms(1);

set_timer1(Periodo);
init_ext_eeprom();
LeeValoresMaximos();
lcd_init();

la directiva del I2C es esta:

Código: [Seleccionar]
# use i2c(MASTER, SDA=PIN_C4, SCL=PIN_C3,SLOW,FORCE_SW,RESTART_WDT)
Y lo uso solamente para una EEPROM externa.

Saludos y gracias.
Se obtiene más en dos meses interesandose por los demás, que en dos años tratando de que los demás se interesen por ti.

新年快乐     的好奇心的猫死亡

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: Configuracion puerto C y I2C
« Respuesta #1 en: 27 de Julio de 2006, 12:04:44 »
CCS C siempre coloca antes de una instrucción que use un PIN como entrada el correspondiente tris(xxx1xxx) e igualmente pone el tris(xxx0xxx) si la instrucción a ejecutar usa un PIN como salida. Si tu colocas los tris erróneamente él los pondrá bien.

Esto hace que los tris(xxxxx) que tu coloques al inicio no van a servir de mucho ....

Salvo que declares #use FAST_IO porque entonces él deja de colocar tris delante de las intrucciones de entrada o salida, y tu personalmente debes encargarte de ello. Si te falta algún tris o está mal configurado tu programa no funcionará.

Ese es el perfecto ejemplo de equilibrio entre libertad y responsabilidad.  :mrgreen:

P.D: Compila con y sin el #use FAST_IO y compara los respectivos .lst (que es el código ASM<->C que genera CCS) para ver las diferencias entre ambos modos de compilación.

« Última modificación: 27 de Julio de 2006, 12:07:01 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania