Étape 2: Logiciel ennuis
Le logiciel devrait être assez facile : dans une boucle de comprendre si il est temps de faire un cycle de PID, fais-le ; Vérifiez si la sortie PWM a besoin d’attention, puis gérer cela ; dans le cas contraire, vérifier si l’interface utilisateur a besoin d’attention.
Dans la pratique, nous avons quelques problèmes sur le PICAXE.
1 il n’y a aucune fonction de synchronisation, en dehors des fonctions de retard.
2 il n’y a aucune interruption de matériel réel avec que vous êtes autorisé à jouer
3] les interruptions "soft" sont vraiment lentes et vous ne pouvez avoir un sens.
4] variables sont des registres. Si vous souhaitez utiliser la RAM, peek et poke hors de lui
5] sortie série est bit-banged et accroche le code pour la durée du transfert.
6] nous pouvons seulement utiliser 16 appels GoSub dans le logiciel, ou perdre un espace programme ailleurs.
Le dernier d'entre eux a été assez facile à corriger... Je me suis débarrassé de GoSubs autant que possible par du code dans la doublure.
Donc, pour contourner les aspects de la synchronisation, j’ai trouvé un post sur les forums sur comment peek/poke le matériel inscrit pour lancer le minuteur. Nous aurions encore à interroger pour les débordements, mais c’est mieux que rien.
Ensuite, étant donné que nous ne pouvons pas définir interruptions réelles, nous avons dû tirer le meilleur parti de celle qui que nous avait. Je l’ai mis sur « A » du côté de la molette. Chaque fois que tourne le bouton, il doit déclencher une interruption et voir si le côté « B » est allé à haut ou basse nous diraient la direction. Si vous le déplacez trop vite, il va perdre la trace, mais c’est ce que nous avons.
Le bouton est interrogé. Rien d’excitant là. Nous simple suivi des débordements de compteur combien il est été maintenue enfoncée pour voir si elle est maintenue enfoncée un peu ou beaucoup.
#4 est inexcusable dans un langage de haut niveau. Le compilateur doit être manipuler cela à moins que je l’ai dit dans le cas contraire. Pour cette raison, vous verrez un tas de charges dans et hors de la mémoire dans le code.
Les retards de série sont assez graves. Cela signifie que si vous écrivez plus de 2 caractères à l’écran, vous allez perdre un débordement de la minuterie. Je n’a pas pris la peine de le contourner. Le calendrier de PID n’est pas précis, et ni le PWM chronomètre... Cependant, c’est moins de 1 % écart, donc c’est bien dans cette application.