Étape 3: « seul à la maison »: le logiciel
Le programme ci-dessus montre comment conduire mon stepper particulier et vous devrez peut-être modifier les valeurs en cours d’écriture PORTB si vous avez anotehr moteur pas à pas. Comme la Attiny13 est assez petite en mémoire et aussi ne fournit pas trop d’épingles, le programme manque certaine sophistication. Écrit directement au port est OK, mais dans ce cas, il va également écrire un « 0 » et PB4 PB5. PB5 n’est pas vraiment un problème, mais vous pouvez utiliser PB4. Dans mon cas, c’est où j’ai mis mon servo et qui ne cause pas trop un problème que je ne les utilisez pas en même temps.
Toutefois, si vous souhaitez utiliser un autre microcontrôleur comme un 328 et vous voulez éviter d’écrire à PB4 et PB5 PB6 et PB7, utiliser un masque d’écrire seulement au bit 0-3. Le masque de le faire est B00001111.
Si vous voulez puis définissez les bits de bits 0 et 2, faire comme ceci :
Au lieu de PORTB = 5, État : PORTB = (PORTB & ~ masque) | (B00000101) ;
Pour ceux qui trouvent cela trop cryptique :
Il premières ANDs la valeur du PORTB avec ne masque pas et ou du résultat avec la valeur nous souhaitons écrire et les ayants droit qui de retour au port.
Ainsi, supposons que PORTB = 00010000 et nous voulons écrire 00000101 dans celui-ci, nous ne pouvons assigner immédiatement car qui serait clairement PB4.
Toutefois, si nous le faisons comme décrit, il devient :
PORTB = (PORTB & 11110000) | 00000101
PORTB = (00010000 & 11110000) | 00000101
PORTB = 00010000 | 00000101
PORTB = 00010101
Nous avons écrit notre valeur et gardé PB4
Alors, pourquoi cant nous immédiatement ou PORTB avec la valeur que nous voulons dans stead de AND-ment il premier ?
Eh bien parce que qui pourrait garder PB4 et PB5... mais il maintient également PB3-PB0 inchangé si l’un d'entre eux contenait déjà un « 1 »
Bien sûr inverser le masque ne serait pas nécessaire si nous définirait elle déjà inversé, mais c’est une pratique courante de le faire comme tel