Étape 17 : Comment ça marche
Elle produit une note musicale en excitant un haut-parleur piézo avec une onde carrée. Une sortie est faite de haute et l’autre est en bas, pendant un certain temps. Après un certain temps, cet État est inversé, la sortie qui a été élevé faible va et l’autre allant d’élevé à faible. L’élément piezo, relié ces deux sorties, voit une onde carrée de deux fois la tension d’alimentation à travers elle et ainsi produit une note forte, plus forte que celle produite si une seule sortie a été utilisée.
Les notes de musique sont produits en faisant varier le délai entre activant/désactivant les broches. La table des retards est selon les données tirées du site de Don Lancaster, www.tinaja.com et reproduit ici. Il a également fourni la routine de retard avec une résolution jusqu'à une période d’instruction unique. La fréquence de la note est produite par une temporisation logicielle et les numéros d’être nourri à cette forme de compteur, le tableau qui se forme à la mélodie. Un « zéro » indique que la fin de la musique est atteinte et que le jeu est à reprendre depuis le début. Un « un » désigne un repos est nécessaire, qu’une période de silence au lieu d’une tonalité est produite.
La période pour laquelle chaque note est émise est mesurée en termes du timer tmr0. Il a la valeur d’incrémentation de l’horloge d’instruction avec un prescaler de 256, le maximum possible. Cinq déborde du Registre timer TMR0 composent une note longueur.
Une copie du bit plus significatif du Registre minuterie est maintenue (drapeaux, tmrh) et si le drapeau est élevé lorsque la minuterie MSB est faible un roulement est réputé avoir eu lieu. Ce contrôle s’effectue au sein de la boucle dans le cadre de l’étiquette « forever » et de l’instruction « goto pour toujours ».
La note suivante doivent être extraites est conservée dans count1. L’instruction « table des appels » revient avec le retard de remarque dans W. Il est ajouté avec zéro pour vérifier la fin de la mélodie. Il est comparé à la valeur à vérifier pour un repos. Si aucun des deux, la valeur de W est transmise à la routine de retard.
Le déroulement du programme dans la boucle de génération Remarque a été égalisé pour prendre le même nombre de cycles pour toutes les conditions, sauf pour le temps que tmr0 roule plus. Cela retentit comme une sorte de TIC-TAC en arrière-plan.
Le fichier Hex fourni a été testé avec un 10F200 et un 10F202 et qu’il fonctionne. Le code source comporte les modifications nécessaires à apporter afin d’être adapté à un 10F204 ou 10F206. Il a également été testé avec un 10F206.
Un 10F220 ou 10F222 pourraient être utilisées, mais besoin d’instructions supplémentaires pour désactiver les périphériques qui ne sont pas utilisés et les paramètres de fusible sera également devront être modifiées.
Amusez-vous et écrivez si vous parvenez à obtenir une machine à musique de travailler. Les huit broches DIP versions de ces micros sont disponibles et ils sont plus faciles à gérer, et ils vont travailler aussi bien dans ce circuit.