Autor Tema: Contar 10 pulsos y encender led  (Leído 23065 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado morfeus

  • PIC12
  • **
  • Mensajes: 78
RE: Contar 10 pulsos y encender led
« Respuesta #90 en: 18 de Octubre de 2005, 22:20:00 »
Hola,

Debes desabilitar los comparadores con CMCON = 7 de esta manera no habra problema.


Saludos

morfeusSonrisa GiganteSonrisa Gigante

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
RE: Contar 10 pulsos y encender led
« Respuesta #91 en: 18 de Octubre de 2005, 22:27:00 »
Hola:

morfeus tiene reazon... debes desabilitar los comparadores y por lo del link subelo al almacen del foro que es esta la direccion:

http://miarroba.com/foros/ver.php?id=348538

Luego postea el link aqui y puede servir a todos...! Sonrisa Gigante

Desconectado batman123

  • Colaborador
  • PIC10
  • *****
  • Mensajes: 46
RE: Contar 10 pulsos y encender led
« Respuesta #92 en: 19 de Octubre de 2005, 09:34:00 »
morfeus tenias toda la razon ya me funciona a la perfeccion

me gustaria que me dieran otros comandos para otros parametros
por ejemplo como poner salidas dijitales, analogas, activar el comparador, etc


RebotadoESTE ES EL LINK`PARA EL ESQUEMA  LORDLAFEBRE.Rebotado

http://miarroba.com/foros/ver.php?foroid=348538&temaid=3740693
No hay cosas imposibles  si no hombres incapaces

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
RE: Contar 10 pulsos y encender led
« Respuesta #93 en: 19 de Octubre de 2005, 09:58:00 »
Hola:

Ya tengo el esquema lo voy a chequear, y por lo de digitalizar el puerto pues se lo hace con CMCON = 7, esa misma funcion sirve para los comparadores pero tendrias que reviasr el data del pic para que veas dependiendo que que valor asignes que funcion va a cumplir el puerto....

Desconectado morfeus

  • PIC12
  • **
  • Mensajes: 78
RE: Contar 10 pulsos y encender led
« Respuesta #94 en: 20 de Octubre de 2005, 18:17:00 »
Hola Lord,

Como te comenté quiero ponerle una eeprom externa al pic puede ser la 24lc08 o cualquier otra ya que como el pic va a estar trabajando continuamente y los valores en la eeprom tambien se van a cambiar continuamente no quiero que la memoria del pic se "achicharre" me puedes decir como hacerlo tomando como ejemplo tu codigo en la parte de abajo?.

Gracias por tu ayuda LordGiñoGiñoGiño


Saludos

morfeus

Escrito originalmente por LordLafebre
Hola:

Pues ya he acabado, funciona de la siguiente manera:

Con el pulsante en C0 se hace el conteo de pulsos.
Con el pulsante en C1 se ingresa al menu donde se puede seleccionar la cantidad de pulsos, los incrementos son de 1 en 1, para hacer estos incrementos se utiliza el pulsante en C2 y si supera los 25 se asignara siempre 10... una ves que se ha elegido la cantidad de pulsos se debe preionar nuevamente C1 para aceptar...

Codigo:
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 0
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 5
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 4

define OSC 4

Cont var byte
Cont1 var byte
Cont2 var byte
Cont4 var byte
temp var byte
aux var byte
E1   var byte

TRISC=%00001111


pause 250

gosub text_LCD

eeprom 0,[0]

read 0,temp

if temp=0 then grabarE1

read 2,cont

read 1,aux

lcdout $FE,$C0,dec3 cont

if cont >= aux then
    gosub EncenderLED
endif

loop:
"Aqui puedes generar el codigo para que incremente la variable E1
"y luego manda a guardar el dato en la eeprom
    if PORTC.1=0 then
        pause 250
        E1=0
        repeat
            config:
            lcdout $FE,1,"Config. Pulsos"
            lcdout $FE,$C0,#E1
            if PORTC.2=0 then
                e1=e1+1
                if E1>= 25 then
                    lcdout $FE,1,"Valor Superior"
                    lcdout $FE,$C0,"Se asignara 10"
                    E1=10
                    pause 2000
                endif
                pause 50
            endif
            pause 150
            low PORTC.7
        until PORTC.1=0
        aux=E1
        gosub grabar
        pause 500
        gosub text_LCD
        lcdout $FE,$C0,dec3 cont
    endif
"--------------------------------------------------------------------
    if PORTC.0=0 then
        cont=cont+1
        write 2,cont
        if cont >= aux then
            cont=aux
            gosub EncenderLED
        endif
        lcdout $FE,$C0,dec3 cont
        pause 200
    endif
goto loop
"-------------------------------------------------------
grabar:
    cont=0
    write 0,1
    write 1,aux
    write 2,cont
    return

grabarE1:
    e1=10 "valor por defecto
    goto config

EncenderLED:
    high PORTC.7
    read 1,E1
    cont=aux
    lcdout $FE,$C0,dec3 E1    
    return

text_LCD:
    LCDOUT $FE,1,"#01 #02 #03 #04"
    LCDOUT $FE,$C0,"000 000 000 000"
    return
end


Desconectado morfeus

  • PIC12
  • **
  • Mensajes: 78
RE: Contar 10 pulsos y encender led
« Respuesta #95 en: 20 de Octubre de 2005, 20:40:00 »
Hola batman123,

Voy a hacer las pruebas basado en tu ejemplo, estuve buscando informacion acerca de este tipo de memorias externas trabajando con picbasic pro pero no encontre nada.

Tengo varias memorias, la 24lc08, 24c05, 24c16 con alguna de estas debe funcionar me imagino.

Luego te cuento.

Un gran saludo

morfeusGiñoGiño

Desconectado morfeus

  • PIC12
  • **
  • Mensajes: 78
RE: Contar 10 pulsos y encender led
« Respuesta #96 en: 21 de Octubre de 2005, 06:44:00 »
Hola batman123,

Pues hasta el momento la eeprom externa no graba los datos, he mirado de una y otra forma pero no se porque nolo hace, ayer le pedi a Lord que me diera un ejemplo de como hacerlo ya que no hay nada concluyente sobre este tema en el foro. Si el nos colabora con un codigo que funcione estoy seguro que lograremos el cometido.

saludos


morfeusGiño

Desconectado batman123

  • Colaborador
  • PIC10
  • *****
  • Mensajes: 46
RE: Contar 10 pulsos y encender led
« Respuesta #97 en: 21 de Octubre de 2005, 08:56:00 »

mira morfeus las instrucciones para gravar la eprom estam bien porque
yo la he probado con un 16f84a que es el unico que tengo y me ha funcionado perfecto...

te voy a enviar un codigo basado en este pic para que lo prueves...

suerte............
No hay cosas imposibles  si no hombres incapaces

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
RE: Contar 10 pulsos y encender led
« Respuesta #98 en: 21 de Octubre de 2005, 11:16:00 »
Hola:

Pues el ejemplo de morfeus esta bien, no te olvides de alimentar la memoria, el pin 4 a gnd y el 8 a vcc.. otra cosa que no sistingo bien... el pin 7 es para hacer la memoria de lectura y escritura o solo lectura, si el pin 7 va a vcc es solo de lectura y si va a gnd es lectura/escritura trata poniendo el pin 7 a gnd.... y ensaya el codigo de batman...

Desconectado morfeus

  • PIC12
  • **
  • Mensajes: 78
RE: Contar 10 pulsos y encender led
« Respuesta #99 en: 21 de Octubre de 2005, 13:56:00 »
Hola,

Gracias a los dos por sus respuestas, anoche ensaye de mil formas con la eeprom externa y nada no me funciono voy a hacer el ensayo de nuevo a ver que pasa. Estuve leyendo algo sobre estas eeprom y dicen que los pines 1,2, y 3 deben ir a tierra y en otro articulo dicen que el pin 3 debe ir a vcc, en realidad ya no se que pensar porque batman me dice que ya lo ensayo y funciono.

Bueno amigos les comento luego lo que pude hacer.

saludos

morfeusVacilando

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
RE: Contar 10 pulsos y encender led
« Respuesta #100 en: 21 de Octubre de 2005, 14:05:00 »
Hola:

Conectalo asi:

el 1,2,3 y 4 a gnd el el 5 señal de reloj, pin 6 pin de datos el 7 a gnd para que sea lectura/escritura y el 8 a vcc....

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
RE: Contar 10 pulsos y encender led
« Respuesta #101 en: 21 de Octubre de 2005, 14:42:00 »
Hola:

Prueba con este codigo y este esquema a mi me funciona bien:



Codigo:
   ;Programa para grabar y leer una memoria serial 24LCxx
Define  I2C_SCLOUT      1       ;No es necesario resistencia pull-up en SCL

contro  CON %10100000      ;contro contiene valor constante %10100000
PinSCL  Var Portb.7                 ;pin señal de reloj I2C
PinSDA  Var Portb.6                 ;pin de datos I2C
dato    VAR BYTE                 ;variable para almacenar dato leído

Inicio:
LCDOUT $fe,1," Grabando..."             ;limpiar y sacar el texto
PAUSE 1000

I2CWRITE PinSDA,PinSCL,contro,0,["H"]  ;guarda la H en posición 0
PAUSE 10                               ;pause para la grabación
I2CWRITE PinSDA,PinSCL,contro,1,["O"]  ;guarda la O en posición 1
PAUSE 10                               ;pause para la grabación
I2CWRITE PinSDA,PinSCL,contro,2,["L"]  ;guarda la L en posición 2
PAUSE 10                               ;pause para la grabación
I2CWRITE PinSDA,PinSCL,contro,3,["A"]  ;guarda la A en posición 3
PAUSE 10                               ;pause para la grabación

LCDOUT $fe,1,"Leer memoria"            ;limpiar y sacar el texto
PAUSE 1000
LCDOUT $FE,1                          ;limpiar pantalla del LCD

leer:                                 ;programa para leer memoria s.
I2CREAD PinSDA,PinSCL,contro,0,[dato]  ;leer la mem. 0 y guardar en dato
    LCDOUT ,dato                     ;mostrar dato en el LCD
    PAUSE 1000                         ;esperar 1 seg.
I2CREAD PinSDA,PinSCL,contro,1,[dato]  ;leer la mem. 1 y guardar en dato
    LCDOUT ,dato                     ;mostrar dato en el LCD
    PAUSE 1000                         ;esperar 1 seg.
I2CREAD PinSDA,PinSCL,contro,2,[dato]  ;leer la mem. 2 y guardar en dato
    LCDOUT ,dato                     ;mostrar dato en el LCD
    PAUSE 1000                         ;esperar 1 seg.
I2CREAD PinSDA,PinSCL,contro,3,[dato]  ;leer la mem. 3 y guardar en dato
    LCDOUT ,dato                     ;mostrar dato en el LCD

End


Es de un libro que tengo... SUERTE...!

Desconectado morfeus

  • PIC12
  • **
  • Mensajes: 78
RE: Contar 10 pulsos y encender led
« Respuesta #102 en: 21 de Octubre de 2005, 15:37:00 »
Hola Lord,

Te comento que funciona muy bien el codigo, entonces el que tiene problemas es el anterior debe ser alguna linea mal escrita o mal ubicada lo voy a analizar para ver donde se encuentra el error. Ademas funciona muy bien con la 24c05 y la 24c16 sin ningún problema.

Ahora mismo me pongo a examinar el codigo.

Saludos

morfeus

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
RE: Contar 10 pulsos y encender led
« Respuesta #103 en: 21 de Octubre de 2005, 17:10:00 »
Hola:

Morfeus utiliza este mismo tipo de conexion con el ejemplo de batman123... si no funciona quiere decir que hay algun problema en el codigo de el, si funciona debe ser por un error en el circuito, como digo vi que el pin 7 va a vcc y cuando esta en vcc es solo de lectura por ende que no podras escribir, encambio en el ejemplo que te puse va a gnd y asi funciona como lectura/escritura...


Desconectado batman123

  • Colaborador
  • PIC10
  • *****
  • Mensajes: 46
RE: Contar 10 pulsos y encender led
« Respuesta #104 en: 22 de Octubre de 2005, 10:50:00 »
loard tiene toda la razon ..  
en mi ejemplo hay dos problemas.
1. el de software ya que en el comando de escritura y lectura me falto el codigo de control   mira:
  la linea son asi:
I2Cread porta.0,porta.1,10, numero1
pero la linea correcta debe ser asi:
I2CWRITE porta.0,porta.1,%10100000 ,10,numero1
falto la orden de control.
2 y el otro problema es lo que comenta lord respecto a la memoria
"el pin 7 va a vcc y cuando esta en vcc es solo de lectura por ende que no podras escribir, encambio en el ejemplo que te puse va a gnd y asi funciona como lectura/escritura... "
 
No hay cosas imposibles  si no hombres incapaces


 

anything