Autor Tema: mandar AT en ensamblador desde pic  (Leído 4085 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado ceuti

  • PIC10
  • *
  • Mensajes: 15
mandar AT en ensamblador desde pic
« en: 06 de Diciembre de 2006, 21:17:10 »
Hola chicos. He estado buscando algun ejemplo de como usar los comandos AT con el pic para mandarlo al modem y no lo he encontrado.

El modem en concreto es un GR47. ¿Se haria de esta manera?

movlw "+CGDCONT= 1, “IP”,”APN” ,0  ,0"
movwf TXREG

La verdad que se me antoja raro el introducir toda esa cadena en un registro de 8 bits.


Aprovechando este hilo y para el mismo proyecto. ¿Se puede despertar al PIC cuando finaliza una recepción de la USART sin tener habilitada dicha  interrupción?
¿El contador TMR0 con reloj externo funciona durante el sleep?
« Última modificación: 06 de Diciembre de 2006, 22:15:52 por ceuti »

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: mandar AT en ensamblador desde pic
« Respuesta #1 en: 07 de Diciembre de 2006, 23:58:00 »
Hola chicos. He estado buscando algun ejemplo de como usar los comandos AT con el pic para mandarlo al modem y no lo he encontrado.

El modem en concreto es un GR47. ¿Se haria de esta manera?

movlw "+CGDCONT= 1, “IP”,”APN” ,0  ,0"
movwf TXREG

La verdad que se me antoja raro el introducir toda esa cadena en un registro de 8 bits.

Si pones eso al ensamblar seguramente aparezca el "ERROR: Expecting a single character" o algo asi.

Podrias generar una tabla e ir recorriendola  enviando cada caracter por vez.

Aprovechando este hilo y para el mismo proyecto. ¿Se puede despertar al PIC cuando finaliza una recepción de la USART sin tener habilitada dicha  interrupción?

Si no la tenes habilitada esa interrupcion o a la interrupcion global(GIE), se va a setear el flag de recepcion por USART, pero si el PIC estaba durmiendo no se va a despertar por ese motivo.

¿El contador TMR0 con reloj externo funciona durante el sleep?

Citar
The TMR0 interrupt cannot awaken the processor from Sleep since the timer is shut-off during Sleep.

Según leo en el datasheet de los 16F87XX el TMR0 es desactivado durante el sleep.
Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado ceuti

  • PIC10
  • *
  • Mensajes: 15
Re: mandar AT en ensamblador desde pic
« Respuesta #2 en: 08 de Diciembre de 2006, 06:36:50 »
Muchas gracias brunof.  Lo de la interrupción con el TMR0 en modo sleep me referia funcionando este como contador con un reloj externo

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: mandar AT en ensamblador desde pic
« Respuesta #3 en: 08 de Diciembre de 2006, 07:24:30 »
Hola.
Si. Entendí lo que escribiste.

Tal cual lo dice el datasheet, el Timer0 se deshabilita durante el sleep. Por lo que no habría diferencia entre usar contador interno o externo. De ambas formas, el timer está deshabilitado por lo que no va a producir la interrupción.

Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado pikman

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 675
Re: mandar AT en ensamblador desde pic
« Respuesta #4 en: 09 de Diciembre de 2006, 00:10:25 »
El timer0 puede programarse para que sea incrementado por pulsos externos, por lo tanto a lo que se refiere el ds es que no sera incrementado en modo sleep, porque en ese modo no hay clock, pero no hay clock generado en el micro, ahora bien, no veo la razon para que no se imcremente externamente en modo sleep, y si se programa la interrupcion del tmr0 cuando este pase de FF a 0, sacacara de modo sleep al micro, hasta que este encuentre otra instruccion que lo 'duerma', especificamente no he usado el tmr0 pero si el tmr1 con un oscilador de 32768KHZ, como este es un timer de 16 bits (0xFFFF), se pueden conseguir retardodos de hasta 2 segundos, que fue lo que yo estoy usando, osea, despierto el micro cada 2 segundos, reviso si hayque hacer algo y si no lo pongo a dormir, con esto conseguir ahorrar energia pues es una aplicacion con baterias.
Por lo que si no funciona el trm0 ( no se incrementa ni con pulsos externos ) en modo sleep
una alternativa es usar el tmr1 y ademas podes contar eventos hasta 65535 y que se produca la interrupcion, bueno espero que te aclare tus dudas.



saludos
PikMan

Desconectado ceuti

  • PIC10
  • *
  • Mensajes: 15
Re: mandar AT en ensamblador desde pic
« Respuesta #5 en: 13 de Diciembre de 2006, 16:26:00 »


Muchas gracias a los 2.

Otra consultilla podrias pasarme un ejemplo de como usar los comando AT en esamblador  o de como se genera la tabla que comenta BrunoF.

Veo que en el foro hay muchos ejemplos en C pero por mas que busco no soy capaz de encontrar ninguno en esamblador y excepto este pequeño detalle de los comandos AT ya tengo casi listo el programa asi que me come la moral el tener que rehacerlo todo en C.

Gracias.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: mandar AT en ensamblador desde pic
« Respuesta #6 en: 13 de Diciembre de 2006, 16:54:42 »
Hola.

Para enviar una cadena en asm podrias hacer asi:

Código: [Seleccionar]
EnviaTabla1
movlw FINTABLA1-TABLA1-1
movwf Contador
clrf Recorre
NextChar
movf Recorre,w
call TABLA1
movwf TXREG
;Esperar flag de envio completado(falta ponerlo)

incf Recorre,F
decfsz Contador,F
goto NextChar

return

TABLA1
addwf PCL,F
dt "+CGDCONT= 1, “IP”,”APN” ,0  ,0"
FINTABLA1

Fijate en el almacen de assembler que Maunix y yo hemos publicado muchos métodos para gestionar multiples tablas.

PD. La TABLA1 del ejemplo debe estar ubicada en las primeras 256 primeras posiciones de la FLASH del PIC.Si no fuese asi te paso un ejemplo de como variaria el codigo

Código: [Seleccionar]
EnviaTabla1
movlw FINTABLA1-TABLA1-1
movwf Contador
clrf Recorre
NextChar
                PAGESELW TABLA1
                movwf       PCLATH
movf Recorre,w
call TABLA1
movwf TXREG
;Esperar flag de envio completado(falta ponerlo)

incf Recorre,F
decfsz Contador,F
goto NextChar

return

                org 0x100
TABLA1
addwf PCL,F
dt "+CGDCONT= 1, “IP”,”APN” ,0  ,0"
FINTABLA1

Saludos
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado galilelo

  • PIC10
  • *
  • Mensajes: 5
Re: mandar AT en ensamblador desde pic
« Respuesta #7 en: 03 de Agosto de 2007, 19:37:56 »
Buenas a todos una pregunta como haria el proceso inverso??? es decir como recibiria desde el celular o modem GSM al pic , por ejemplo si el pic envia un sms a traves de un celular a otro celular el cual maneja un usuario un mensaje de que la luz de una habitacion esta encendida y el usuario responde con un sms con una especie de comando que diga algo como "off" el celular o modem GSM recibe este mensaje pero como haria el pic para saber la respuesta o interpretarla y ejecutar una accion en base a lo que el usuario le diga a trves del sms que le envio

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: mandar AT en ensamblador desde pic
« Respuesta #8 en: 19 de Agosto de 2007, 21:23:02 »
el mobil al estar conectado al pic,al recivir un sms,este varia un registro interno,el cual al estar el pic constantemente leyendo los comandos que nos interesa.
el pic leera el mensage que se ha recivido en el mobil,y segun el que preasignemos para una funcion determinada,el pic activara una salida para activar cualquier dispositivo.

estoy en el proyecto,cuando lo termine ya lo posteare.pero en asm :-)
Montando mi primera impresora 3D (Raprep Prusa i3)