Pages: [1]   Go Down
Author Topic: USB/Serie ATmega8U2 : Charge CPU PC à 100%  (Read 939 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hello

Je rencontre un souci actuellement en communicant avec un Arduino MEGA 2560 Rev 2 via la lib QtSerialPort ou QSerialDevice (C++, Qt): il suffit que l'arduino envoie quelques données pour que la charge CPU du PC monte à 100% (ou disons 25% car 4 coeurs) et redescende à 0 de temps en temps.
Le souci apparait uniquement avec l'Arduino (pas d'autres versions testées) et sous Windows, d'autres convertisseurs (FTDI, PL2303) ne posent aucun souci.

J'en ai parlé avec le créateur de la lib Qt que j'utilise et apparemment ça pourrait venir du driver utilisé par l'Arduino.

Je n'ai pas trouvé d'autres drivers et essayé de les réinstaller également, sans succès.

Est-ce que le problème pourrait être examiné pour déterminer si oui ou non le souci est du côté driver ?

Je ne sais pas si c'est le meilleur endroit pour ce genre de problème, n'hésitez pas à me donner une autre "adresse" si besoin ! Peut-être le forum anglais ?

Merci d'avance !  smiley

Architecture: Win 7 64bits, Core i7
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Je n'ai jamais vu un tel probléme smiley-eek
(J'ai la même config : win64 + cpu i7)

Si tu utilise un programme comme terminalBpp est ce que ça fait la même chose ?
Les drivers utilisé par l'arduino sont fourni de base par windows (drivers ACM CDC).

A mon avis tu as un probléme de configuration quelque pars.
Regarde avec usbdeview comment est configuré tes pilotes usb pour la carte arduino smiley-wink
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Newbie
*
Karma: 0
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hello

En plus google ne m'a rapporté qu'un seul souci de ce genre, et le problème semblait venir du convertisseur utilisé. (pas d'Arduino)
J'ai essayé avec d'autre logiciels sans aucun soucis. (terminalBpp et Coolterm)
Lorsque tu dis "même config", ce n'est pas aussi avec un soft Qt je pense ?

J'ai également pu essayer sur un autre PC avec Win7 et mon logiciel et j'ai le même souci. Par contre sous Win XP aucun problème...
Je vais tenter avec une machine virtuelle si j'ai le temps.

Je joins un screen de ce que me donne USVDeview, pour moi tout m'a l'air ok... smiley-razz

Une board REV3 va être achetée pour voir si ça s'arrange, mais je ne serais plus là pour tester moi même (en stage actuellement).

Bizarre tout ça, et embêtant. On n'a que des machines avec Win7 ici, il faut que ça marche  smiley-razz

Merci pour ton aide.


* Capture.PNG (66.29 KB, 881x486 - viewed 18 times.)
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Lorsque tu dis "même config", ce n'est pas aussi avec un soft Qt je pense ?
Oui je parle juste niveau hardware, pas software.

Je joins un screen de ce que me donne USVDeview, pour moi tout m'a l'air ok... smiley-razz
Tout est bon du côté des drivers ... bizarre !

Bizarre tout ça, et embêtant. On n'a que des machines avec Win7 ici, il faut que ça marche  smiley-razz
Si tu as le temps essaye de mettre à jour le contrôleur usb :
http://arduino.cc/en/Hacking/DFUProgramming8U2
(ça pourrait peut être résoudre le probléme)
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

0
Offline Offline
God Member
*****
Karma: 2
Posts: 802
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Yep!

Perso, pour avoir développer une appli Qt+python communiquant avec un mega1280 en série (usb), je n'ai pas eu ce problème (bon je n'utilisais pas Qtserial).

Il faudrait regarder comment tu gères tes buffers/threads et voir si tu laisses ton programmes se reposer ou pas.

Un programme qui bouffe 100% du cpu est un programme qui réclame constamment des ressources systèmes et qui a certainement des problèmes dans la gestion des tâches et utilisation des ressources systèmes.

C'est le B-A-BA et un challenge constant du programmeur.

@+

Zoroastre.
Logged

Veuillez indiquer [RESOLU] dans l'entête du titre en éditant votre premier message smiley-wink

Offline Offline
Newbie
*
Karma: 0
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

J'ai finalement changé de librairie de gestion du port série, et je n'ai pas de soucis avec. J'ai néanmoins eu d'autres nouvelles du développeur de l'autre lib avec un bout de code à changer, je vais donc tester si sa solution fonctionne. Je préfère sa lib, donc j'aimerais bien que ça fonctionne smiley-razz

@skywodd Je ne vais donc pas tenter la màj, pas que je pense la louper, mais pour moi ça ne viens pas de là et je n'aurais de toute façon pas le temps de le faire. Merci quand même pour l'idée.

@zoroastre Sauf que là, c'est bien la lib et pas mon code  smiley-mr-green J'ai déboggué la lib et il s'avère qu'une fonction gérant un évènement du port série est appelée en boucle dès que des données sont reçues. Je fais des essais avec le dev de la lib pour tenter de régler ça.

Bonne nuit...  smiley
Logged

Bretagne
Offline Offline
Edison Member
*
Karma: 16
Posts: 1392
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

J'ai eu ce souci sous VB6 (à la rigueur, peu importe la plateforme de développement...) : lors d'une comm série, j'avais une boucle style "while not serial_in...", qui prenait 100% du temps CPU tant qu'on était dans la boucle. il m'a suffit de coller un "DoEvents" (qui rend la main à l'OS) dans le while pour résoudre la chose. peut-être un truc du genre dans la lib?
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

@zoroastre Sauf que là, c'est bien la lib et pas mon code  smiley-mr-green J'ai déboggué la lib et il s'avère qu'une fonction gérant un évènement du port série est appelée en boucle dès que des données sont reçues. Je fais des essais avec le dev de la lib pour tenter de régler ça.
Ça c'est le genre de bug c*n par excellence smiley-mr-green
Bon donc de toute évidence c'est un bug purement software, l'arduino n'y est donc pour rien smiley-razz

Bonne nuit...  smiley
Les développeurs ne dorme pas, ils passent en vieille prolongé smiley-cool
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

France S-O
Offline Offline
Edison Member
*
Karma: 41
Posts: 2168
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Les développeurs ne dorme pas, ils passent en vieille prolongé

Chacun ses goûts, mais moi je préfère les jeunes. smiley-grin
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Les développeurs ne dorme pas, ils passent en vieille prolongé

Chacun ses goûts, mais moi je préfère les jeunes. smiley-grin
De même  smiley-mr-green
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

J'ai eu ce souci sous VB6 (à la rigueur, peu importe la plateforme de développement...) : lors d'une comm série, j'avais une boucle style "while not serial_in...", qui prenait 100% du temps CPU tant qu'on était dans la boucle. il m'a suffit de coller un "DoEvents" (qui rend la main à l'OS) dans le while pour résoudre la chose. peut-être un truc du genre dans la lib?

Bah en fait là, c'est une fonction qui est appelée en boucle par la boucle d'événements, donc c'est pas aussi simple... malheureusement  smiley-razz
Logged

Pages: [1]   Go Up
Jump to: