[CCS] i2c_start() y i2c_stop No funcionan (fail) se cuelga (hangs on)

SI  están intentando usar las rutinas de manejo del protocolo i2C  que trae por defecto el CCS y están teniendo el problema de que al llegar a la instrucción i2c_start(); o i2c_stop(); el programa se cuelga (queda tildado) lo que es fácilmente apreciable si se esta simulando el software embebido usando el ISIS de proteus.

El inconveniente esta en que seguramente tienen especificado por software (no importa si lo pusieron o no por hardware vía los fuses) que no van a usar el protocolo SPI , es decir, tienen en su main lo siguiente:

setup_spi(SPI_SS_DISABLED);       <– remove this line of your main routine

La solución esta en comentar o borrar esa linea y wualaaaaa las rutinas dejan de quedarse colgadas.

 

Spurious SCL transition detected at…

Si alguna vez intentaron simular el bus i2C en el ISIS (proteus), puede que se hayan encontrado con ese error.

spuriuos-SCL-transition

El error se debe a un cambio en la linea del clock que no llega a ser correctamente la condición de start.

i2C-debugger-proteus

Se produce por una incorrecta configuración del tris correspondiente al puerto que contiene el i2C implementado en hardware.

En este caso al error lo cometí yo al declarar lo siguiente:   set_tris_c(0b10000011);  X cuando tiene que quedar declaro de la siguiente forma:  set_tris_c(0b10011011);  

Es decir, que mis pines SCL (PIN_C3) y SDA (PIN_C4) tiene que ser configurados como inputs y no como outputs, ya que al hacer esto último como el bus i2C lleva resistores de pull-up  aparece un flanco negativo.

Recordar que para una correcta simulación en lugar de poner resistores comunes (analogicos o digitales) se debe colocar el componente “pullup” que se encuentra dentro de Modelling Primitives

Consejos para Disminuir el Ruido Electrico – 3° Parte

capacitor de bypass

En esta tercera entrega de la mini serie de consejos y recomendaciones para disminuir el ruido eléctrico en un pcb vamos a hacer referencia a los capacitores de desacople o bypass.

Cada circuito integrado de nuestra placa debería tener al menos un capacitor de desacople en las cercanías de sus pines (o contactos) de alimentación…

Continuar leyendo

Buscar Reemplazo de Componentes Electronicos

Todos hemos estado en la situación de necesitar un componente electrónico del cual no existe stock en las tiendas locales de venta, ¿que se hacia antes? se consultaba unos libros de reemplazos que las mismas tiendan solían ofrecer para encontrar un componente que tuviera el mismo comportamiento o parecido.

Obviamente que esto a partir del año 2000 con el boom de Internet y del software cayo en desuso. Anteriormente di  a conocer la opción de instalar un software que servia para esto. El famoso NTE QuickCrosspero ahora directamente se puede realizar la búsqueda de reemplazos de integrados electrónicos directamente de forma online.

busqueda reemplazo circuito  electronico

En All Cross Reference Guides van a poder introducir el nombre del componente que desean reemplazar por un equivalente y les va a devolver los resultados de componentes con nombres parecidos y componentes con funcionalidad parecida.