TODOPIC
Otros Microcontroladores / Dispositivos programables => Microcontroladores 8 bits => Mensaje iniciado por: c4_esp_VR en 27 de Octubre de 2008, 20:24:55
-
Hola compañeros del foro.
Es la primera vez que posteo en el lado oscuro de los micros ATMEL, así que espero perdonen mis preguntas tontas :P :P :P
La primera de ellas es que al darle la velocidad al HardwareSerial, esta sigue poniendo la que tiene por defecto (9600), para ejemplo un botón:
void setup()
{
Serial.begin(19200);
}
void loop()
{
Serial.print("Hola");
delay(100);
}
Con esta tontería de código, conecto correctamente mi micro a un chip FTDI para monitorearlo en el ordenador y veo que mi sorpresa que al monitorearlo a 19200 en el PC salen carácteres extraños, en cambio configuro el PC a 9600 sale Hola cada 100 ms que es lo que tiene que aparecer.
¿Qué está pasando aquí? :shock: :shock: :shock:
Despues me dije...vamos a simular un HW serial como hago con los pic y ccs que es muy sencillo. Bueno pues me pongo a ello con la librería libre AFSoftSerial, esta supuestamente emula muchos SS(a partir de ahora SS=Software Serial), pero a la hora de implementarlo los datos que envía el micro son erroneos, apareciendo carácteres que no tenían que aparecer.
El código es el sigiuente
#include "AFSoftSerial.h"
#define RXPIN 3
#define TXPIN 2
#define RFRXPIN 5
#define RFTXPIN 4
AFSoftSerial mySerial = AFSoftSerial(RXPIN,TXPIN);
AFSoftSerial mySerialRF = AFSoftSerial (RFRXPIN,RFTXPIN);
void setup()
{
pinMode(RXPIN, INPUT);
pinMode(TXPIN, OUTPUT);
mySerial.begin(9600);
pinMode(RFRXPIN, INPUT);
pinMode(RFTXPIN, OUTPUT);
mySerialRF.begin(19200);
}
void loop()
{
mySerial.print("Hola");
delay(100);
mySerialRF("Hola");
delay(100);
}
mySerial funciona a la perfección, pero no pasa lo mismo con mySerialRF...esto es lo que yo llamo caso fantasma porque no sabes que carajo está sucediendo.
Hay alguna forma de "forzar" la velocidad de la USART.
Muchas gracias por todo
-
Bueno vamos acotando los probemas :) :) :), pero de forma que no nos ayuda en absoluto.
Por lo que hemos leido las librerias del estilo AFSoftSerial o SoftwareSerial para el manejo de USART por software están limitadas en varios aspecto muuuuyyyy importantes.
* Sólo funcionan velocidades de hasta 9600 baudios
* Serial.available() no funciona
* Serial.read() esperará hasta que los datos le llegue.
* No tiene buffer por lo que si no se leen los datos cuando lleguen mediante Serial.Read(), estos se perderán.
Vamos lo que se llama un chollo esto del SS de lo malo que es :D :D :D
-
La primera de ellas es que al darle la velocidad al HardwareSerial, esta sigue poniendo la que tiene por defecto (9600), para ejemplo un botón:
Código:
void setup()
{
Serial.begin(19200);
}
void loop()
{
Serial.print("Hola");
delay(100);
}
Con esta tontería de código, conecto correctamente mi micro a un chip FTDI para monitorearlo en el ordenador y veo que mi sorpresa que al monitorearlo a 19200 en el PC salen carácteres extraños, en cambio configuro el PC a 9600 sale Hola cada 100 ms que es lo que tiene que aparecer.
¿Qué está pasando aquí? Shocked Shocked Shocked
Respecto al primer problema, las librerias que usa el micro le ocurre exactamente igual que antes, es decir, parace que usa el serial del hardware pero en realidad está usando el serial del SW por lo que tiene por defecto 9600 siempre...
Vamos es una pena que ocurra esto con los micros ATMEL, hace tiempo que quería echarles mano pero me estoy llevando muchas desilusiones con ellos, no veo porqué se usan tanto en aplicaciones en vez de usar PICs que son más fáciles de programar y por lo que veo son más potentes...aunque hablo un poco sin fundamente sólo de la poco experiencia que poseo.
-
Hola c4_esp_VR, por lo que contas parese ser un problema de la libreria y no del micro
no tenes otra libreria?
por lo que veo son más potentes...aunque hablo un poco sin fundamente sólo de la poco experiencia que poseo.
Sin ofender seguí experimentando no valla a ser que se te de vuelta la torta :mrgreen:
Saludos
-
Hola Micro23:
Si tienes alguna librería que funcione sería de agradecer que compartieses dichas líneas de código con la comunidad :mrgreen: :mrgreen: :mrgreen:
Un saludete.
-
Yo programo en C y uso el compilador CodeVision que es bastante intuitivo y tiene un buen Wisard con lo cual se te hace muy facil setear la velocidad y varias cosillas mas.
Saludos
-
Hola Micro23:
Desde luego que por lo que he visto CodeVision hace la comunicación serial pero sólo mediante Hardware y no mediante software como hace CCS con los pics o al menos en el user manual de este no pone nada de como implementarlo via software.
Un saludete.
-
Hola Micro23:
Desde luego que por lo que he visto CodeVision hace la comunicación serial pero sólo mediante Hardware y no mediante software como hace CCS con los pics o al menos en el user manual de este no pone nada de como implementarlo via software.
Un saludete.
Te equivoca amigo, si busca en la Web y en AVRFREAKS encontrara un monton de cosas hecha, mira aqui http://www.hpinfotech.ro/html/download.htm
Saludo