Autor Tema: RF con Mikrobasic  (Leído 5792 veces)

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

Desconectado Trust

  • PIC16
  • ***
  • Mensajes: 141
RF con Mikrobasic
« en: 19 de Marzo de 2007, 11:41:49 »
Hola, quiero aprender a enviar datos por RF usando Mikrobasic y he visto el ejemplo que sale en el programa que es este:

Código: [Seleccionar]

program RF_TX

dim i as byte
dim msg as string[20]

main:
  msg = "mikroElektronika"
  PORTB  = 0                 ' Initialize port
  TRISB  = %00001110
  ClearBit(INTCON, GIE)      ' Disable interrupts
  Man_Send_Init(PORTB)       ' Initialize Manchester sender

  while TRUE
    Man_Send($0B)            ' Send start marker
    Delay_ms(100)            ' Wait for a while
    for i = 1 to Strlen(msg)
      Man_Send(msg[i])       ' Send char
      Delay_ms(90)
    next i
    Man_Send($0E)            ' Send end marker
    Delay_ms(1000)
  wend
end.

En este ejemplo, que pin del portb utiliza para enviar los datos?
Creo que utiliza el pin portb,0
¿Como se tendria que hacer para enviar por el pin portb,5?

Saludos

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re: RF con Mikrobasic
« Respuesta #1 en: 19 de Marzo de 2007, 12:43:01 »
Que tal Trust,

Efectivamente como lo mencionas la transmicion de datos se efectua por el pin RB0, y si quieres realizar el envio por el pin RB5, simplemente agrega:

Man_Send_Config(PORTB,5)


Saludos.

Elreypic.

Desconectado Trust

  • PIC16
  • ***
  • Mensajes: 141
Re: RF con Mikrobasic
« Respuesta #2 en: 19 de Marzo de 2007, 13:01:59 »
Hola elreypic, muchas gracias por tu ayuda.

Ahora voy a cambiar el programa que sale en la ayuda de Mikrobasic que es de un receptor de RF, para que cuando el emisor emita por ejemplo la palabra Mikroelektronica que sale en el programa emisor entonces el receptor encienda un led.

Voy a probar si soy capaz de hacerlo sino me sale, pues posteare aqui el codigo para que me ayudeis.

Saludos.

Desconectado Trust

  • PIC16
  • ***
  • Mensajes: 141
Re: RF con Mikrobasic
« Respuesta #3 en: 19 de Marzo de 2007, 17:35:19 »
Hola, he probado a compilar el codigo sobre RF que hay en la ayuda de Mikrobasic y me da error al compilar, no compila y aparece la linea en rojo. La segunda linea es la que me sale en rojo:
dim error, ErrorCount, temp as byte

El codigo del ejemplo es el siguiente:
Código: [Seleccionar]
program RRX

dim error, ErrorCount, temp as byte

main:
  ErrorCount = 0
  TRISB      = 0
  CMCON = 7
  ' VRCON = 0  ' Uncomment the line for PIC16
  Lcd_Init(PortB)                ' Initialize LCD on PORTB
  Lcd_Cmd(LCD_CLEAR)
  Man_Receive_Config(PORTA,3)    ' Configure and synchronize receiver

  while true

    Lcd_Cmd(LCD_FIRST_ROW)

    while true                   ' Wait for the start marker
      temp = Man_Receive(error)
      if temp = $0B then
        break
      end if                     ' We got the starting sequence
      if error then              ' Exit so we do not loop forever
        break
      end if
    wend

    do
      temp = Man_Receive(error)  ' Attempt byte receive
      if error = true then
        Lcd_Chr_Cp(63)           ' ASCII for "?"
        Inc(ErrorCount)
        if ErrorCount > 20 then
          Man_Receive_Init(PORTA)
          ' alternative:
          ' temp = Man_Synchro
          ErrorCount = 0
        end if

      else
        if temp <> $0E then      ' Don't write the end marker on LCD
          Lcd_Chr_Cp(temp)
        end if
      Delay_ms(20)
      end if
    loop until temp = $0E        ' Wait for the end marker

  wend
end.


He buscado en el google informacion de programacion en Mikrobasic de modulos de radiofrecuencia y he encontrado poca informacion y no me ha quedado nada claro. Os pongo un enlace en italiano de alguien que tiene un problema sobre RF.
Foro Mikrobasic Italiano

Saludos.

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: RF con Mikrobasic
« Respuesta #4 en: 19 de Marzo de 2007, 18:15:02 »
Hola aqui en el foro y especialmente con respecto a la radiofrecuencia optamos por hacerlo via serial con los modulos de LAIPAC. Tomando los bugs de MKB yo optaria por hacerlo de esa manera: serialmente.
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado sanpic

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 430
Re: RF con Mikrobasic
« Respuesta #5 en: 20 de Marzo de 2007, 04:58:04 »
El error está en la variable "error" justamente , jeje.
No puedes asignarle el nombre "error" a una variable pues es una palabra reservada del compilador del mkb.
Lo único que debes hacer es cambiarle el nombre "error" por "error2" o el que te guste , yo le puse "error1" y funcionó perfectamente , si te fijas bien en el editor del mkb , verás que en dim error , ErrorCount, temp as byte ,  error está en azul , es palabra reservada , no la puede usar como nombre de variable.



dim error1, ErrorCount, temp as byte

main:
  ErrorCount = 0
  TRISB      = 0
  CMCON = 7
  ' VRCON = 0  ' Uncomment the line for PIC16
  Lcd_Init(PortB)                ' Initialize LCD on PORTB
  Lcd_Cmd(LCD_CLEAR)
  Man_Receive_Config(PORTA,3)    ' Configure and synchronize receiver

  while true

    Lcd_Cmd(LCD_FIRST_ROW)

    while true                   ' Wait for the start marker
      temp = Man_Receive(error1)
      if temp = $0B then
        break
      end if                     ' We got the starting sequence
      if error1 then              ' Exit so we do not loop forever
        break
      end if
    wend

    do
      temp = Man_Receive(error1)  ' Attempt byte receive
      if error1 = true then
        Lcd_Chr_Cp(63)           ' ASCII for "?"
        Inc(ErrorCount)
        if ErrorCount > 20 then
          Man_Receive_Init(PORTA)
          ' alternative:
          ' temp = Man_Synchro
          ErrorCount = 0
        end if

      else
        if temp <> $0E then      ' Don't write the end marker on LCD
          Lcd_Chr_Cp(temp)
        end if
      Delay_ms(20)
      end if
    loop until temp = $0E        ' Wait for the end marker

  wend
end.


Este código me ha compilado sin problemas.



Saludos a todos.
IF you_know = true THEN                                 
     share_it
ENDIF

Desconectado Trust

  • PIC16
  • ***
  • Mensajes: 141
Re: RF con Mikrobasic
« Respuesta #6 en: 20 de Marzo de 2007, 12:50:18 »
Hola, muchisimas gracias a todos por vuestra ayuda.  :-)

Hoy si tengo tiempo lo probare, ya tenia muchas ganas de aprender a usar los modulos de RF.

Saludos.

Desconectado Trust

  • PIC16
  • ***
  • Mensajes: 141
Re: RF con Mikrobasic
« Respuesta #7 en: 02 de Abril de 2007, 19:13:20 »
Hola he estado probando el ejemplo cambiando "error" por "error1", he tenido que quitar CMCON=7 porque me da error al compilar. No he conseguido que me funcione.

He probado a hacerlo serialmente y tampoco me ha  funcionado.He probado programas muy sencillos en Mikrobasic, no se que he puesto mal o si falta algo en el codigo.

Código: [Seleccionar]

program Transmisor
trisb=0
'El pin TX es portb,5
main:
soft_uart_init (portb,4,5,2400,0)
soft_uart_write("1")
goto main
end.


Código: [Seleccionar]

program Receptor
Dim dato_recibido, dato as byte
trisc=%01000000
trisb=0
'El pin RX es portc,6

main:
soft_uart_init(portc,6,7,2400,0)
dato_recibido=soft_uart_read(dato)
lcd_config(portb,7,6,5,4,portb,2,3,1)
lcd_cmd(lcd_clear)
lcd_cmd(lcd_cursor_off)


if dato_recibido="1" then
lcd_out(2,1,"recibido")
else
lcd_out(1,1,"nada")
end if

goto main
end.



En el lcd me sale "nada".

Tambien he probado a enviar y recibir en vez de "1", 1 sin comillas, "a" con comilla y a sin comillas. Con los cambios que he probado me ha seguido sin funcionar.

Espero la ayuda de este grandisimo foro. He buscado en muchos foros de habla castellana e inglesa y no he encontrado nada claro.

Saludos.

« Última modificación: 02 de Abril de 2007, 19:15:49 por Trust »

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: RF con Mikrobasic
« Respuesta #8 en: 02 de Abril de 2007, 19:51:55 »
Lo de los registros metelos en la rutina MAIN por ejemplo CMCON TRIS y usa otra etiqueta para la rutina que usas. Y mira este codigo para enviar los datos quizas te sirva para recibirlos.
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado Trust

  • PIC16
  • ***
  • Mensajes: 141
Re: RF con Mikrobasic
« Respuesta #9 en: 04 de Abril de 2007, 12:31:12 »
Hola a todos, Navaismo he probado el codigo que me has puesto y no me funciona. Puede que tenga mal el programa del receptor pero, no se que es lo que hago mal.

Agradeceria mucho que alguien revisara el codigo RF por comunicacion serial que puse anteriormente. Si alguien tiene algun ejemplo muy sencillo que le funcione, lo podrian poner?

Saludos.

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: RF con Mikrobasic
« Respuesta #10 en: 04 de Abril de 2007, 14:12:18 »
Veo que ni el programa que puse, entonces verifica que lo programes bien y lo conectes bien, ponnos un esquema de como lo conectas porque el ejemplo que te puse si funciona. Yo lo comprobe.

Para RF tenemos en ejemplos pero en PBP
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."

Desconectado Trust

  • PIC16
  • ***
  • Mensajes: 141
Re: RF con Mikrobasic
« Respuesta #11 en: 06 de Abril de 2007, 11:12:46 »
Hola, ya me funciona la comunicacion serial, de pic a pic va perfecto pero usando los modulos RF me aparecen cosas raras en el lcd.
Creo que es porque tengo que hacer una ritina CRC.
Voy a probar a ver como me sale.

Saludos.

Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: RF con Mikrobasic
« Respuesta #12 en: 06 de Abril de 2007, 14:23:35 »
Puedes enviar primero un Acuse osea un dato que despierte al receptor y al micro y despues de eso los datos. Tambien checa el fornato de los datos.
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."