Buenas,
Gracias por las respuestas ;)
Te explico lo que he desarrollado hasta ahora. Teoricamente los pines RX,TX del Arduino estan conectados con el USB por lo que si se hace un programa que los use la segunda vez que carges un programa no te funcionara (por lo menos es lo que me pasa en el Arduino UNO).
Esto no me importa, puesto que cada vez que quiera cargar el programa al Arduino, puedo desconectar los pines RX/TX.
Por otro lado con RX,TX no tienes control de errores así que no es un RS232 completo. Si lo que quieres (como yo es un RS232 completo) tienes que poner un MAX232 y conectar al Arduino.
Si hay que usar el MAX232 se usa :)
Yo la librería SoftwareSerial.h no la puedo usar porque trabajo con esta configuración; 115200 bits por segundo, paridad impar, 8 bits de datos y 2 bits de stop.
He probado a conectar el cacharro al Arduino mediante el max232 y los pines rx/tx, y no recibo nada coherente :(
Dejo mi código:
inline void serialOpen(const uint32_t baud=9600, const uint8_t char_bits=8, const uint8_t stop_bits=1, const uint8_t parity=0);
void setup() {
serialOpen(115200, 8, 2, 1);
}
void loop() {
if (Serial.available()) {
unsigned char inByte = Serial.read();
Serial.print(inByte, HEX);
}
}
inline void serialOpen(const uint32_t baud, const uint8_t data_bits, const uint8_t stop_bits, const uint8_t parity) {
// open a serial port, same as "Serial.begin()"
// parameters:
// - baud rate ( 1953 to 1000000 baud for 8Mhz, 3906 to 2000000 for 16Mhz )
// default = 9600
// - character/data bits ( 5, 6, 7, or 8 )
// default = 8
// - stop bits ( 1 or 2 )
// default = 1
// - parity ( 0 = none, 1 = odd, 2 = even )
// default = 0
uint16_t baud_setting;
uint8_t frame_format;
// U2X mode is needed for baud rates higher than ( Hz / 16 )
if( baud > F_CPU / 16 ) {
// U2X mode allows for baud rates up to twice as fast as regular mode
// enable U2X mode
UCSR0A = 1 << U2X0;
// U2X style ubbr calculation
baud_setting = ( F_CPU / 4 / baud - 1 ) / 2;
} else {
// regular mode makes up for it's lower baud-rates by handling clock skew better
// disable U2X mode
UCSR0A = 0;
// regular style ubbr calculation
baud_setting = ( F_CPU / 8 / baud - 1 ) / 2;
}
switch(data_bits) {
case 5: frame_format = 0; break; // 5 data bits
case 6: frame_format = (1<> 8;
UBRR0L = baud_setting;
// enable the serial recieve pin, transmit pin, and recieve interrupt
UCSR0B = (1 << RXEN0) | (1 << TXEN0) | (1 << RXCIE0);
// Set frame format
UCSR0C = frame_format;
}
Por cierto, no es posible cambiar la configuración del puerto COM desde el IDE de arduino?
Saludos