À l’occasion, j’ai ont eu recours à un Attiny13, 25, 45 ou 85 dans un projet et juste eu qu’une seule broche courte. Ces puces sont supposés avoir 6 broches d’e/s, mais broche numéro un (PB5/ADC0) double comme broche de remise à zéro et pour l’utiliser comme une tige de I/O, il faut définir les fusibles appropriés dans la puce. Ce n’est pas si difficile, mais le problème est que lorsque ce fusible est réglée, la puce ne peut pas être reprogrammée par SPI, mais a besoin d’un programmeur de tension élevée qu’il faut tout d’abord réinitialiser l’embout fusible spécifique à nouveau.
Bien sûr vous pourriez mettre à niveau à un Attiny2313, mais souvent cela signifie que vous devrez installer un nouveau noyau, ou faire un nouveau Conseil de programmation, mais c’est une douleur aussi bien.
Donc, je me demandais si que réinitialiser pin pourrait être utilisé comme une tige de I/O sans déconner avec les bits de fusible, après tout, encore il n’y a beaucoup de tension pour jouer avec avant de cliquer sur le niveau de remise à zéro
Si c’était un peu pas clair pour moi, ce que la basse tension requise est que la broche Reset a besoin pour une remise à zéro, il semble qu’elle est inférieure à ce qui est généralement interprété comme un « LOW ».
Qui potentiellement ouvre la possibilité d’utiliser la plage entre + Vcc et Vreset pour entrée analogique ainsi que digital - sans réinitialiser la puce
Tout d’abord, j’ai testé la fonction d’entrée analogique comme a une plage plus grande que la fonction d’entrée numérique (comme je m’attendais à la différence entre bas et RESET est très faible). J’ai utilisé un Attiny13, accroché à une LED et résistance à PB0 et relier le contact moyen d’une résistance variable de 25 k à broche 1 et les contacts extérieurs à Vcc et 0V respectivement.
Ensuite, j’ai chargé le Attiny13 avec le programme suivant :
// Using the Reset pin as ADC0 const int Led = 0; int x=0; void setup() { pinMode(Led, OUTPUT); } void loop() { digitalWrite(Led,HIGH); x=analogRead(0); delay(x); digitalWrite(Led,LOW); delay(x); }
Lorsque la résistance variable est tournée tout le chemin jusqu'à la + Vcc rail, la LED clignote à un rythme soutenu. Lorsque je me suis tourné vers le bas de la résistance variable, la fréquence de clignotement est allé vers le haut, c'est-à-dire une DEL clignotante plus rapide... comme prévu. Il a ensuite jusqu'à ce que la LED soudainement cessé de clignoter (comme les coups de pied dans la fonction de réinitialisation). Ergo, il y a une gamme dans laquelle broche 1 peut être utilisé pour l’entrée, tout en conservant sa fonction de réinitialisation.
Il s’avère que le point de remise à zéro est à 9 K ohms (sur 25). Qui est égal à 5 *(9/25) = 45/25=9/5=2.2 Volt.
Ce n’est généralement pas très différent de ce qui est considéré comme un faible et c’est un peu plus élevé que ce que j’ai compris le Vreset être.
Comme bien sûr, vous ne pouvez avoir un circuit qui est toujours sur le point de remise à zéro, nous devons construire sous une certaine forme de protection : quelque chose qui maintient la tension sur la broche 1 de frapper 2,2 volts ou moins.
Nous allons examiner le deuxième circuit. Supposons que la résistance la plus basse de la LDR nous mesurons les circonstances léger nous l’utilisons, 1k. Alors nous savons que le courant qui traverse ce k 1 doit être au minimum de 2.2 mA à rester au-dessus de la tension de la réinitialisation. Par conséquent, la résistance totale de la LDR + la résistance doit être 5/2.2=2.27k, d'où la résistance doit être minimale 1,27 k. Les valeurs plus proches de la E12 sont k 1,2 et 1,5 k et nous devrions opter pour 1,2 k pour être sûr. (1. 2 k -> 2,27 volt /1.5 k -> 2 volt)
Bien sûr un peut utiliser le circuit avec la résistance et LDR échangés, mais alors il est beaucoup plus difficile à calculer qu'une résistance sans danger comme dans l’obscurité la valeur de la LDR peut aller jusqu'à plusieurs Mega Ohm, appelant à une résistance qui se trouve dans cette même gamme.
Si vous souhaitez utiliser un potentiomètre sur PB5, alors vous devez connecter un côté à Vcc, la broche variable tp PB5 et l’autre à la masse via une résistance donc le contact moyen ne frappera jamais 2,2 Volts.
Vous pouvez calculer la valeur de cette résistance de la valeur de la résistance variable avec la formule
r = 0,58 P
Dans laquelle r est la valeur de la résistance et P la valeur du potentiomètre. Avec un potentiomètre k 10, vous devrez utiliser une résistance k 5,8. Qui limitent la portée de lecture de l’entrée analogique, mais au moins vous pouvez l’utiliser comme une entrée analogique.
Juste un mot de « prudence » les valeurs de résistance, que j’ai trouvé ont été mesurées par un multimètre décent, mais il n’est pas hors pair. Dans « votre » cas vous pouvez avoir besoin d’une résistance qui a une valeur légèrement différente et bien sûr que cela dépend aussi de la résistance variable ou toute autre source d’entrée que vous utilisez.
Compte tenu du fait que le niveau de remise à zéro est sur 2,2 volts, je n'ai pas pris la peine d’essayer si cela fonctionnerait avec digitalRead