Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?
24/04/2012 #1901


amigo ludbeck me imagino que ese DCD=DEC verdad?
24/04/2012 #1902


amigo ludbeck me imagino que ese DCD=DEC verdad?
no... DCD mete un 1 segun la posicion que indiques digamos DCD 2 pone 00000100

en este caso metemos DCD B0 donde B0 es el valor del rele y lo agregamos al valor del puerto A, y se reduce un buen el codigo
24/04/2012 #1903

Avatar de reyvilla

Muy bueno ese también, Aunque si el dato que llega a B0 es otro activa otra cosa seria lo unico, aunque esta genial porque como indicas reduce bastante el código buena esa
24/04/2012 #1904


muy ingenioso ludbeck, muy buen aporte, la pregunta es la siguiente, para mi caso como utlizo el 628A los puertos A.6 y A.7 son para el oscilador, no le afectará a este que esos puesrtos cambien de estado? porque por lo que veo se va a utlizar todo el puerto A.

tambien habria que probarle poniendo no en orden logico osea no partiendo de ACTIVAR 0 sino de cualquier rele osea un ACTIVAR 4 para que se active solo el 4 y no los demas, osea en desorden si permite eso?
24/04/2012 #1905


Rey....
no, si no llega de 0 a 7 no creo que haga nada con los reles... no lo he probado... pero no puede ser, ademas de que el RA5 no funcionaria porque ese es solo de entrada..

por otro lado se pude poner un limitador como:
If B0>7 then Goto inicio

despues de la linea de recepcion... pero bueno es otra de tantas maneras de hacerlo...
24/04/2012 #1906


tienes toda la razon ludbeck hay miles de caminos para el mismo fin
24/04/2012 #1907

Avatar de reyvilla

Si y tienes razon solo funciona del 0 al 5 pero como 0 no forma parte seria
If B0=0 and B0>7 then Goto inicio
24/04/2012 #1908


pero hay otra cosa q estamos olvidando que si yo activo el rele 4 por ejm debe llegarme un SMS que el rele 4 esta activado o desactivado segun sea el caso, por para el ejm de ludbeck solo salta a la siguiente linea que corresponde al SMS de "R1 activado"por lo tant tendiamos que direccionar con un goto o gosub a cualquier subrutina que contenga los mensajes de confirmacion
24/04/2012 #1909


bueno es que ahi ya tendrias que pensar que y que va a hacer el micro... como Activar o Desactivar, y pues ya no seria lo mismo... osea la idea en general si pero con modificaciones como mas parametros para decir si es para activar o desactivar, consulta de estado, etc...

bueno tienes un largo camino por recorrer... y yo ya me voy a la camita...

buenas noches... a ambos....
24/04/2012 #1910


listo amigo ludbeck lo importante esq la idea base ya esta lo demas viene por añadidura, buena noche
25/04/2012 #1911

Avatar de reyvilla

Mañana continuo por aca mucho éxito amigos buenas noches
25/04/2012 #1912


buenas noches amigo
25/04/2012 #1913


Alguien me puede ayudar es con un programa en PROTON que es muy similar a PBP

El tema es asi es un control remoto, quiero que este en modo sleep hasta que aprete un boton, tengo 3 botones en GP1, GP4 y GP5


Device 12F683
Config INTRC_OSC_NOCLKOUT,WDT_OFF,MCLRE_OFF,CP_Off,PWRTE_ ON
All_Digital=True ' Coloca todo los pines como digitales (PBP alldigital)

Include "modedefs.bas"
TRISIO = %11111010 ;Pongo todo como entrada menos gpio.0 y gpio.2
CMCON0 = 7 ;12f683 Analog comparators off (en 12f629 es CMCON = 7)
GPIO = 0 ;apaga todas las salidas

TRISIO.2 = 0 ' CCP1 (GPIO.2 = Output)
PR2 = 25 ' Set PWM Period for approx 38KHz
CCPR1L = 13 ' Set PWM Duty-Cycle to 50%
CCP1CON = %00001100 ' Mode select = PWM
T2CON = %00000100 ' Timer2 ON + 1:1 prescfale


INTCON.7 = 1 ' Turn Off global interrupts
INTCON.3 = 1 ' Enable PortB[4..7] interrupt

start:

INTCON.0 = 0 ' Clear the PortB[4..7] interrupt flag
Sleep

If GPIO.5 = 1 Then
SerOut GPIO.0,N1200,[$FF,$FF,"12345","A","1"] ;Envia con la clave 12345 y el dato A
High GPIO.0 : DelayMS 4000
GoTo start
EndIf

If GPIO.4 = 1 Then
SerOut GPIO.0,N1200,[$FF,$FF,"12345","B"] ;Envia con la clave 12345 y el dato A
High GPIO.0 : DelayMS 4000
GoTo start
EndIf

If GPIO.3 = 1 Then
SerOut GPIO.0,T1200,[$FF,$FF,"12345","C"] ;Envia con la clave 12345 y el dato A
High GPIO.0 : DelayMS 4000
GoTo start
EndIf

If GPIO.1 = 1 Then
SerOut GPIO.0,N1200,[$FF,$FF,"12345","C"] ;Envia con la clave 12345 y el dato A
High GPIO.0 : DelayMS 4000
GoTo start
EndIf

GoTo start
El programa anda perfecto si borro la instruccion "sleep" pero si la dejo no se despierta nuncaaa
25/04/2012 #1914


mmm primero... para que quieres que se "duerma"???? si es para bajar el consumo, date cuenta que un micro consume algo asi como 20mA, digamos en stanby... lo de dos LEds... es mmuy poco...
25/04/2012 #1915


lubeck dijo: Ver Mensaje
mmm primero... para que quieres que se "duerma"???? si es para bajar el consumo, date cuenta que un micro consume algo asi como 20mA, digamos en stanby... lo de dos LEds... es mmuy poco...
Es un control remoto con una pilita CR2032 (d eunos 230mAh), por eso tiene que consumir muy poco en reposo tiene que durar mucho tiempo
25/04/2012 #1916


ya probaste poner Sleep 10

donde 10 es la duracion que esta dormido...

o la funcion NAP
25/04/2012 #1917

Avatar de J2C

Biker2k3

biker2k3 dijo: Ver Mensaje
..... El programa anda perfecto si borro la instruccion "sleep" pero si la dejo no se despierta nuncaaa
En PROTON+ Compiler Development Suite debes utilizar la sentencia:

Código:
 
SLEEP [tiempo]
Que encontraras en la página 371 de 405 del archivo Proton Users Guide.
donde tiempo es un número de 1 a 65535 y donde cada unidad representa 1 seg. Esta función en PROTON+ usa el WatchDogTimer que tu has deshabilitado.


También puedes utilizar la función Sleep directamente en ASM colocada dentro de tu programa en PROTON de la siguiente manera:

Código:
 
ASM
[label] SLEEP
ENDASM
Para lo cual deberas leer en la Datasheet del Pic12F683 la página N° 110 de 176.

El Proton+ no soporta la función NAP que posee el PicBasicPro que además solo coloca al Pic en Sleep por un maximo de 2,304 Segundos (menos de 2 seg. y medio).



Saludos, JuanKa.-
25/04/2012 #1918


reyvilla dijo: Ver Mensaje
Mañana continuo por aca mucho éxito amigos buenas noches
Hola amigo Reyvilla retomando lo de ayer he avanzado en el codigo, bueno el problemita que tengo esque tengo que poner algunos enter para que se active o desactive el rele, puesto que como esta en la línea del SERIN2 pongo un pause de 100ms y luego de eso que vaya al otro SERIN2, por lo tanto como esta en ese bucle, si el rele esta desactivado yo pongo "Activar R1" y si no cae justo en la linea que contiene esa palabra toca volver a enviar osea teclear enter.

Por otro lado vi que ya no es necesario poner la instruccion SKIP, puesto que con el WAIT es mas q suficiente.

Si puedes revisale y simulale por favor y me comentas que paso.

Código:
include "modedefs.bas"
DEFINE OSC 4
CMCON=7
TRISA = %00000000 'todo el puerto a como salida
TRISB = %00000001 'todo el puerto b como salida menor portb.0 es entrada
SYMBOL REL1 = PORTA.0
SYMBOL REL2 = PORTA.1
SYMBOL REL3 = PORTA.2
SYMBOL REL4 = PORTA.3
SYMBOL REL5 = PORTA.4
SYMBOL REL6 = PORTA.5

SYMBOL RX = PORTB.0   'RX ENTRADA 
SYMBOL TX = PORTB.1   'TX SALIDA
B0 VAR BYTE
B1 VAR BYTE
;TX = 1
'serout2 Tx,16780,[13] 'ponle esta linea tambien

INICIO:
    GOTO ACTIVAR

ACTIVAR:
    SerIn2 tX,16468,100,DESACTIVAR,[WAIT("Activar R"),DEC B0]
    
    SELECT CASE B0

        CASE 0
            serout2 RX,16468,["ERROR DE COMANDO"]
            GOTO INICIO

        CASE 1
            HIGH REL1
            PAUSE 1000
            GOTO ENVIAR1
            GOTO INICIO

        CASE 2
            HIGH REL2
            PAUSE 1000
            GOTO ENVIAR2
            GOTO INICIO

        CASE 3
            HIGH REL3
            PAUSE 1000
            GOTO ENVIAR3
            GOTO INICIO
    end select
    GOTO INICIO
    
DESACTIVAR:
    SerIn2 tX,16468,100,INICIO,[WAIT("Desactivar R"),DEC B1]  
    
    SELECT CASE B1

        CASE 0
            serout2 RX,16468,["ERROR DE COMANDO"]
            GOTO INICIO

        CASE 1
            LOW REL1
            PAUSE 1000
            GOTO DESACTIVAR1
            GOTO INICIO

        CASE 2
            LOW REL2
            PAUSE 1000
            GOTO DESACTIVAR2
            GOTO INICIO

        CASE 3
            LOW REL3
            PAUSE 1000
            GOTO DESACTIVAR3
            GOTO INICIO
    end select
    GOTO INICIO

ENVIAR1:
    serout2 RX,16468,["AT+CMGF = ",#B0,13]
    PAUSE 1000
    serout2 RX,16468,["AT+CMGS=",34,"092661649",34,13]
    PAUSE 1000
    SEROUT2 RX,16468,["R1 activado ",#B0,26]
    GOTO INICIO
    
ENVIAR2:
    serout2 RX,16468,["AT+CMGF = ",#B0,13]
    PAUSE 1000
    serout2 RX,16468,["AT+CMGS=",34,"092661649",34,13]
    PAUSE 1000
    SEROUT2 RX,16468,["R2 activado ",#B0,26]
    GOTO INICIO
    
ENVIAR3:
    serout2 RX,16468,["AT+CMGF = ",#B0,13]
    PAUSE 1000
    serout2 RX,16468,["AT+CMGS=",34,"092661649",34,13]
    PAUSE 1000
    SEROUT2 RX,16468,["R3 activado ",#B0,26]
    GOTO INICIO
    
DESACTIVAR1:
    serout2 RX,16468,["AT+CMGF = ",#B0,13]
    PAUSE 1000
    serout2 RX,16468,["AT+CMGS=",34,"092661649",34,13]
    PAUSE 1000
    SEROUT2 RX,16468,["R1 desactivado ",#B0,26]
    GOTO INICIO
    
DESACTIVAR2:
    serout2 RX,16468,["AT+CMGF = ",#B0,13]
    PAUSE 1000
    serout2 RX,16468,["AT+CMGS=",34,"092661649",34,13]
    PAUSE 1000
    SEROUT2 RX,16468,["R2 desactivado ",#B0,26]
    GOTO INICIO
    
DESACTIVAR3:
    serout2 RX,16468,["AT+CMGF = ",#B0,13]
    PAUSE 1000
    serout2 RX,16468,["AT+CMGS=",34,"092661649",34,13]
    PAUSE 1000
    SEROUT2 RX,16468,["R3 desactivado ",#B0,26]
    GOTO INICIO
Amigo ludbeck si puedes revisale este codigo.

gracias
25/04/2012 #1919


El Proton+ no soporta la función NAP que posee el PicBasicPro que además solo coloca al Pic en Sleep por un maximo de 2,304 Segundos (menos de 2 seg. y medio).
oki.... no sabia eso... casi proton no lo he usado... estaba adivinando, como dicen "quien quite es chicle y pega"

Gracias por la aclaracion JuanKa....

Pull

mmmm... como que no me agrada mucho ese codigo... donde entra al bucle "desactivar"????
25/04/2012 #1920


Si amigo creeme que a mi tampoco me agrada mucho q digamos, sucede que esta en un bucle entre el primero serin2 y el segundo serin2 puesto que: SERIN2 RX,16468,100,DESACTIVAR,[WAIT("Activar R"),DEC B0], osea si no ve la palabra "Activar R", pasa a DESACTIVAR en la cual esta contenido el: SerIn2 tX,16468,100,INICIO,[WAIT("Desactivar R"),DEC B1], SI no recibe la palabra "Desactivar R" vuelve a inicio, y asi se mantiene hasta que vea una de esas dos palabras
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.