Suite à ton MP, je rebalance ici.
En gros, j'aime bien arduino, car un clique, et hop, ça tourne. Je n'aime pas arduino, car ça fait foirer toute la puissance du proc, tellement c'est fait pour les débutants.
Dans le fichier ci-dessous, tu verras jusqu'où j'ai du aller pour gérer mon petit moteur...
http://pop.studio.free.fr/imgtmp/pap_0.h
pap_0.h contient donc la gestion du moteur. comme ce code est lié à un ensemble de 2800 lignes de code, tout n'y est pas et tout seul, il ne marchera pas. J'espère seulement que le peu de commentaires t'aideront à y voir plus clair...
Si tu es patient, une prochaine version (d'ici un mois) sera plus loquace et plus "portable"...
Pour résumer, j'utilise un timer 16 bits. Un timer, c'est un compteur qui tourne tout seul dans son coin et provoque des interruptions à intervalles réguliers. Du coup, quelque soit ton programme, il sera interrompu au bon moment pour générer une impulsion qui fera avancer ton moteur d'un pas. Chose que ne font bien sûr pas les libs du net qui utilisent des usines à gaz chronovores, alors qu'un simple timer fait des miracles, et qu'il y en a 3 sur la UNO, 6 sur la MEGA...
Avec ce code (plus gestion d'un minitel en guise de terminal, surveillance de fins de courses, LCD 16x2 en temps réel), je peux pousser mon moteur à 7500 pas par seconde (pas essayé plus, car je trouve que faire avancer un pont de CNC qui pèse 8kg à 10cm/s, ça me va très bien pour un moteur sous 24V / 2A). La seconde version en cours me permettra d'aller encore plus vite, à l'aide d'un joystick (j'ai craqué, 40€ pour un 3 axes, idéal pour piloter une CNC en manuel).
Bref, je ne peux qu'aider un programmeur qui connait les architectures de processeurs, pas un débutant car j'aborde des notions très... hard...