Página 1 de 1

Clock do I2C pic16f87

MensagemEnviado: 16 Jul 2010 14:09
por henriquethiesen
Olá pessoal,

Estou usando este pic para comunicar com monitor de bateria que utiliza o padrão SMBUS. Isso é praticamente a especificação do I2C com algumas restrições de velocidade. No datasheet do monitor de bateria está especificado que a frequência mínima do clock é de 10KHz e a máxima é de 100KHz.

Eu estava utilizando o PIC com cristal externo e a frequência do I2C estava em 50KHz (tudo funciona perfeito), mas por questões de consumo quero utiizar o clock interno do PIC em 1MHz, aí a frequência do I2C fica em 10KHz e não funciona (toda hora dá erro de comunicação).

Revirando o datasheet não encontrei nada de seleção de clock para I2C.
Apenas o SSPCON que tem controle do clock mas é para o modo SPI.

Alguém sabe se existe uma configuração para tal configuração do clock da I2C.

Uso o compilador PICC, e aquela diretiva FAST/SLOW não tem efeito nenhum.

#use i2c(MASTER, SLOW, SDA=PIN_B1, SCL=PIN_B4)

Desde já agradeço
Henrique

MensagemEnviado: 16 Jul 2010 14:15
por _blackmore_
bom ... pode ser que eu esteja enganado ... mas o uso de cristal externo ajuda também na precisão do clock do microcontrolador e em casos de comunicação é muito importante. O oscilador interno do PIC é um RC .. o que não é muito preciso, então acredito que este é um fator que não lhe ajuda.

MensagemEnviado: 16 Jul 2010 18:19
por henriquethiesen
Concordo que o RC não é preciso, mas nesse caso isso não tem problema. Usando oscilador RC interno em 2MHz consigo uma frequência de 20KHz no I2C e funciona perfeitamente.

Isso resolve o caso, mas qualquer uA reduzido é util num equipamento alimentado a bateria.