• Lunes 7 de Julio de 2025, 13:27

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Huguen_aus_Tirol

Páginas: 1 ... 7 8 [9] 10 11 ... 13
201
Microcontroladores / Re: Temperaturas Negativas
« en: Martes 10 de Enero de 2006, 22:44 »
Hola! Veo que estan hablando del LM35. Yo implementé un termómetro/termostato con este sensor, y medía temperaturas negativas. Según el fabricante, este sensor nos dá 0V para 0ºC, siempre que el terminal común esté conectado a 0V. Yo conecté entre el terminal común y masa (0V) un diodo (1N4148) polarizado en directo. En criollo, levante la masa en unos 0.7V; es decir que para 0ºC tengo la tensión del polarización del diodo. Se debe ajustar el circuito, pero funciona.
También es posible implementar una compenzación automática, para los efectos de la temperatura sobre el diodo que "levanta la masa" :P Yo no lo hize, pero es posible...
Otra opción es sar el LM335, nos dá 2.73V para 0ºC, con variaciones de 10mV/ºC. Se conecta distinto que el LM35!!!!
Sin embargo, Farmada habla del LM75 :D
Nunca lo usé, pero tengo el DS. Creo que solo hay que conectarlo y buscarle la vuelta en el soft!l
Veamos que encuentro y les aviso, pero en los próximos días...

Saludos a todos :hola:

202
Microcontroladores / Re: Fallo - Rs232
« en: Martes 10 de Enero de 2006, 22:28 »
Hola muchachos!
Desde hace un tiempo estoy entrando en el lenguaje C. Me simplifica muchas cosas, como por ejemplo el manejo de un LCD, ó trabajar con números reales...
Pero en algunos aspectos el asembler tiene sus ventajas.
De cualquier manera, creo que debemos empezar con el asembler, y luego pasar al C; esto nos dá más poder sobre el micro ;)  Además, según mi punto de vista, el asembler nos "forma" una manera de pensar que simplifica bastante las cosas con, por ejemplo, el C.

Saludos!

203
Microcontroladores / Re: Fallo - Rs232
« en: Lunes 9 de Enero de 2006, 22:30 »
Hola Jaumegs!
aquí te adjunto un archivo donde están declarados los registros para el 16F873; no debería haber problemas si lo usas con el 876. Solo tienes que incluirlo en tu .asm
Te recomiendo bajar de la página de Microchip el manual del 16F876, te será de gran ayuda.
Luego es solo configurar un par de registros... Pruebalo, y nos cuentas. No creo que tengas mayores problemas.

Saludos :hola:

204
Microcontroladores / Re: Fallo - Rs232
« en: Lunes 9 de Enero de 2006, 00:08 »
Hola! Estoy muy de acuerdo con Lalo_soft! Personalmente, cuando me hace falta un periférico, busco el micro que ya lo tenga implementado. Después es solo configurar algunos registros y, depende el caso, un poco de código.

Pero también veo que aquí en el foro la mayoría es gente que se inicia en este mundo, aparentemente muchos estudiantes. Por este motivo no veo mal que hagan experimentos y pruebas, mientras se disponga de tiempo y ganas. Ya se darán cuenta con el tiempo y la experiencia de qué es lo más conveniente... :rolleyes:

En cuanto a costos, es mejor tener un micro con algún periférico que no usemos (es decir, pagar por un periférico extra) que implementar alguno por soft. Y en lo que respecta al 84, podemos ir olvidandonos de él; es más caro, e incluso está empezando a ser difícil conseguirlo...

Conclusión: como dice Lalo_soft, para cualquier proyecto, busquemos el micro que tenga el periférico que necesitemos. Si es para practicar, fines didácticos, o jugar, podemos buscar de hacerlo por soft... pero no nos compliquemos mucho ;)

Saludos a todos!

205
Microcontroladores / Re: Uso Del Tmr1 En El 16f876
« en: Viernes 6 de Enero de 2006, 09:51 »
Hola! Estuve viendo en detalle el programa, y debería hacer parpadear al led; al menos la configuración de los registros y demás está bien...
Creo que deberías revisar el hard, y también como configuras los bits de configuración al programar le micro.

Saludos

206
Microcontroladores / Re: Uso Del Tmr1 En El 16f876
« en: Jueves 5 de Enero de 2006, 23:13 »
Hola!
Bueno, vamos por partes, dijo Jack el destripador...
En primer lugar, sería bueno que al entrar a la interrupción guardes lo que esté en W y en el registro STATUS. Ya se que de NADA saltas a NADA, pero, y antes de eso? Al salir de la interrupción restableces los valores de W y STATUS (en el DS del 16F876 encontrarás el truquito de hacerlo simplemente)
En segundo lugar, al entrar a la interrupción chequea que realmente sea el bit del timer 1 el que genera la interrupción. Ya sé, son costumbres, pero las buenas costumbres no vienen mal :)
Tercero, deberías recargar el timer 1 (TMR1H y TMR1L) no solo al inicio del programa, sino cada vez que se genere una interrupción del timer 1
Cuarto, cuando estés en la dirección NADA, estarás siempre en NADA (perdón, el micro ;) ) Nunca más, salvo un reset, volverá a la dirección TIEMPO.

Prueba y nos cuentas!

Saludos :hola:

207
Microcontroladores / Comparador En 18f1320
« en: Jueves 5 de Enero de 2006, 22:01 »
Hola a todos!
Otro problema con los DS! Leo el Data Sheet de este micro, y dice que posee un comparador analógico. Pero en el pin out no figura pin alguno para este periférico; sin embargo en la sección del módulo ECCP, dice que (en modo half ó full bridge) se puede disparar una condición de fault por medio del comparador (entre otras cosas).
Tampoco en el DS hay una sección que detalle el modulo del comparador :(
Ya busqué en los "Errata" de Microchip...
La pregunta del año: el 18F1320, tiene o no comparador analógico? si sí, que pines corresponden a este módulo?
Gracias!
Y saludos a todos! :hola:

208
Soluciones de Hard y Soft / Lcd 4*20
« en: Jueves 5 de Enero de 2006, 21:48 »
Hola a todos!
Por medio de mi trabajo, y luego de las inundaciones que afectaron a Tirol en Setiembre último, me hice de un panel con un display LCD de 4 líneas, 20 caracteres. El display sobrevivió, pero casi me vuelvo loco para poder utilizar las 4 líneas; me bajé la información que pude de la red, y me cansé de hacer pruebas.
Bien, todos los Data Sheet me dicen que uno de los byte de configuración es:

0 0 1 DL N F x x

Donde:

DL: interfaz de 8/4 bits
N: 1/2 líneas
F: 5*11/5*8 puntos
x: no importa

Después de incansables intentos, y justo antes de volverme loco, probé poner los bits "x" a 1, es decir el byte quedó así:

0 0 1 0 1 0 1 1

Y, sorpresa, funcionó!
Alguién sabe qué pudo haber sido? Los data sheet están mal? La inundación dejó al LCD chiflado? (descarto esta opción :lol: )
Saludos! :hola:

209
Microcontroladores / Re: Rs-232
« en: Jueves 5 de Enero de 2006, 21:28 »
Hola!
Cuentanos más de tu problema con el timer 1, asi te damos una mano. De todas formas, te adelanto que el timer 1 posee dos registros, es decir que hay que tomar algunas precauciones al leerlos. Puedes encontrar buena información en el Data Sheet (sección 6.4.1). Antes de leerlos podrías poner el timer en stop (T1CON,0), y luego no olvides volver a arrancarlo! Cuéntanos más...

Saludos! :hola:

210
Microcontroladores / Re: Sentencia Res
« en: Jueves 5 de Enero de 2006, 14:12 »
Hola! Como les prometí, les dejo información... Lamentablemente no pude extraer los códigos de error y warnings de la documentación. Como el pdf es algo grande, les dejo el link para que lo lean o lo bajen. Es interesante leerlo si se va a programar en asembler ;)

Manual MPASM (Microchip)

Espero les sea útil...

Gracias Jonathan, lo mismo para vos! Y lo mejor en tus estudios! :)

Saludos :hola:

211
Microcontroladores / Re: Rs-232
« en: Jueves 5 de Enero de 2006, 12:52 »
Hola! :hola:
Y pensar que yo empezé en el mundo de los PIC´s con el 16C54 :D
Tengo algo de experiencia con el 16F876, asi que si puedo ayudarte en algo, con gusto!

Saludos!

212
Microcontroladores / Re: Rs-232
« en: Jueves 5 de Enero de 2006, 02:01 »
Hola Kain589! Estoy de acuerdo en lo que dices! Personalmente, creo que ya el 16F84 está jubilado, y con todos los honores :)
Actualmente consigues micros con más periféricos y mucho más baratos... Pero la idea de crbrs no está mal; aparentemente está experimentando y eso es bueno. Seguramente, después buscará la solución con algún micro que tenga el módulo incorporado; pero entonces la experiencia ya la ha vivido... Y posiblemete le sirva para solucionar algún otro tipo de problema ;)
De cualquier manera, estoy muy de acuerdo contigo; y el 16F84 ya está totalmente descartado de mis proyectos: A pesar de ello, sigue siendo el "maestro" de mi experiencia con los PIC´s

Un abrazo, y saludos :hola:

213
Microcontroladores / Re: Rs-232
« en: Jueves 5 de Enero de 2006, 01:04 »
Hola!
A ver si me explico:

* Pongo a 1 el bit de carry
* Veo si el pin de entrada es 1
* Si es cero pongo el bit de carry a cero
* roto a la derecha una posición el registro de entrada
* Espero el tiempo de un bit (ya está desfazado en medio tiempo de bit)
* Repito hasta completar 8 veces

En tu rutina es algo distinto; te dejo el trabajito de verlo. Con gusto te lo diría exactamente ahora, pero en esos casos pasa el tiempo y uno se olvida... Cuando nos rompemos el coco no nos olvidamos facilmente :P

Creo que el hard está bien. El MAX232 (ó ICL o alguna de sus variantes) solo tiene 4 capacitores. Si  estan bien conectados no hay problema; por otro lado, si transmites bien por RS232, deberías recibir bien (en lo que respecta al RS232). Salvo que esté mal la conexión de alguno de los pines, cosa que no creo :)

Saludos :hola:

214
Microcontroladores / Re: Rs-232
« en: Miércoles 4 de Enero de 2006, 21:48 »
Hola! Estuve comparando tu programa con una rutina de recepción que utilizé con un 16F84 y me funcionó.

Código: Text
  1. ;**********  Rutina de lectura   ****************
  2. Ndato  BTFSC  PORTB,1     &#59;Espera Bit START?
  3.       GOTO   Ndato
  4.       MOVLW  8           &#59;Datos de 8 bits
  5.       MOVWF  ldato
  6.       CLRF   dRx         &#59;Borra registro de dato entrante
  7.       CALL   RetaRx      &#59;Retardo para fijar lectura en punto medio
  8.                          &#59;de cada bit, despues de detectar el START
  9. Birx   BCF    STATUS,C    &#59;Borra carry
  10.       RRF    dRx         &#59;Por defecto el primer bit a "0"
  11.       BTFSC  PORTB,1     &#59;Es un "0"?
  12.       BSF    dRx,7       &#59;Es un 1­
  13.       CALL   RetaTx      &#59;Retardo de 104 us. => 9600 baudios
  14.       DECFSZ ldato       &#59;Ultimo bit?
  15.       GOTO   Birx
  16.       MOVF   dRx,w       &#59;Copia registro del dato entrante en W y
  17.       MOVWF  dTx         &#59;lo transfiere al registro de salida
  18.  
  19.  
  20.  

Está casi todo igual, salvo... A continuación dejo el código de esta rutina que utilizé; fijate, y con unas pocas modificaciones debería funcionar :rolleyes:

Código: Text
  1. ;-------------------------------------------------------------------------------
  2. ;  RECEPCION DE UN BYTE
  3. ; El byte se detecta por interrupcion, es decir el bit de start.
  4. ;
  5. RECEIVE_232
  6.   BTFSC  RXBF  &#59;
  7.   GOTO  NO_232  &#59;
  8.   BCF  GIE  &#59;inhabilito todas las interrupciones
  9.   CLRF  RXBUF  &#59;borro buffer de recepcion
  10.   MOVLW  .8  &#59;son 8 bits
  11.   MOVWF  CNT232  &#59;a contar
  12.   CALL  HALF_BIT&#59;espero medio bit
  13.   CALL  ONE_BIT  &#59;y espero un bit mas
  14. LOOP_232RX
  15.   BCF  C  &#59;supongo que llega un 0
  16.   BTFSC  RX232  &#59;veo si es asi
  17.   BSF  C  &#59;no, llego un 1
  18.   RRF  RXBUF,1  &#59;acomodo bit en el buffer
  19.   CALL  ONE_BIT  &#59;y espero un tiempo de bit
  20.   DECFSZ  CNT232,1&#59;decremento contador de bits
  21.   GOTO  LOOP_232RX&#59;si no llegaron 8 busco siguiente
  22.   BSF  RXBF  &#59;indico buffer lleno
  23. NO_232
  24.   BCF  INTF  &#59;
  25.   BSF  INTE  &#59;habilito interrupcion de puerto serie
  26.   BSF  GIE  &#59;habilito interrupciones en general
  27.   GOTO  IVEND  &#59;y salgo.
  28.  
  29.  

Yo utilizé la línea RB0, entonces el bit de start me generaba interrupción y activaba así la recepción. Esta bien leer el bit a la mitad  ;)

Prueba y nos cuentas!

Saludos

215
Microcontroladores / Re: Protocolo Icsp Para Pic
« en: Miércoles 4 de Enero de 2006, 19:10 »
Hola!
Seguro que tiene que ser posible. En la página de Microchip (www.microchip.com) encontrarás toda la información detallada de lo que es ICSP, y para cada modelo de micro.
Aquí va el link:

Link a ICSP de Microchip

La idea es más que interesante, lamentablemente estoy muy flojo en VB. Puedo hacer algún que otro programita, pero nada complejo... así que desde el PIC hasta el conector a la PC puedo ayudarte :D

Saludos y nos cuentas!

216
Microcontroladores / Re: Sentencia Res
« en: Martes 3 de Enero de 2006, 23:49 »
Hola muchachos! El warning que dices es normal con MPlab; yo siempre lo tenía, y lo eliminé con la siguiente linea al principio del programa

Código: Text
  1. errorlevel -215, -302
  2.  

Ahora no recuerdo si el warning tiene el código 302 ó 215... Sí recuerdo que me los daba siempre, y con esta línea lo eliminé.
De cualquier manera, el programa te funciona igual. Al final del manual del MPASM (creo <_< ) hay una tabla o lista con los distintos códigos de error y warnings. Voy a ver de subirlas al foro...

Saludos

217
Microcontroladores / Re: Pic 16f84, Bus I2c
« en: Domingo 1 de Enero de 2006, 08:47 »
Hola crbrs! En los módulos I2C, ya sean maestro o esclavo, la linea SDA es siempre drenador abierto. Si a esta línea no se le conecta una R de pull-up (una resistencia entre SDA y VCC), la comunicación no funciona debidamente. En este caso, todo lo que escribas a la memoria funcionará correctamente, pero cuando quieras leerla, lo más seguro es que solo leas ceros (por eso no recibes el bit de NO ACK) ;)
Según el Data Sheet de la 24C02, esta R se aconseja de 10K para bus a 100 KHz o de 2K para 400 KHz. Personalmente, con 10K me funciona muy bien en ambas configuraciones.

Saludos, y buen año a todos :hola: !

218
Microcontroladores / Re: Calentar Un Alambre
« en: Martes 27 de Diciembre de 2005, 23:21 »
Hola Jaumegs! a ver si podemos ayudar algo.... :blink:
Todo material que puede conducir la electricidad posee una caracteristica llamada resistividad, digamos "r", que está dada en [ohm*mm2/m]. Por ejemplo, para el cobre es 0,0175 ohm*mm2/m. Es decir que si tenemos un conductor de sección S y longitud L, sabiendo r podemos saber su resistencia. Ejemplo: un alambre de cobre de 1 mm2 de sección y 1 m de largo da una resistencia de 0,0175 ohm. Simple, no? :whistling:
Si tu alambre es de cobre, tienes una R de: (0,0175 * 0,6) / 0,4 (es la sección???) = 0,026 ohm
Si lo conectas a tu trafo, tienes: I = V/R = 24V/0,026 ohm = 914 A. Es decir, tienes un buen fusible :)

La resistividad varía de un material a otro, deberías fijarte en algún libro de electrotécnia; suelen tener tablas. Hay materiales especiales para estas cosas, creo que el tungsteno se suele usar para resistencias de potencia; tambien hay combinaciones (aleaciones).

Teniendo tu resistencia (alambre) calculas la energía que disiparía con tu trafo; y con este dato puedes calcular cuanto calor obtienes. Lamentablemente en este tema ya no puedo ayudarte mucho, no tengo material a mano; pero consíguete un buen libro de electrotécnia...

Bueno, espero no haber confundido; y que esto poco te pueda ayudar en tu problema...

Saludos :hola:

219
Microcontroladores / Re: 16f84 Y Eeprom 24c08!..
« en: Viernes 9 de Diciembre de 2005, 07:04 »
Hola Andre52! Fijate que en el código que te pasé no utilizo la bandera de interrupción; recuerdo que traté de hacerlo con SSPIF, pero me dio problemas. Luego me funcionó sin utilizar este flag.
No te olvides de conectar una R de 10 K entre SDA y VCC, y otra entre SCL y VCC.
Bueno, más tarde me fijo más detenidamente tu código y vemos que pasa...
Saludos :hola:

220
Microcontroladores / Re: 16f84 Y Eeprom 24c08!..
« en: Jueves 8 de Diciembre de 2005, 00:41 »
Hola! No sabía que era tan urgente! Bueno, mañana es feriado (se me había pasado), asi que me hago un tiempito para dejarte algo de código para los MCU que tienen el modulo MSSP.

Código: Text
  1.  
  2. ;******************************************************************************
  3. ;  PLACA EXPERIMENTAL CON 16F873
  4. ;
  5. ; Autor: Hugo Rodolfo ERHARD
  6. ; Fecha: 06/03/05
  7. ;
  8. ;******************************************************************************
  9.   include "p16f873.h"
  10.   errorlevel -215, -302
  11.   __CONFIG 0x3D31
  12. ;
  13. M24C02  equ  b'10100000'&#59;
  14. ;
  15.   CBLOCK  0x22
  16. ; VARIABLES DE USO GENERAL
  17.   CNT      &#59; contador general
  18.   CNT1      &#59; contador general
  19.   COUNT      &#59;
  20.   COUNT01      &#59;
  21.   TMP      &#59; temporal general
  22.   PTR      &#59; puntero general
  23.   REG0
  24.   REG1
  25.   REG2
  26.   count
  27.   tmp_h
  28.   tmp_l
  29.   temp
  30.   I2C_cmd
  31.   I2C_adr
  32.   I2C_dat
  33.   I2C_aux
  34. ;
  35.   _070lim
  36. ;
  37.   ENDC
  38. ;
  39. #DEFINE  STR  PORTA,1  &#59;
  40. #DEFINE  DAT  PORTA,2  &#59;
  41. #DEFINE  CLK  PORTA,3  &#59;
  42. #DEFINE  LED  PORTA,4  &#59;
  43. #DEFINE  PS  PORTA,5  &#59;
  44. ;
  45. #DEFINE  RSDIS  PORTB,1  &#59;
  46. #DEFINE  EDIS  PORTB,3  &#59;
  47. ;
  48. #DEFINE  SCL  PORTC,4  &#59;
  49. #DEFINE  SDA  PORTC,3  &#59;
  50. #DEFINE  COMEN  PORTC,5  &#59;
  51. ;
  52. #DEFINE  I2CDO  I2CSTAT,6&#59;
  53. #DEFINE  I2CDI  I2CSTAT,7&#59;
  54. #DEFINE  I2CACKF  I2CSTAT,5&#59;
  55. ;
  56. ;
  57. ;******************************************************************************
  58. ;
  59.   ORG  0
  60. _POR
  61.   goto  MAIN  &#59;
  62. ;
  63.   ORG  4
  64. _ISR
  65.   movwf  SAVE_W  &#59; salvo W durante la interrupcion
  66.   swapf  STATUS,W&#59; cargo STATUS en W invirtiendo nibbles
  67.   movwf  SAVE_S  &#59; y salvo
  68.   clrf  STATUS  &#59; para asegurar que este en banco 0
  69. ;;  btfsc  TMR1IF  &#59; timer 1
  70. ;;  goto  TMR1_ISR&#59;
  71. ;;  btfsc  RCIF  &#59; USART Rx
  72. ;;  goto  RX485_ISR&#59;
  73. _NOISR
  74.   swapf  SAVE_S,W&#59; recupero STATUS invirtiendo nibbles
  75.   movwf  STATUS  &#59;
  76.   swapf  SAVE_W,F&#59; recupero W de esta manera para no afectar
  77.   swapf  SAVE_W,W&#59; los bits de STATUS
  78.   retfie      &#59;
  79. ;
  80. ;
  81. ;*****************************************************************************;
  82. ;  SUBRUTINAS VARIAS                 &#59;
  83. ;*****************************************************************************;
  84. ;
  85. I2C_IDLE
  86.   bsf  RP0
  87.   btfsc  SSPRW
  88.   goto  $-1
  89.   movfw  SSPCON2
  90.   andlw  0x1F
  91.   btfss  Z
  92.   goto  $-3
  93.   bcf  RP0
  94.   return
  95. ;
  96. ;
  97. I2C_START
  98.   bsf  RP0
  99.   bsf  SEN
  100.   btfsc  SEN
  101.   goto  $-1
  102.   bcf  RP0
  103.   return  
  104. ;
  105. ;
  106. I2C_WRITE
  107.   movwf  SSPBUF
  108.   bsf  RP0
  109.   btfsc  SSPRW
  110.   goto  $-1
  111.   btfsc  ACKSTAT
  112.   goto  $-1
  113.   bcf  RP0  
  114.   return
  115. ;
  116. ;
  117. I2C_READ
  118.   bsf  RP0
  119.   bsf  RCEN
  120.   btfsc  RCEN
  121.   goto  $-1
  122.   bcf  RP0
  123.   movfw  SSPBUF
  124.   return
  125. ;
  126. ;
  127. I2C_RESTART
  128.   bsf  RP0
  129.   bsf  RSEN
  130.   btfsc  RSEN
  131.   goto  $-1
  132.   bcf  RP0
  133.   return
  134. ;
  135. ;
  136. I2C_NOACK
  137.   bsf  RP0
  138.   bsf  ACKDAT
  139.   bsf  ACKEN
  140.   btfsc  ACKEN
  141.   goto  $-1
  142.   bcf  RP0
  143.   return
  144. ;
  145. ;
  146. I2C_STOP
  147.   bsf  RP0
  148.   bsf  PEN
  149.   btfsc  PEN
  150.   goto  $-1
  151.   bcf  RP0
  152.   return
  153. ;
  154. ;
  155. RD24C02
  156.   call  I2C_IDLE
  157.   call  I2C_START
  158. ;
  159.   movfw  I2C_cmd
  160.   call  I2C_WRITE
  161. ;
  162.   movfw  I2C_adr
  163.   call  I2C_WRITE
  164. ;
  165.   call  I2C_RESTART
  166. ;
  167.   movfw  I2C_cmd
  168.   iorlw  0x01
  169.   call  I2C_WRITE
  170.   call  I2C_READ
  171.   movwf  I2C_dat
  172. ;
  173.   call  I2C_NOACK
  174.   call  I2C_STOP
  175.   return
  176. ;
  177. ;*******************************************************************
  178. ;
  179. ;
  180. MAIN
  181.   bsf    RP0      &#59; banco 1
  182.   movlw  b'00000001'  &#59; puerto A
  183.   movwf  TRISA    &#59;
  184.   movlw  b'00000000'  &#59; puerto B
  185.   movwf  TRISB    &#59;
  186.   movlw  b'10011001'  &#59; puerto C
  187.   movwf  TRISC    &#59;
  188.   bcf  RP0    &#59; banco 0
  189.   clrf  PORTA    &#59; todas las salidas en 0
  190.   clrf  PORTB    &#59;
  191.   clrf  PORTC    &#59;
  192.   clrf  HOR    &#59;
  193.   clrf  MIN    &#59;
  194.   clrf  SEG    &#59;
  195. ;
  196. ; Configuro MSSP como i2c maestro
  197. ;
  198.   bsf  RP0    &#59;
  199.   movlw  0x09    &#59; velocidad 400 KHz
  200.   movwf  SSPADD    &#59;
  201.   movlw  b'10000000'  &#59; slew rate speed control enabled, niveles segun i2c
  202.   movwf  SSPSTAT    &#59;
  203.   movlw  b'00000000'  &#59;
  204.   movwf  SSPCON2    &#59;
  205.   bcf  RP0    &#59;
  206.   movlw  b'00111000'  &#59; i2c habilitado, modo maestro
  207.   movwf  SSPCON    &#59;
  208.   clrf  PIR1
  209.   clrf  PIR2
  210. ;
  211.   bsf  RP0    &#59;
  212.   movlw  b'00100001'  &#59; int timer 1
  213.   movwf  PIE1    &#59;
  214.   bcf  RP0
  215.   movlw  b'11000000'  &#59;
  216.   movwf  INTCON    &#59;
  217. ;
  218.   movlw  0xFF
  219.   movwf  I2C_aux
  220.   clrf  I2C_adr
  221.   clrf  I2C_dat
  222. ;
  223. MAIN_LOOP
  224. WAIT1i2c_wr
  225.   movlw  M24C02
  226.   movwf  I2C_cmd
  227.   movlw  .20
  228.   movwf  I2C_aux
  229.   clrf  I2C_adr
  230.   clrf  I2C_dat
  231. I2C_RLOOP
  232.   call  WR_OUT
  233.   movlw  M24C02
  234.   movwf  I2C_cmd
  235.   call  RD24C02
  236. ;
  237.   movlw  .1
  238.   movwf  DSEG
  239. WAIT1i2c
  240.   tstf  DSEG
  241.   bnz  WAIT1i2c
  242. ;
  243.   incf  I2C_adr,f
  244.   decfsz  I2C_aux,f
  245.   goto  I2C_RLOOP
  246. ;
  247.   movlw  .1
  248.   movwf  DSEG
  249. WAIT1S
  250.   tstf  DSEG
  251.   bnz  WAIT1S
  252.   goto  MAIN_LOOP
  253. ;
  254.   end
  255.  
  256.  

Quite algunas partes del programa, para que no se vea más complicado. Pero las rutinas y configuración de lo que es I2C está tal como lo usé.
Perdón por la falta de comentarios.
Con este código puedes leer una 24Cxx. Te aconsejo tener a mano la hoja de datos de los modulos MSSP.
Bueno, espero te sirva. Cualquier problema, aqui estoy!

Saludos

221
Microcontroladores / Re: 16f84 Y Eeprom 24c08!..
« en: Miércoles 7 de Diciembre de 2005, 06:48 »
Hola! No hay problema, pero tendrás que tenerme un poquito de paciencia, por lo menos hasta el sábado. Estoy con demasiado trabajo, y tengo que buscar el programa para enviartelo. En otra discución veo que quieres implementar el I2C con un 16F877; este micro ya tiene modulo I2C.
Asi que te pasaré el programa completo para emular I2C en un 16F84, y las rutinas para configurar este modulo en los micros que ya lo tienen.
Pero paciencia :) No prometo nada, pero si me da un tiempito en una de esas lo hago antes, pero no es promesa...
Saludos

222
Microcontroladores / Re: Medidor De Ph
« en: Lunes 28 de Noviembre de 2005, 18:43 »
Gracias muchachos! Muy interesantes los links, creo que me sirve.
La pregunta ahora es: que tipo de sensor o sonda se usa? Se debe comprar una, o es posible construirla mismo? En los links está el circuito, pero no encontré nada referido al sensor.
Disculpen mi ignorancia, pero es que nunca tuve buena "quimica" con la quimica :D

Boni, no me funcionó el link que has pasado :(

Bueno, muchisimas gracias!

Saludos :hola:

223
Microcontroladores / Medidor De Ph
« en: Domingo 27 de Noviembre de 2005, 21:36 »
Hola a todos!
Alguien tendría el esquemático de algún medidor de pH? No necesariamente tiene que ser con MCU, ya me encargaré de modificarlo... Tampoco tiene que ser muy preciso.
Desde ya las gracias a todos!

Saludos :hola:

224
Microcontroladores / Re: Sensor Ultrasonico
« en: Domingo 27 de Noviembre de 2005, 21:32 »
Hola Che Karlitos!
Fijate, en una de esas te sirve este link...

Ultrasonic Range Meter

Saludos! :hola:

225
Microcontroladores / Re: Sensor Ultrasonico
« en: Sábado 26 de Noviembre de 2005, 10:21 »
Hola! Lo más bien se puede hacer un medidor ultrasónico con MCU; como dice Jonathan, con 84 basta. Existen en el mercado transductores que operan a 40 KHz bastante económicos.
Debes enviar un pulso y esperar a que vuelva. El tiempo en volver, dividido por dos, lo usas para calcular la distancia. En realidad, debes esperar un tiempo, ya que puede ser que nunca vuelva el pulso :)
Lo que deberías tener en cuenta, es en que medio lo vas a usar. La velocidad del sonido se define para el vacio, lo que no varía mucho en el aire; pero sí se ve afectada cuando hay otros gases o particulas en suspención. Una vez tuve que poner a punto un medidor de este tipo para un silo de astillas de madera; fue un desastre :angry: En primer lugar, porque la superficie que se formaba no era plana; cuando se llenaba se formaba un cono hacia arriba, y al vaciarse un cono hacia abajo. Y en segundo lugar, la medida se veía afectada por las particulas de madera que "flotaban" en el aire.
Para líquidos, en general y si el líquido no genera gases, no hay problemas ya que la superficie siempre es plana. Si se generan gases, hay factores de correción para el calculo; y si la superficie no está en reposo (agitada, o con "olas") puedes hacer varias mediciones y promediar. Si es un tanque de agua, no debería haber problemas :)
Para líquidos, lo mejor es medir la presión en el fondo del tanque. Con este método se consiguen maravillas, pero no es nada económico...
Bueno, espero te sirva.
Saludos :hola:

Páginas: 1 ... 7 8 [9] 10 11 ... 13