A un moment donné il faut savoir dire stop, parce que j'ai aussi un boulot, et parce que je t'ai déjà trop aidé.
Une remarque, quand même :
Je ne sais pas ce qu'est cette histoire de trou, mais...
Type: Messages; Utilisateur: Hibernatus34
A un moment donné il faut savoir dire stop, parce que j'ai aussi un boulot, et parce que je t'ai déjà trop aidé.
Une remarque, quand même :
Je ne sais pas ce qu'est cette histoire de trou, mais...
Ton explication n'est pas suffisante.
D'après ce que j'ai cru comprendre, le RS-485 ne ferait que du half-duplex (un seul point émet à la fois, donc le µC ne pourrait pas émettre une commande Y en...
Il faut m'expliquer comment le RS-485 peut le faire.
Sur ce sujet, si je ne comprends pas comment ça marche, je vais partir du principe que ça ne marche pas.
D'après ce que j'ai lu (ou plutôt...
PS. J'ai cherché un peu des infos sur le RS-485, visiblement c'est du half-duplex géré en "software". Je suis pas sûr d'avoir compris, mais j'ai l'impression il faudrait donc envoyer une commande à...
Salut,
Il y a plusieurs possibilités.
Évidemment le buffer d'entrée des moteurs n'est pas infini, mais surtout il pourrait être limité à une commande. Dans ce cas il faut attendre la réponse du...
Content que ça marche.
Je pense que tu es sur les rails maintenant, tu n'as plus tellement besoin de moi.
Je remets mon code après correction de quelques fautes de frappe et une réorganisation du code de RX.
Si tu modifies à nouveau quelque chose (comme quand tu avais passé le flag UDRIE0 à 1),...
Je ne comprends pas tes réponses. Il ne s'agit pas de suivre ma logique, mais celle de la doc du µC.
Peut-être que je me plante sur le fonctionnement de l'interruption sur UDRE0 et dans ce cas il...
Oui, là où j'ai écrit "data" c'était bien "c" que je voulais dire.
Concernant ton test, j'ai un gros doute tout d'un coup : dans l'initialisation, est-ce que tu mets le bit UDRIE0 à 0 ou à 1 ?
Je...
Attention à l'ordre des conditions, mon code était de la forme :
if (...)
{
...
return;
}
// Le code ci-dessous ne s'exécute que si la 1ère condition était fausse
if (...)
{
Si tu soupçonnes cette fonction, tu peux la simplifier pour ne tester que les autres : quand tu reçois '\r' retourne directement "\x06".
Après ça, si tu ne reçois pas ACK côté PC après avoir envoyé...
Voilà, maintenant tu sais que le µC n'a rien répondu.
C'est le pire cas, puisque le bug peut être n'importe où, mais c'était aussi le plus probable.
Ah, j'ai zappé une chose importante. Je crois que ReadFile renvoie TRUE en cas de time-out.
Essaie avec ce code plutôt :
static bool EnvoieCommande(HANDLE h, const char *s)
{
DWORD length;...
Salut,
Je pensais plus à quelque chose comme :
static bool EnvoieCommande(HANDLE h, const char *s)
{
DWORD dummy;
char c;
// S'il y avait des réponses à lire depuis la dernière...
Je commence à fatiguer...
La fonction EnvoieCommande signale une erreur, ça ne veut pas dire que c'est elle qui a un bug.
Il y de grandes chances pour qu'il y ait des bugs dans le code du µC. Je...
Je comprends pas l'utilité de ta capture d'écran.
Je n'ai pas non plus compris le début de ton message.
Pour le reste, voici une explication de mon code :
Principe :
Les caractères reçus par...
Tu peux commencer par rajouter des messages d'erreur détaillés dans la fonction EnvoieCommande, pour savoir si c'est le ReadFile qui a fait un time out (c'est le plus probable).
Non, c'est bien usart_command_size :
- usart_command_size est la taille de la commande reçue
- usart_command_max_size est la taille (- 1) du buffer contenant la commande reçue
On lit la commande...
Concernant les "...max_size" j'ai oublié en cours de route que j'en avais défini une pour les 2 buffers. Donc remplace usart0_tx_buffer_max_size et usart1_tx_buffer_max_size par...
Pas la peine de me flatter.
Voici du code approximatif comme d'habitude, car je n'ai pas de compilo C++ aujourd'hui non plus :
Microcontrôleur :
#include <avr/io.h>
#include <avr/interrupt.h>...
OK, donc il suffit de remplacer la file de transfert par un buffer de commande.
Je te rappelle que dans ton fichier texte il y a des valeurs supérieures à 255 même après conversion en pas moteur,...
Je viens de réaliser que pour l'écho tu n'as pas récupéré le code où j'utilisais l'interruption sur UDRE0. Mais tu auras besoin de l'interruption sur UDRE1 pour le programme final, donc c'est mal...
OK, mais là tu pourrais acheter une carte RS485 pour ton PC et tu n'aurais plus besoin du µC. Donc je ne comprends toujours pas l'intérêt.
Tu as changé d'avis alors ?
Que veux-tu dans la...
Salut,
Je suis désolé, mais j'ai eu plus de boulot que prévu.
Je viens de jeter un oeil, et les réponses à mes questions sont en page 10 de la doc, dans le paragraphe "Controller response".
On...
OK. Je pensais que c'était comme certaines machines qui utilisent l'adresse 1 par défaut pour le maître, et 2, 3, 4... pour les machines. J'avais vu ça sur des monnayeurs par exemple.
J'ai pas...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.