saludos amigos, le quiero hacer una consulta sobre el software serial de aurduini uno, tengo un dispositivo que se cominica por serial a una velocidad de 15625baud, la pregunta es si puedo colocar esa velocidad en el SoftwareSerial de un arduino UNO para poder comunicarme con ese dispositivo,( ya lo intente pero no recivo sino puras datos extraños).. si con el UNO no se puede, tambien tengo a la mano un ESP32 y un ESP8266
La documentación dice
Supported baud rates are: 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 31250, 38400, 57600, and 115200 bauds.
O sea, no puedes poner cualquier velocidad a menos que modifiques la librería.
Saludos
Ok entionces si hay un método para hacerlo... Alguien me puede dar esa info
Esto es para la UART o sea para el puerto serie Hardware, no para el SoftwareSerial.
http://www.rjhcoding.com/avrc-uart.php
Esto es una posible aproximación a lo que consultas
Si, claro, de hecho alguien lo hizo para las velocidades estándar.
Ahora, de que se pueda a ponerse a modificar la librería hay un trecho pero con la data que te pasó @Surbyte y estudiando el código de la librería para ver qué modificar, seguro lo logras.
Saludos
la verdad no me quedo claro como hacer para cambiar los baudios, asi sea el serial hardware o software
No confundas hardware con softwareSerial.
Por Hardware puedes poner cualquier cosa, y debes usar los registros del ATmega328p para ello.
Por Software debes ver la libreria y observar como cambiarlo.
claro se que por hradware son los pines ya establecidos, pero cambie los registros y no veo cambio aun no me puedo comunicar con el otro equipo a los 15625... es estado haciendo pruebas con el arduino mirando con el ociloscopio la salida de tx serial y si imprimo digamos un "1" lo que veo en el ociloscopio es supongo al principio bit inicio luego el dato en el caso el 1 y luego no entiendo lo demas...adjunto imagen
Enviaste un 1 decimal (caracter 1) o un "1" (caracter 49)?
Saludos
decimal lo envie asi
Serial.print(VAL, HEX);
donde val es 1 decimal
disculpen la instruccion correcta Serial.write(val);
No quiero polemizar pero esa gráfica es de un caracter "1" o sea B00110001 y no del byte 1, o sea B00000001, está clarísimo.
total razon tienes... con la instruccion serial.write si dio lo esperado 1,0,0,0,0,0,0,0
bueno esto este caso se resolvio solo por asi decirlo, resulta q mi vercion de arduino es la1.8.19 y en mi codigo solo por probar coloque en los baud rate el que queria y resulta que si funciona tan solo con el clasico Serial.begin(15265);
y funciono... tambien funcona para software serial... en este caso a esa velocidad los bit han de tener una duracion de 64us... dejo imagen referencia
Sobre Serial sabía que se puede porque lo uso para MIDI que trabaja a 31250 bps pero como preguntaste por SoftwareSerial no venía al caso.
Bueno, se ve que cambiaron el código de la librería, antes solo trabajaba con velocidades fijas. De hecho lo miré antes de responderte en #2. Debe estar desactualizada la documentación.
Excelente que lo resolvieras y nos pasaras el dato.
Saludos
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.