Intro au microcontrôleur débogage (et un minuteur Pomodoro) (4 / 9 étapes)

Étape 4: Ajout de bugs !

Nous allons maintenant ajouter le reste des bugs... euh... code. Ce code a été écrit avec un bug intentionnel mais devrait compiler correctement. Transférez-le sur le microcontrôleur et démarrez une session de débogage.

#include « msp430g2211.h »

#define LED4 BIT1
#define DEL3 BIT2
#define LED2 BIT3
#define LED1 bits4
#define LED0 BIT5
#define BUZZER BIT6

unsigned int clics = 0 ; compteur pour chaque minuterie irq
unsigned int secondes = 0 ; compteur de secondes
unsigned int minutes = 0 ; compteur des minutes
unsigned int new_minute = 0 ; marqueur pour atteindre la minute suivante

options configurables !
const unsigned int pomodoro_length = 25 ; Combien de temps faut-il la pomodoro ? [par défaut : 25]
const unsigned int pomodoro_break = 5 ; et la pause ? [par défaut: 5]

définit les LEDs pour refléter les 5 bits de poids faibles de « valeur »
void setLEDs (valeur char) {}
if(value & 0x10)
P1OUT | = (LED4) ; la valeur LED4 sur
d’autre
P1OUT & = ~ (LED4) ; partit LED4

if(value & 0x08)
P1OUT | = (DEL3) ; la valeur DEL3 sur
d’autre
P1OUT & = ~ (DEL3) ; partit DEL3

if(value & 0x04)
P1OUT | = (LED2) ; LED2 réglée sur
d’autre
P1OUT & = ~ (LED2) ; partit LED2

if(value & 0x02)
P1OUT | = (LED 1) ; LED1 réglée sur
d’autre
P1OUT & = ~ (LED 1) ; LED1 partit

if(value & 0x01)
P1OUT & = ~ (LED0) ; LED0 réglée sur
d’autre
P1OUT | = (LED0) ; LED0 partit
}

void main (void) {

unsigned int pomodoro_remain = pomodoro_length + pomodoro_break ; compteur pour suivre les temps passés

WDTCTL = WDTPW + WDTHOLD ; Arrêter le temporisateur pour empêcher la réinitialisation du délai d’expiration
BCSCTL1 = CALBC1_1MHZ ; La valeur DCO valeur de calibrage d’usine 1MHz
DCOCTL = CALDCO_1MHZ ;

CCTL0 = CCIE ; Interruption de CCR0 activée
CCR0 = 50000 ; taux d’irq minuterie
TACTL = TASSEL_2 + MC_1 ; SMCLK, upmode
_BIS_SR(GIE) ; activer les interruptions

P1DIR | = (LED0 + LED1 LED2 + DEL3 + LED4 + BUZZER) ; toutes les broches de la LED et buzzer comme sortie
P1OUT & = ~ (LED0 DEL1 DEL2 + DEL3 + LED4 + BUZZER) ; tous les LEDs et buzzer off

while(pomodoro_remain) {//let's exécuter cette boucle jusqu'à ce que la pomodoro est faite
if(minutes > new_minute) {//see si nous avons atteint la minute suivante
setLEDs(pomodoro_remain) ; définir les LEDs pour refléter la minute actuelle
new_minute = minutes ; changer notre compteur
pomodoro_remain--; moins de temps reste dans notre pomodoro
}
}
while(1) {} //this est la chanson qui ne finit jamais, certaines personnes ont commencé à chanter il...
}

Routine de service de minuteur A0 interruption
Cela s’exécute lorsqu’une interruption de la minuterie est déclenchée
#pragma vecteur = TIMERA0_VECTOR
__interrupt void Timer_A (void) {}

clics ++ ; Cliquez de nouveau sur chaque 1Mhz / 50k = 20 fois une secondes
Si (clique sur > = 2) {//we're en utilisant le numéro 2 ici au lieu de 20
accélérer le débogage
Si (clique sur > = 20) {//waited une seconde encore ?
clique sur = 0 ; Réinitialisez le compteur...
secondes ++ ; compteur de secondes Advance
Si (secondes > = 60) {//see si nous avons attendu une minute ?
secondes = 0 ; Réinitialisez le compteur de secondes
minutes ++ ; compteur des minutes Advance
}
}
}

Articles Liés

Intro aux microcontrôleurs PIC

Intro aux microcontrôleurs PIC

un minimum de ce que vous devez obtenir commencé à programmer des micros PIC pour une utilisation dans des projets électroniques (robotique, etc.)Étape 1: Ce que vous avez besoin pour le projet Remarque : on dirait que si vous avez windows XP, il n'y
Comment choisir un microcontrôleur

Comment choisir un microcontrôleur

il l'habitude d'être assez limitait le nombre de jetons de microcontrôleur différents disponibles pour les amateurs. Tu dois utiliser tout ce que vous arrivaient à acheter chez le marchand de puce de correspondance, et qui réduit le choix à un petit
Début de la partie microcontrôleurs 12 : Intro aux interruptions

Début de la partie microcontrôleurs 12 : Intro aux interruptions

Dans cette partie du tutoriel que nous allons parler des interruptions de travail utilisant le compteur par exemple. Interruptions améliorent l'utilisation de microcontrôleurs de manière énorme. Interruptions rendre vos programmes réagissent au matér
Qu’un débogage s’affiche pour microcontrôleurs

Qu’un débogage s’affiche pour microcontrôleurs

cet affichage vient dans très maniable si vous travaillez avec la fonction d'ADC de micro-contrôleurs.Il n'a besoin que deux broches pour contrôler l'affichage (trois si vous souhaitez contrôler le loquet aussi). Avec deux sept segments il peut affic
Intro aux GPS avec des microcontrôleurs

Intro aux GPS avec des microcontrôleurs

Une fois que la compétence des opérations strictement militaires, GPS est devenu une partie intégrante de la vie moderne et en relativement peu de temps ! Qui ne voudrait pas envie de savoir quand et où ils sont n'importe où sur la planète ? C'est un
Début microcontrôleurs partie 13 : Intro pour interfacer les LCD

Début microcontrôleurs partie 13 : Intro pour interfacer les LCD

Le microcontrôleur est une merveilleuse pièce de génie et il peut faire beaucoup de choses (avec l'aide de certaines émissions grande), mais c'est toujours une boîte noire opaque. Si vous voulez partager des informations ou vous montrer ce qu'il essa
Groovin ' Grover : Une marionnette microcontrôleur à base

Groovin ' Grover : Une marionnette microcontrôleur à base

Grover Groovin ' est une marionnette manipulée par quatre servos de passe-temps et un contrôleur de servo microcontrôleur à base de Pololu Maestro. Vous pouvez contrôler chacun des membres de Grover indépendamment et lui faire à pied, vague et plus d
Quel microcontrôleur pour votre mode électronique ?

Quel microcontrôleur pour votre mode électronique ?

Ce qui la mode manque ? « Microcontrôleurs » je réponds toujours - et c'est vrai ! Il rend vos vêtements tellement plus intéressant, interactif et communicatif, dès que vous y ajoutez quelques renseignement.Mais ceux qui sont sur le marché ?J'ai comm
Programmation des microcontrôleurs PIC

Programmation des microcontrôleurs PIC

microcontrôleurs PIC sont un outil très utile et polyvalent pour une utilisation dans de nombreux projets électroniques. Ils sont très peu coûteux et facile à trouver. Ils sont aussi très puissants et beaucoup sont capables de vitesses allant jusqu'à
Comment changer fusible bits de Atmega328p AVR - microcontrôleur 8 bits en utilisant Arduino

Comment changer fusible bits de Atmega328p AVR - microcontrôleur 8 bits en utilisant Arduino

Dans ce instructable vous apprendrez comment changer les bits de fusible du microcontrôleur Atmega328p. J'utilise Arduino mega comme programmeur au programme Atmega328P-PU sur maquette. Il est livré avec une valeur par défaut 1MHz interne calibré la
3D imprimés microcontrôleur Dice Roller

3D imprimés microcontrôleur Dice Roller

Il s'agit d'un projet juste pour le plaisir que j'ai fait dans la Digilent MakerSpace. Généralement, chaque fois que je joue des jeux de société j'utilise une application smartphone laminage dés puisque les dés sont si faciles à perdre. J'ai pensé qu
Comment programmer un PIC microcontrôleur & lire un codeur

Comment programmer un PIC microcontrôleur & lire un codeur

Introduction : de jouets électroniques & Jeux pour fours à micro-ondes, microcontrôleurs se trouve à peu près n'importe où ces jours-ci ! Mais comment pouvons-nous rendre ces petits ordinateurs fonctionner pour nos propres projets électroniques ? C'e
Comment programme microcontrôleurs AVR, bon marchés et faciles

Comment programme microcontrôleurs AVR, bon marchés et faciles

Cette volonté instructable guide vous étape par étape comment faire pour exécuter un programme simple en un micro-contrôleur ATMEGA (uC). Si don´t vous savez tout sur comment votre code est stocké dans les microcontrôleurs, il existe essentiellement
UART générique pour n’importe quel microcontrôleur

UART générique pour n’importe quel microcontrôleur

Communiquer avec un micro-contrôleur lors de l'exécution, est très utileinstallation. Il peut être utilisé pour le débogage, ou d'envoyer des commandes etc. L'un des plus simple protocole disponible pour communiquer est UART. Requiere une épingle pou