manip directe du registre UBRR , y'a des utilisateurs/avis ?

manip directe du registre UBRR , y'a des utilisateurs/avis ? :grin:
Bonsoir
Quasi tout est dans le titre
Est ce que certains ici ont déjà joué directement avec l'USART Baud Rate Registers de manière "assez dynamique"

pour faire simple , j'ai plusieurs (3) émetteurs qui discutent à des taux de bauds différents (taux que je ne peux pas modifier).
La récurrence et la charge utile sont faibles pour les 3 dispo, je peux me permettre "de la collision"/perte sans "trop" de soucis.

Ce que je cherche à savoir , avant de m'y coller :grin: si juste une modif du UBRR est suffisante pour passer d'un taux X à un un taux Y.
D'apres ma lecture du DS , c'est OK.

Mais si certains d'entre vous ont déjà testé , je prends les avis/retours.
merci

Quand j'essayais Eclipse j'avais fait ça (largement pompé à partir du web)

/*
 * Main.cpp
 *
 *  Created on: 13 janv. 2012
 *      Author: 
 */

//#include <Arduino.h>
#include <avr/io.h>
#include <util/delay.h>
#include <string.h>

//#include "serial.h"

#define FREQ 16000000L
#define DEBIT 9600

int coef;
char i;
char chaine[6];

void serial_init(unsigned int coeff);
void serial_ecrit(unsigned char c);

int main()
{
//	init();
	coef = FREQ/DEBIT -1 ;
	serial_init(coef) ;

	strcpy(chaine,"ON/OFF");
	i = 0;
	while(true)
	{
		while (1)
		{
			serial_ecrit(chaine[i++]);
			if (chaine[i] == '\0')
			{
				i = 0 ;
				_delay_ms(500);
			}
		}
	}
	return 0;
}

void serial_init(unsigned int coeff)
{
	UBRR0H = (unsigned char) (coeff>>8);
	UBRR0L = (unsigned char) coeff;
	UCSR0C = (3 << UCSZ00) ;  // 8N1
	UCSR0B = (1 << RXEN0) | (1 << TXEN0);
	return ;
}

void serial_ecrit(unsigned char c)
{
	while ( !(UCSR0A & (1 << UDRE0)) ) ;
	UDR0 = c;
}

68tjs:
Quand j'essayais Eclipse j'avais fait ça (largement pompé à partir du web)

bonjour 68tjs
merci de ta reponse
çà semble confirmer qu'une manip directe sur UBRR (H/L) doit etre possible
je vais tester .