Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature currently requires accessing the site using the built-in Safari browser.
En realidad es muy sencillo y prácticamente es igual que configurar el módulo USART de los PIC que nada más tienen uno.
Al ser dos módulos, cada uno tiene registros independientes y eso es lo que se debe tener en cuenta.
Ver el archivo adjunto 165124
Ya que veo que se te ha complicado, mejor adjunto un ejemplo. (PBP3)
Como esto es realmente muy fácil de implementar, preferí usar interrupciones.
Ese Fuse no existe.Sí, descubrí mi error. Estaba simplemente en el fuse PS.
Half Duplex y Full Duplex.Quisiera preguntarle si funciona como half duplex
No se puede lograr la comunicación si las velocidades de los dispositivos son diferentes.quiero comunicarme con un equipo que tiene una velocidad no estándar de 5787, desde mi PC a 9600
¿Sería factible?
Ese Fuse no existe.
Yo únicamente usé los siguientes: FOSC = HSHP, IESO = ON, WDTEN = OFF
Half Duplex y Full Duplex.
Date un tiempo para leer la hoja de datos.
No se puede lograr la comunicación si las velocidades de los dispositivos son diferentes.
he tenido problemas con la implementacion del convertidor de baudios de 9600 a 5787 la verdad he configurado los registros como me indico ,tambien los registros SPBRG1 y SPBRG2 para la taza de baudios par que no tenga mucho error. pero al probar puenteando el rx con tx para qu e me regrese la dada que envio por la pc a 9600, me regresan datos imcompletos no se que estoy haciendo mal quisas sea la programacion ,quisiera que fuera tan preciso como la usart de una pc aalgun alcance o alguna otra forma de poder cambiar a 5787 baudios en la pc seria interesante .Sí es posible, no encuentro el problema.
Para 9600 Bps @ 20 MHz, el valor de SPBRGX debe ser 130 y para 5787 Bps, de 215Al probar puenteando el Rx con Tx para que me regrese la dada que envío por la PC a 9600, me regresan datos incompletos.
La precisión que alcance el PIC será suficiente para que el programa de PC enganche.Quisiera que fuera tan preciso como la USART de una PC.
Necesitas un terminal que permita establecer ese baud rate.Algún alcance o alguna otra forma de poder cambiar a 5787 baudios en la PC, sería interesante.
Para 9600 Bps @ 20 MHz, el valor de SPBRGX debe ser 130 y para 5787 Bps, de 215
La precisión que alcance el PIC será suficiente para que el programa de PC enganche.
Necesitas un terminal que permita establecer ese baud rate.
No sé si exista, yo diseñé mi propia interfaz RS-232 que sí lo permite.¿El terminal que me permite establecer los baudios a 5787 desde la pc directamente, existe o tengo que implementarlo?
Si existe, ¿Cómo puedo conseguirlo y si tengo implementarlo, cómo lo implemento?
¿Qué copilador? ¿Algunas pautas para hacerlo?
Corrijo lo anterior. Para 9600 Bps @ 20 MHz. El valor de SPBRGX debe ser 129
Creo que me quedé pensando con el valor que pusiste en el programa que subiste.
Calculado con una aplicación mía:
Ver el archivo adjunto 165765
Comprobado con otra aplicación similar:
Ver el archivo adjunto 165766
No sé si exista, yo diseñé mi propia interfaz RS-232 que sí lo permite.
Ver el archivo adjunto 165767
El compilador usado fue Visual Studio 6 en Basic
Aquí está el enlace del proyecto:
Interfaz RS-232 PIC PC (Proyecto Completo VB6)
En esa entrega no se tiene esa opción, pero si sabes programar en Visual Basic, fácilmente podrás modificar el proyecto y añadir las funciones o características que requieras.
Y si no tienes conocimientos de ese tipo de programación, aquí adjunto la versión más actual. (Incluyo el calculador de SPBRG)
si eso si, solo que queria la fuente de esta version actualizada o alguna rutina referente para poder implementarlo e incluirlo en mi sofware que estoy trabando para controlar desde mi pc a 5787 o cualquier otro baudaje.En la versión que subí se puede establecer cualquier baud rate entre 110 y 256000 Bps.
En "Baud rate" debes seleccionar "Otro" para que puedas ingresarlo en donde dice "Otro Baud rate".
Ver el archivo adjunto 165783
With cmbBauds ' Agregar los BPS al ComboBox cmbBauds
.AddItem "110"
.AddItem "300"
.AddItem "600"
.AddItem "1200"
.AddItem "2400"
.AddItem "4800"
.AddItem "9600"
.AddItem "14400"
.AddItem "19200"
.AddItem "28800"
.AddItem "38400"
.AddItem "56000"
.AddItem "128000"
.AddItem "256000"
.ListIndex = 6 ' Por default en 9600 Baudios
End With
Private Sub cmbBauds_Click()
If cmbBauds.Text = "Otro" Then
txtBaudRate.Enabled = True
OtherBaudrate = 1
Else
txtBaudRate.Enabled = False
OtherBaudrate = 0
End If
End Sub
Private Sub cmdOK_Click()
' Seleccionar el modo de conexión serial.
If cmbBauds.Text = "Otro" Then
OtherBaudrate = 1
Bauds = Val(txtBaudRate.Text)
If Bauds = 0 Then
MsgBox "Debe proporcionar un valor para el Baudrate.", vbInformation, "Error en el Baudrate"
txtBaudRate.SetFocus
Exit Sub
ElseIf Bauds < 110 Then
MsgBox "El Baudrate no puede ser inferior a 110 Baudios.", vbExclamation, "Error en el Baudrate"
txtBaudRate.SetFocus
Exit Sub
ElseIf Bauds > 256000 Then
MsgBox "El Baudrate no puede ser superior a 256000 Baudios.", vbExclamation, "Error en el Baudrate"
txtBaudRate.SetFocus
Exit Sub
End If
Else
Bauds = Trim(cmbBauds.Text)
OtherBaudrate = 0
End If
OtherBaudrate = CByte(GetSetting(App.CompanyName, App.Title, "USER_BAUDRATE", 1))
txtBaudRate.Text = GetSetting(App.CompanyName, App.Title, "USER_BAUDS", "5000")
If OtherBaudrate = 1 Then
SaveSetting App.CompanyName, App.Title, "USER_BAUDS", txtBaudRate.Text
Else
SaveSetting App.CompanyName, App.Title, "BAUDS", cmbBauds.Text
End If
Desde la primer versión está la rutina en donde se agregan los Bps.
En la última versión nada más se agregó algo muy sencillo.Código:With cmbBauds ' Agregar los BPS al ComboBox cmbBauds .AddItem "110" .AddItem "300" .AddItem "600" .AddItem "1200" .AddItem "2400" .AddItem "4800" .AddItem "9600" .AddItem "14400" .AddItem "19200" .AddItem "28800" .AddItem "38400" .AddItem "56000" .AddItem "128000" .AddItem "256000" .ListIndex = 6 ' Por default en 9600 Baudios End With
En la rutina Click de cmdOK:Código:Private Sub cmbBauds_Click() If cmbBauds.Text = "Otro" Then txtBaudRate.Enabled = True OtherBaudrate = 1 Else txtBaudRate.Enabled = False OtherBaudrate = 0 End If End Sub
En la rutina ReadConfig:Código:Private Sub cmdOK_Click() ' Seleccionar el modo de conexión serial. If cmbBauds.Text = "Otro" Then OtherBaudrate = 1 Bauds = Val(txtBaudRate.Text) If Bauds = 0 Then MsgBox "Debe proporcionar un valor para el Baudrate.", vbInformation, "Error en el Baudrate" txtBaudRate.SetFocus Exit Sub ElseIf Bauds < 110 Then MsgBox "El Baudrate no puede ser inferior a 110 Baudios.", vbExclamation, "Error en el Baudrate" txtBaudRate.SetFocus Exit Sub ElseIf Bauds > 256000 Then MsgBox "El Baudrate no puede ser superior a 256000 Baudios.", vbExclamation, "Error en el Baudrate" txtBaudRate.SetFocus Exit Sub End If Else Bauds = Trim(cmbBauds.Text) OtherBaudrate = 0 End If
En la rutina WriteConfig:Código:OtherBaudrate = CByte(GetSetting(App.CompanyName, App.Title, "USER_BAUDRATE", 1)) txtBaudRate.Text = GetSetting(App.CompanyName, App.Title, "USER_BAUDS", "5000")
Y la variable OtherBaudrate es del tipo Byte, pero también puede ser Boolean.Código:If OtherBaudrate = 1 Then SaveSetting App.CompanyName, App.Title, "USER_BAUDS", txtBaudRate.Text Else SaveSetting App.CompanyName, App.Title, "BAUDS", cmbBauds.Text End If