Interface série qui ne fonctionne pas

en regardant le code de plus près la fonction write() appelle USB_Send(CDC_TX,buffer,size); et cette fonction commence par un joli

	if (!_usbConfiguration)
		return -1;

et donc si est nul rien ne se passera.

Or en allant voir où ce flag est initialisé dans ISR(USB_COM_vect) on voit

		else if (SET_CONFIGURATION == r)
		{
			if (REQUEST_DEVICE == (requestType & REQUEST_RECIPIENT))
			{
				InitEndpoints();
				_usbConfiguration = setup.wValueL;
			} else

que cela ne se fait qu'en cas de demande d'initialization de la ligne, c'est à dire qu'on a un host de l'autre côté et comme à la fin du reset de la carte

	//	End of Reset
	if (udint & (1<<EORSTI))
	{
		InitEP(0,EP_TYPE_CONTROL,EP_SINGLE_64);	// init ep0
		_usbConfiguration = 0;			// not configured yet
		UEIENX = 1 << RXSTPE;			// Enable interrupts for ep0
	}

la variable _usbConfiguration est mise à zéro.

Donc si on n'a rien de branché la fonction qui envoie des données n'est pas appelée et la LED ne clignotera donc pas.

en reliant 2 arduino par l'interface série (Pins 0 et 1) on ne passe plus par la partie USB Core mais HardwareSerial - j'ai pas creusé mais la fonction write() dans ce cas gère directement l'émission sans faire clignoter les LEDs

des avis??

Bonjour hbachetti
quote author=hbachetti link=msg=3940680 date=1541888670]
Également sur une NANO, y compris avec CH340, le convertisseur USB est désactivé si l'USB n'est pas branché.
Les LEDs ne sont pas un indicateur de fonctionnement de l'UART.
[/quote]
Au cas où l'USB n'est pas connecté, le CH340 ou FT232 sont toujours alimentés, ayant le même VCC que le processeur, donc la LED fonctionne toujours, donc c'est un bon indicateur.
J'en ai fait l'essai avec:
Le câble USB
sans le câble et alimenté en 5V.
sans le câble et alimenté en 12V. sur Vin
et la LED fonctionne toujours.

Cordialement
jpbbricole

il semble que @jpbbricole a fait le test

--> @hbachetti, vous aviez fait le test ?

(j'ai eu la flemme je dois avouer et j'ai pas de UNO ou Nano en CH340...)

cela pourrait venir aussi du firmware associé cependant.

Bonjour J-M-L

J-M-L:
j'ai pas de UNO ou Nano en CH340...)

Il y a des gens riches sur ce forum :slight_smile:
Moi je n'ai que des CH340 et c'est pas tout les jours la joie, mais on fait avec!

Cordialement
jpbbricole

Bonjour,

Sur les cartes avec CH340, les leds sont (en général ou toujours ?) directement reliées sur tx et rx
Schéma

J-M-L:
il semble que @jpbbricole a fait le test

--> @hbachetti, vous aviez fait le test ?

(j'ai eu la flemme je dois avouer et j'ai pas de UNO ou Nano en CH340...)

cela pourrait venir aussi du firmware associé cependant.

J'ai fait le test avec cable usb débranché
carte uno avec atmega16u -> la led ne s'allume pas
carte uno avec CH340 -> la led s'allume

OUI j'arrive. Laissez moi le temps de me réveiller.

Il y a bien une différence entre câble USB branché et débranché, car le CH340 est désactivé, et il ne consomme pas plus de 80µA. Je pensais qu'il serait hors service.

Mais effectivement, j'ai vérifié, si on le sollicite par un envoi de caractères, il est réactivé, et la LED TX s'allume.

Avec une NANO clone CH340, la LED clignote.
Même essai avec une UNO clone CH340. Même résultat. La LED clignote.

Je n'ai pas de UNO officielle sous la main.

Avec une LEONARDO officielle, La LED ne clignote pas.

Je viens de faire l'essai sur une carte Uno d'une autre provenance, même symptôme.
Sur une Nano, idem.
Je doit merder quelque part, mais où ...

Une carte UNO ou NANO clone ?

mais elle ne clignote plus si je passe l'Arduino sur une alimentation dédiée, ce qui est normal car elle est alimentée moins d'1ms toutes les secondes

Personnellement j'envoie 1 caractère à 115200 baud et on la voit très bien clignoter.

Je dirais : ce n'est pas parce que les LEDs ne s'allument pas sur certaines cartes qu'il faut s'inquiéter.

Câbler une NANO en récepteur en face RX->TX et TX->RX et afficher ce qu'elle reçoit.

@+

Je dirais : ce n'est pas parce que les LEDs ne s'allument pas sur certaines cartes qu'il faut s'inquiéter.

ça semble une bonne conclusion :slight_smile:

autant faire clignoter LED_BUILTIN pour s'assurer que tout va bien...

jpbbricole:
Bonjour J-M-LIl y a des gens riches sur ce forum :slight_smile:

Salut - disons que pendant un temps je ne voulais pas télécharger de drivers à la provenance douteuse sans pouvoir regarder le code source sur mon mac donc je ne prenais que de l'officiel, qui fonctionne avec le driver fourni par le constructeur. les quelques euros de plus pour des cartes sans CH340 ne m'ont pas ruiné et j'ai même des cartes officielles, ma contribution au projet... :slight_smile:

Quand j'ai commencé à jouer avec les Wemos là il a bien fallu aller regarder ailleurs cependant... mais sans compromettre la sécurité de ma machine.

Il n'y a plus qu'à attendre que Doumai se réveille pour faire un essai de communication sans regarder les LEDs.
S'il ne se réveille pas à 14H du matin comme mon fils ... :stuck_out_tongue_closed_eyes:

J-M-L:
ma contribution au projet... :slight_smile:

C'est vrai que c'est important de contribuer, je le fais au moment de télécharger.
C'est quand même grâce à l’investissement d'une poignée de gars que l'on prends autant de plaisir à "bricoler" ces petites bêtes.

Bon dimanche
Cordialement
jpbbricole

Merci à tous les intervenants.
Mes 4 cartes Uno + Nano fonctionnent.
Effectivement, ma déduction comme quoi la LED TX ne s'allumait pas car elle n'était alimentée 1 ms chaque seconde et que l’œil ne pouvait pas voir ce phénomène est fausse. En alimentant mes Arduino avec une alimentation dédiée et en mettant un coup d'oscillo numérique, on voit bien qu'elle n'est pas alimentée alors que le signal TX est bien présent.
Comme quoi, j'aurai dû faire toutes les mesures avant d'ouvrir un post. mea culpa.
Du coup, le logiciel complet que j'avais écrit à l'origine fonctionne (TX sur l'oscillo).

Il ne me reste plus qu'un problème à résoudre, c'est que ce logiciel Midi fonctionne associé à un interface Midi/USB après téléversement, mais ne fonctionne plus quand l'Arduino est branché sur une alimentation dédiée et toujours associé à l'interface Midi/USB (je lis les données avec un moniteur Midi sur PC). Je vais étriper l'interface.

L'avantage de l'Arduino est que j'ai mis 1 heure pour écrire le code, alors qu'avec un PIC en assembleur il m'aurait fallu 3 jours (et encore, je doit être optimiste). L'inconvénient est que dans un Arduino, je ne sais pas tout ce qui ce passe alors que dans un PIC oui.

:slight_smile:

Bonjour J-M-L

J-M-L:
en regardant le code de plus près ..............................

Donc si on n'a rien de branché la fonction qui envoie des données n'est pas appelée et la LED ne clignotera donc pas.

en reliant 2 arduino par l'interface série (Pins 0 et 1) on ne passe plus par la partie USB Core mais HardwareSerial.la fonction write()[/url] dans ce cas gère directement l'émission sans faire clignoter les LEDs

des avis??

La messe est dite.
Merci.

Cordialement,
bidouilleelec

Doumai:
Il ne me reste plus qu'un problème à résoudre, c'est que ce logiciel Midi fonctionne associé à un interface Midi/USB après téléversement, mais ne fonctionne plus quand l'Arduino est branché sur une alimentation dédiée et toujours associé à l'interface Midi/USB (je lis les données avec un moniteur Midi sur PC). Je vais étriper l'interface.

Le GND du PC (et donc de la partie MIDI) et le GND de votre alimentation dédiée sont ils reliés ?