Tengo una configuración que se comunica entre PC (Windows) y Atmega2560 usando UART. En el lado de la PC estoy usando Pyserial. Desde la PC estoy enviando un párrafo de texto byte a byte a Atmega2560. La configuración de UART es: velocidad de 2400 baudios; datos de 8 bits; 1 bit de parada; Sin paridad; El código de Pyserial es el siguiente:
string = "some sample text" strobe = serial.Serial('com3',baudrate = 2400) for x in string: strobe.write(x) sleep(0.001)
Usé un osciloscopio para verificar la señal UART en el pin RX de la MCU y observé que había una brecha de 15 ms entre dos marcos de datos. Mis preguntas son:
También estoy enviando datos de MCU a PC. Cuando probé el pin TX de la MCU usando el osciloscopio, hubo un retraso insignificante entre los cuadros de datos. Creo que esto se debe a que estoy usando interrupciones para transmitir en la MCU.
Estoy agregando el código Atmega2560 aquí:
volatile uint16_t address; volatile char incoming; uint8_t in_buffer[2000]; void eeprom_write(uint16_t add,uint8_t val){ while(((EECR)&(0x02)) != 0);//EEPE bit cli(); EEAR = add; EEDR = val; EECR |= 0x04;//EEMPE EECR |= 0x02;//EEPE sei(); } ISR(USART0_RX_vect){ incoming = UDR0; in_buffer[address]=incoming; address++; } int main(void){ /*initialization of uart*/ address = 0; incoming = 1; while(incoming!='#'){} for(uint16_t i = 0 ;i<address;i++) eeprom_write(i,in_buffer[i]); }
La terminación de los datos se indica con '#'.
2400 baudios son 240 caracteres (octetos) por segundo a 10 bits por cuadro (que es el estándar "8N1"). Dormir durante 1 milisegundo no afectará mucho el espaciado, ciertamente no de una manera predecible, porque cada carácter tarda 4 ms en enviarse.
Podría ser que el sueño de Python no pueda hacer sueños tan cortos como 1 ms,
aún así, si desea monitorear los datos, necesita un osciloscopio (o conecte la línea de datos a través de una resistencia a la entrada de una tarjeta de sonido, haga una grabación y visualícela en un editor de archivos de sonido; el voltaje probablemente fluctúe un poco pero usted debería ver claramente los bordes de cada bit.)
¿Podría haber algo que mantenga ocupado su microcontrolador de tal manera que no pueda manejar 240 caracteres por segundo?
edgar marrón
shubham sharma
edgar marrón
shubham sharma
edgar marrón
Sam Gibson
shubham sharma
chris stratton
keith
keith
shubham sharma