Buenas...les escribo porq estoy teniendo un problema con la comunicación de un atmega16 por medio del rs232 a la computadora y sinceramente ya estoy perdida.
Les cuento un poco de q se trata el proyecto, desp el problema y las cosas q intenté para ver si pueden guiarme un poco.
El circuito toma una señal analógica, la convierte a digital con el conversor del micro y la envía a la computadora. Como la memoria del micro es de solo 1k, la idea es convertir y enviar, por lo q necesito una velocidad de 115.200 bps. En un primer momento logré muestrear y enviar a esta velocidad sin inconvenientes, luego hice algunas modificaciones en el hardware para tomar también la parte negativa de la señal pero coloqué un jumper para poder volver al circuito inicial q funcionaba. Sin embargo, no pude hacer funcionar más la comunicación a esta velocidad, y de acuerdo a las muestras q recibo y el tiempo transcurrido siempre estoy a una velocidad de alrededor de 50.000 bps. El programa lo único q hace es ir a la interrupción del adc y allí enviar al udr la conversión (de 8bits).
Al detectar este inconveniente en la comunicación intenté varias cosas como:
- Usar la interrupción del udre e ir incrementando un registro que se envia hasta llegar a los 255 para luego volver a empezar desde 0. Con este programita tamb logro una velocidad de más o menos 50.000 bps y detecto q a partir de un momento el envío (o la recepción de la computadora) comienza a fallar y saltea varios números (por ejemplo pasar de un 232 a 72). Una vez q la falla comienza se repite cada 100 recepciones pero con distintos baches.
- También usé la interrupción de txc, usando el mismo programa...ir incrementando un registro y enviandolo. Detecté el mismo inconveniente.
- En lugar de utilizar alguna interrupción hice un bucle en el cual me fijo si el udre está seteado o no...para incrementar y enviar. Nuevamente detecté el mismo inconveniente.
- Por último se me ocurrió hacer el mismo programa pero usando la interrupción de la recepción...es decir enviando un ff cuando la computadora lee algo del buffer. Todavía no pude testear bien esto...ya q tengo inconvenientes con el soft d la computadora.
De todas maneras quiero ver si se les ocurre algo más para q intente ya q no entiendo como en un momento funcionó correctamente y nunca más logré hacerlo funcionar. Como se imaginaran chequié mil veces los seteos de la configuración del usart...y no tienen inconvenientes, además d q es el mismo soft q ya funcionó. Como podrán ver...estoy perdida así q les agradecería me puedan ayudar.
Saludos
Les cuento un poco de q se trata el proyecto, desp el problema y las cosas q intenté para ver si pueden guiarme un poco.
El circuito toma una señal analógica, la convierte a digital con el conversor del micro y la envía a la computadora. Como la memoria del micro es de solo 1k, la idea es convertir y enviar, por lo q necesito una velocidad de 115.200 bps. En un primer momento logré muestrear y enviar a esta velocidad sin inconvenientes, luego hice algunas modificaciones en el hardware para tomar también la parte negativa de la señal pero coloqué un jumper para poder volver al circuito inicial q funcionaba. Sin embargo, no pude hacer funcionar más la comunicación a esta velocidad, y de acuerdo a las muestras q recibo y el tiempo transcurrido siempre estoy a una velocidad de alrededor de 50.000 bps. El programa lo único q hace es ir a la interrupción del adc y allí enviar al udr la conversión (de 8bits).
Al detectar este inconveniente en la comunicación intenté varias cosas como:
- Usar la interrupción del udre e ir incrementando un registro que se envia hasta llegar a los 255 para luego volver a empezar desde 0. Con este programita tamb logro una velocidad de más o menos 50.000 bps y detecto q a partir de un momento el envío (o la recepción de la computadora) comienza a fallar y saltea varios números (por ejemplo pasar de un 232 a 72). Una vez q la falla comienza se repite cada 100 recepciones pero con distintos baches.
- También usé la interrupción de txc, usando el mismo programa...ir incrementando un registro y enviandolo. Detecté el mismo inconveniente.
- En lugar de utilizar alguna interrupción hice un bucle en el cual me fijo si el udre está seteado o no...para incrementar y enviar. Nuevamente detecté el mismo inconveniente.
- Por último se me ocurrió hacer el mismo programa pero usando la interrupción de la recepción...es decir enviando un ff cuando la computadora lee algo del buffer. Todavía no pude testear bien esto...ya q tengo inconvenientes con el soft d la computadora.
De todas maneras quiero ver si se les ocurre algo más para q intente ya q no entiendo como en un momento funcionó correctamente y nunca más logré hacerlo funcionar. Como se imaginaran chequié mil veces los seteos de la configuración del usart...y no tienen inconvenientes, además d q es el mismo soft q ya funcionó. Como podrán ver...estoy perdida así q les agradecería me puedan ayudar.
Saludos