Estoy diseñando un programa sencillito de I2C master con un 16F886.
el codigo es el siguiente:
include <16F886.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES XT //
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#use delay(clock=20000000)
#use i2c(MASTER, sda=PIN_C4,scl=PIN_C3, force_hw)
void main()
{
setup_timer_0(RTCC_EXT_L_TO_H|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
while(TRUE)
{
i2c_start(); //begin transmission
i2c_write(end_disp); //select address of device to communicate with
i2c_write(dado); //send actual data
i2c_stop(); //terminate communication
delay_ms(200);
}
}
La salida que obtengo en el pin SCL es la del archivo adjunto. En el pin SDA no se obtiene ninguna salida, se queda a nivel alto, pero no se aprecia variacion alguna.
Es decir, tengo un problema el cual no se soluciona de ninguna manera, por eso acudo a vosotros. Las resistencias de pull-up en SDA y SCL son de 4K7
muchas gracias!