Estoy tratando de enviar algo desde un atmega a mi pc.
La configuración es: Ubuntu 14.04, atmega644P-20PU, USBASP v2, TTL-to-USB pl2303
Primero traté de escribir el código en C y usé este código y luego este y obtuve el mismo resultado: '�' o caracteres aleatorios (en minicom o pantalla)
Luego renuncié a la C y subí un programa Arduino simple:
void setup()
{
Serial.begin(9600);
}
void loop()
{
delay(500);
Serial.write('t');
}
(cuando ejecuté arduino, puse un cristal de 16MHz. En otros casos, usé uno de 20Mhz. También configuré F_CPU en consecuencia en el código).
En todos los casos, el LED R (recibir) del pl2303 parpadea en los momentos correctos (dependiendo del retraso establecido en el código).
También utilicé CuteCom para ver lo que obtengo del puerto serie y en lugar de '�', según el código utilizado, obtengo "\0x00\0x80\0x80"
(para el código Arduino) o en otros casos "\0x80\0x00\0x80"
.
Yo uso RX0 y TX0 (pin 14 y 15). RX0 conectado a TX de pl2303 y RX de pl2303 a TX0 de la mcu.
También acorté RX y TX de pl2303 e intenté enviar datos a través de él y recibí lo que envié.
La tasa de baudios de pl2303 es 9600
$stty -F /dev/ttyUSB1
velocidad 9600 baudios; línea = 0;
mín = 60; tiempo = 1;
ignbrk-brkint-icrnl-imaxbel
-opost -onlcr
-isig -icanon -iexten -echo -ecoe -echok -echoctl -eco
En todos los casos utilicé 8N1.
Espero haber sido lo suficientemente específico y coherente.
(normalmente trato de encontrar respuestas y soluciones, pero ahora estoy perdido)
't' parece 000101110
en la línea 0x80 000000001
y 0x00 000000000
(incluido el bit de inicio e ignorando el bit de parada) casi seguro que tiene una velocidad de transmisión demasiado rápida en el extremo receptor.
dado que está viendo 0 ceros y un 1, probablemente esté configurado 8 veces demasiado rápido, así que intente 1200 baudios en cutecom y busque una posible causa para que el divisor de velocidad en baudios en el arduino esté configurado 8 veces demasiado alto.
Como se mencionó anteriormente, todavía tiene el fusible CKDIV8 programado en los fusibles.
Puede deshacerse de él temporalmente configurando la configuración 1x prascaler en el software
CLKPR = (1 << CLKPCE); // Enable change of CLKPS bits
CLKPR = 0x00; // Set prescaler to 1
O simplemente configure los fusibles correctos, con full swing crystal oscillator
la configuración CKDIV8 y CKSEL deshabilitada.
Esta es mi configuración para mega 328p:
apalopohapa
Jasén
0001011101
en la línea 0x80 como0000000011
y 0x00 como0000000001
casi seguro que tiene la velocidad de transmisión demasiado rápida en el extremo receptor.Virgilio Litán
Virgilio Litán
Jasén
Virgilio Litán
Virgilio Litán
Jasén
Virgilio Litán
Virgilio Litán
Jasén