Recibir SerIn Con proton en 12f683

Hola tengo un pequeño problema, pase un programa de PBP a Proton y no logro que me funcione el Serin.

Basicamente la linea de codigo que use para recibir es la siguiente...

En PBP:
serin gpio.5,n1200,10000,alarma,["12345"],b1

En Proton:
SerIn GPIO.5 ,N1200 , 10000 , alarma,[Wait("12345") , b1]


Lo que hace el programa es esperar 10 segundos por el codigo "12345" si lo recibe guarda el siguiente byte en "b1" y si no lo recibe en 10 segundos se activa la alarma.
El dato que envio es "H", si programo el pic con el programa en PBP anda bien, pero programo el que hago en Proton y no anda :S.

Device 12F683
Xtal = 4
All_Digital=True ' Coloca todo los pines como digitales (PBP alldigital)
Include "MODEDEFS.BAS"
TRISIO = %00100001 ;Pongo todo como salida menos gpio.0 ygpio.5
ANSEL = %00000000 ; Todas entradas digitales
CMCON0 = 7 ; Analog comparators off
GPIO = 0




;################################# RECEPTOR ##################################
b1 var Byte

inicio:
;puerto,velocidad,si pasan 10segundos..,va a "alarma,[Clave para aceptar datos], guarda datos en b1

SerIn GPIO.5 ,N1200 , 10000 , alarma,[Wait("12345") , b1]
If b1 = "H" Then ;Si recibe una "H" esta todo bien
Low GPIO.1 ;Apaga GPIO.1
SerOut GPIO.0,N2400,[13,10,"Llego","-Bien"]
GoTo inicio
Else
GoTo inicio
EndIf

alarma:
High GPIO.1 ;Prende GPIO.1
SerOut GPIO.0,N2400,[13,10,"ALARMA"," ALARMA"]
DelayMS 200
GoTo inicio
 
Última edición:
Hola.....No puedes usar el GPIO.5 por que declaraste XTAL y el mismo va instalado entre el GPIO.4 y el GPIO.5 así que te quedan fuera de la posibilidad de utilizarlos .... te sugiero que veas la HELP el comando SEROUT y me parece que lo que quisiste hacer es algo asi:

Device = 12F683
Config __31C1h
Xtal = 4
All_Digital=True ' Coloca todo los pines como digitales (PBP alldigital)
Include "MODEDEFS.BAS"
TRISIO = %101 ;Pongo como entradas gpio.0 y gpio.2 y salida gpio.1
ANSEL = %00000000 ; Todas entradas digitales
CMCON0 = 7 ; Analog comparators off
GPIO = 0



;################################# RECEPTOR ##################################
b1 var Byte

inicio:
;puerto,velocidad,si pasan 10segundos..,va a "alarma,[Clave para aceptar datos], guarda datos en b1

SerIn GPIO.2 ,813, 10000 , alarma,[Wait("12345") , b1] '1200 8b Invertido , para 2400 396 Inver
If b1 = "H" Xor b1= "h" Then ;Si recibe una "H" esta todo bien
Low GPIO.1 ;Apaga GPIO.1
SerOut GPIO.0 ,813,[13,"Llego","-Bien",10,13] '1200 8b invertido ,para 2400 396 Inver
GoTo inicio
Else
GoTo inicio
EndIf

alarma:
High GPIO.1 ;Prende GPIO.1
SerOut GPIO.0,813,["ALARMA"," ALARMA",10,13]
DelayMS 200
GoTo inicio

----------------


Saludos.

Ric.
 
Última edición:
Hola.....No puedes usar el GPIO.5 por que declaraste XTAL y el mismo va instalado entre el GPIO.4 y el GPIO.5 así que te quedan fuera de la posibilidad de utilizarlos .... te sugiero que veas la HELP el comando SEROUT y me parece que lo que quisiste hacer es algo asi:

Device = 12F683
Config __31C1h
Xtal = 4
All_Digital=True ' Coloca todo los pines como digitales (PBP alldigital)
Include "MODEDEFS.BAS"
TRISIO = %101 ;Pongo como entradas gpio.0 y gpio.2 y salida gpio.1
ANSEL = %00000000 ; Todas entradas digitales
CMCON0 = 7 ; Analog comparators off
GPIO = 0



;################################# RECEPTOR ##################################
b1 var Byte

inicio:
;puerto,velocidad,si pasan 10segundos..,va a "alarma,[Clave para aceptar datos], guarda datos en b1

SerIn GPIO.2 ,813, 10000 , alarma,[Wait("12345") , b1] '1200 8b Invertido , para 2400 396 Inver
If b1 = "H" Xor b1= "h" Then ;Si recibe una "H" esta todo bien
Low GPIO.1 ;Apaga GPIO.1
SerOut GPIO.0 ,813,[13,"Llego","-Bien",10,13] '1200 8b invertido ,para 2400 396 Inver
GoTo inicio
Else
GoTo inicio
EndIf

alarma:
High GPIO.1 ;Prende GPIO.1
SerOut GPIO.0,813,["ALARMA"," ALARMA",10,13]
DelayMS 200
GoTo inicio

----------------


Saludos.

Ric.



Muchisimasss gracias por la ayuda ricbevi, pasa que yo estaba usando el oscilador interno, pero no lo habia configurado, lo resolvi poniendo la configuracion asi

Device = 12F683
Config INTRC_OSC_NOCLKOUT,WDT_OFF,MCLRE_OFF,CP_Off,PWRTE_ON
Xtal = 4
 
Muchisimasss gracias por la ayuda ricbevi, pasa que yo estaba usando el oscilador interno, pero no lo habia configurado, lo resolvi poniendo la configuracion asi

Device = 12F683
Config INTRC_OSC_NOCLKOUT,WDT_OFF,MCLRE_OFF,CP_Off,PWRTE_ON
Xtal = 4

Lo que me hizo suponer que utilizabas XTAL era la declaración Xtal=4 que alude al HARWARE UTILIZO "Cristal de Cuarzo de 4Mhz" externo si utilizas el oscilador interno creo que no va ya que es contradictoria con la declaración que haces en el config.....puede ser que funcione igual pero no es lo correcto. Ese PIC tiene el oscilador interno configurado por defecto en 4Mhz y si quieres cambiarlo tienes que acceder al registro de configuración del oscilador no conozco si hay una instrucción en el Basic que lo haga.
En cuanto a la declaración en el Config que yo utilice 31C1h es equivalente a
Config XT_OSC,WDT_OFF, BODEN_ON, CP_OFF,PWRTE_ON,MCLRE_OFF,CDP_OFF

ya que tu declarabas Xtal=4 en el programa original.

Ric.
 
Última edición:
Claro cuando me dijiste que no podia usar GPIO.5 por que declare XTAL que va entre GPIO.4 y el GPIO.5, ahi me di cuenta que lo habia configurado como si tuviera cristal externo. Ahora anda joya gracias. Ah el 12f683 creo que se puede usar a 4Mhz o 8Mhz con el oscilador interno pero no se ni probe configurarlo porque con que ande a 4 me alcanza para este proyecto. Gracias por la ayuda
 
Claro cuando me dijiste que no podia usar GPIO.5 por que declare XTAL que va entre GPIO.4 y el GPIO.5, ahi me di cuenta que lo habia configurado como si tuviera cristal externo. Ahora anda joya gracias. Ah el 12f683 creo que se puede usar a 4Mhz o 8Mhz con el oscilador interno pero no se ni probe configurarlo porque con que ande a 4 me alcanza para este proyecto. Gracias por la ayuda


Según la hoja de datos tiene todas estas posibilidades de configuración de frecuencia de salida que están en esta figura que adjunto y por defecto en alimentación estándar es 4Mhz.

Ric.
 

Adjuntos

  • Osc12F873.jpg
    Osc12F873.jpg
    37.2 KB · Visitas: 19
Hola.....No puedes usar el GPIO.5 por que declaraste XTAL y el mismo va instalado entre el GPIO.4 y el GPIO.5 así que te quedan fuera de la posibilidad de utilizarlos .... te sugiero que veas la HELP el comando SEROUT y me parece que lo que quisiste hacer es algo asi:

Device = 12F683
Config __31C1h
Xtal = 4
All_Digital=True ' Coloca todo los pines como digitales (PBP alldigital)
Include "MODEDEFS.BAS"
TRISIO = %101 ;Pongo como entradas gpio.0 y gpio.2 y salida gpio.1
ANSEL = %00000000 ; Todas entradas digitales
CMCON0 = 7 ; Analog comparators off
GPIO = 0



;################################# RECEPTOR ##################################
b1 var Byte

inicio:
;puerto,velocidad,si pasan 10segundos..,va a "alarma,[Clave para aceptar datos], guarda datos en b1

SerIn GPIO.2 ,813, 10000 , alarma,[Wait("12345") , b1] '1200 8b Invertido , para 2400 396 Inver
If b1 = "H" Xor b1= "h" Then ;Si recibe una "H" esta todo bien
Low GPIO.1 ;Apaga GPIO.1
SerOut GPIO.0 ,813,[13,"Llego","-Bien",10,13] '1200 8b invertido ,para 2400 396 Inver
GoTo inicio
Else
GoTo inicio
EndIf

alarma:
High GPIO.1 ;Prende GPIO.1
SerOut GPIO.0,813,["ALARMA"," ALARMA",10,13]
DelayMS 200
GoTo inicio

----------------


Saludos.

Ric.

recibe un saludo, en la publicacion haces referencia al envio de datos con el compilador basic de "proton", utilizas la instrcion -SerIn y SerOut- y veo que dentro de la instrccion pones el numero 813 para determinar la velocidad en baudios, es decir algo asi,
-- SERIN PORTC.7,813,[DATO] --

me puedes auxiliar como hago para determinar una velocidad en baudios de 9600 con un cristal de 20 mhz...

de antemano gracias, y que tengas un buen dia.
 
Atrás
Arriba