Autor Tema: Uff, cuidado con la directiva #use i2c emulado en micros con PLL a 48 o 64 Mhz,.  (Leído 1314 veces)

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

Desconectado remi04

  • PIC24F
  • *****
  • Mensajes: 657
Después de una mañana entera dándome hocicazos con los RTC DS1307, resulta que tengo algunos que son DS1307Z y otros DS1307N. Pues bien, aunque los dos tienen especificaciones de clock identicas, los N no me funcionaban ninguno, no había forma de comunicar con ellos, pero los Z que son los que había usado hasta ahora funcionaban perfectos TODOS, tengo mas de 100 en la calle funcionando en un proyecto.

  Usando la directiva:

 #use i2c(Master,slow,sda=PIN_B2,scl=PIN_B1,FORCE_SW,STREAM=RTC)

   Pedía emular por software un i2c en modo slow (100 Khz) ya que los RTC no admiten mas velocidad que esta.
 
 Pues al final, me dio por poner el osciloscopio por que es que ya no sabía por donde revisar mas el RTC, y vi que el CLOCK, el SCL me estaba dando periodos de 250 Khz. No había manera de bajarlo de ahí, ni poniendo slow=100000, ni nada. 

  Única solución, poner el oscilador con el PLL a 32 Mhz.

  Ahora me da 125 Khz en el SCL, sigue siendo por encima de especificaciones pero SI que funcionan todos los DS1307.

  Esto ya se me ocurrió entre café y café pensativo acordándome de que las salidas PWM tampoco bajan de un mínimo según el oscilador.

  Probaré usando el modulo I2C hardware a ver si por hardware da igual el PLL a 64 Mhz.

 Es un PIC18F26K20

Un saludo.


 

anything