Je rencontre des problèmes avec le contrôle de flux USART sur l'Atxmega256. Je communique avec un modem qui utilise RTS/CTS pour le contrôle de flux. Une fois que le modem a mis CTS à bas, je veux arrêter d'envoyer des données jusqu'à ce qu'il redevienne élevé. J'utilise actuellement des routines USART interrompues et je n'arrive pas à trouver un bon moyen d'arrêter l'envoi. Si j'arrête juste d'envoyer quand CTS devient bas, les données déjà dans les tampons d'envoi seront toujours envoyées et donc perdues.Atxmega Contrôle de flux USART
J'ai essayé le suivi de désactiver/activer l'envoi:
if(false == clearToSend()) {
USART_TxdInterruptLevel_Set(data->usart, USART_TXCINTLVL_OFF_gc);
while(false == clearToSend()) {}
USART_TxdInterruptLevel_Set(data->usart, USART_TXCINTLVL_LO_gc);
}
Malheureusement, cela semble désactiver l'envoi en permanence. Des idées?
Meilleures salutations Fredrik