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

Étape 9: Super plombier minuteur Pomodoro Code !

main.c


#include « msp430g2211.h »
#include « notes.h »

unsigned int clics = 0 ;
unsigned int secondes = 0 ;
unsigned int minutes = 0 ;
unsigned int new_minute = 0 ;
const unsigned int pomodoro_length = 25 ;
const unsigned int pomodoro_break = 5 ;

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

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 ;

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 ;

P1DIR | = (LED0 + LED1 LED2 + DEL3 + LED4 + BUZZER + PUISSANCE) ; toutes les broches de la LED et buzzer comme sortie
P1DIR | = PUISSANCE ; PUISSANCE reste allumé jusqu'à ce que nous voulons tuer notre propre pouvoir
P1OUT & = ~ (LED0 DEL1 DEL2 + DEL3 + LED4 + BUZZER) ; tous les LEDs et buzzer off

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

setLEDs(pomodoro_remain) ;
playTheme() ;

{while(pomodoro_remain)}
if(minutes > new_minute) {}
new_minute = minutes ;
pomodoro_remain--;
setLEDs(pomodoro_remain) ;
if(pomodoro_remain == pomodoro_break) {}
playFlagTune() ;
} else {}
bip (G2, 124) ; .25 bip, sauf quand nous atteignons la pause
}
}
}

play1up() ; carillon final
P1OUT & = ~ (pouvoir) ; Mettez l’interrupteur POWER off
Dormir pour toujours... ne devrait pas parvenir à cela, mais qui sait ? :)
_BIS_SR (LPM1_bits + GIE) ;

}

Routine de service de minuteur A0 interruption
#pragma vecteur = TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
On est appelés à 1Mhz / 50k = 20 fois une secondes
clics ++ ;
Si (clique sur > = 20) {}
clique sur = 0 ;
secondes ++ ; horloge d’avance pour chaque seconde
Si (secondes > = 60) {}
secondes = 0 ;
minutes ++ ;
}
}
}

Notes.h


Cela ne devrait pas être ici, mais j’étais pressé de présenter
avant le concours délai manqué:)
#define BUZZER BIT6

Définition de frequecies les notes en Hertz.
#define C8 4186
#define B7 3951
#define As7 3729
#define A7 3520
#define Gs7 3322
#define G7 3136
#define Fs7 2960
#define F7 2794
#define E7 2637
#define Ds7 2489
#define D7 2349
#define Cs7 2217
#define C7 2093
#define B6 1976
#define As6 1865
#define A6 1760
#define Gs6 1661
#define G6 1568
#define Fs6 1480
#define F6 1397
#define E6 1319
#define Ds6 1245
#define D6 1175
#define Cs6 1109
#define C6 1047
#define B5 988
#define As5 932
#define A5 880
#define Gs5 831
#define G5 784
#define Fs5 740
#define F5 698
#define E5 659
#define Ds5 622
#define D5 587
#define Cs5 554
#define C5 523
#define B4 494
#define As4 466
#define A4 440
#define Gs4 415
#define G4 392
#define Fs4 370
#define F4 349
#define E4 330
#define Ds4 311
#define D4 294
#define Cs4 277
#define C4 262


#define B3 247
#define As3 233
#define A3 220
#define Gs3 208
#define G3 196
#define Fs3 185
#define F3 175
#define E3 165
#define Ds3 156
#define D3 147
#define Cs3 139
#define C3 131
#define B2 123
#define As2 117
#define A2 110
#define Gs2 104
#define G2 98
#define Fs2 92
#define F2 87
#define E2 82
#define Ds2 78
#define D2 73
#define Cs2 69
#define C2 65
#define B1 62
#define As1 58
#define A1 55
#define Gs1 52
#define G1 49
#define Fs1 46
#define F1 44
#define E1 41
#define Ds1 39
#define D1 37
#define Cs1 35
#define C1 33
#define B0 31
#define As0 29
#define A0 28

Sub delay_ms (ms unsigned int) {}
unsigned int i ;
pour (i = 0; i < = ms; i ++)
__delay_cycles(1000) ;
}

void delay_us (unsigned int nous) {}
unsigned int i ;
pour (i = 0; i < = nous; i ++)
__delay_cycles(1) ;
}

Cette fonction génère l’onde carrée qui rend le haut-parleur piézo acoustique à une fréquence déterminée.
{} void bip (unsigned int note, longue durée)

retard = (long)(62500/note) ; Il s’agit de la semiperiod de chaque note.
longtemps = (long)((duration*100)/delay) ; C’est combien de temps nous devons consacrer sur la note.

pour (longtemps j’ai = 0; i < temps; i ++) {}
P1OUT | = SONNERIE ; Jeu de sirène sur...
delay_us(Delay) ; .. .pour une semiperiod...
P1OUT & = ~ BUZZER ; .. .alors le réinitialiser...
delay_us(Delay) ; .. .pour l’autre semiperiod.
}
}

void playTheme(void) {}
Thème
4|ee-e-ce-g---|| c---e-GA-FG-e-CD---||
//3|-------------g----|| ---g--e--a-b-AA-g---b---||
//2|-------------g----|| ---------------------------------||
bip (E4, 124) ; bip (E4, 124) ; delay_ms(124) ;
bip (E4, 124) ; delay_ms(124) ;
bip (C4, 124) ; bip (E4, 124) ; delay_ms(124) ;
bip (G4, 124) ; delay_ms(496) ;
bip (G3, 124) ; delay_ms(496) ;
bip (C4, 124) ; delay_ms(248) ;
bip (G3, 124) ; delay_ms(248) ;
bip (E3, 124) ; delay_ms(248) ;
bip (A3, 124) ; delay_ms(124) ;
bip (B3, 124) ; delay_ms(124) ;
bip (As3, 124) ; bip (A3, 124) ; delay_ms(124) ;
bip (G3, 124) ; bip (E4, 124) ; delay_ms(124) ;
bip (G4, 124) ; bip (A4, 124) ; delay_ms(124) ;
bip (F4, 124) ; bip (G4, 124) ; delay_ms(124) ;
bip (E4, 124) ; delay_ms(124) ;
bip (C4, 124) ; bip (D4, 124) ; bip (B4, 124) ;
sonne mieux sans la dernière ligne, sauf en boucle
}

void play1up(void) {}
1UP sound
bip (E5, 62) ; delay_ms(62) ;
bip (G5, 62) ; delay_ms(62) ;
bip (E6, 62) ; delay_ms(62) ;
bip (C6, 62) ; delay_ms(62) ;
bip (D6, 62) ; delay_ms(62) ;
bip (G6, 312) ;
}

void playFlagTune (void) {}
drapeau *
bip (G2, 124) ;
bip (C3, 124) ;
bip (E3, 124) ;
bip (G3, 124) ;
bip (C4, 124) ;
bip (E4, 124) ;
bip (G4, 372) ;
bip (E4, 372) ;

bip (Gs2, 124) ;
bip (C3, 124) ;
bip (Ds3, 124) ;
bip (Gs3, 124) ;
bip (C4, 124) ;
bip (Ds4, 124) ;
bip (Gs4, 372) ;
bip (Ds4, 372) ;

bip (As2, 124) ;
bip (D3, 124) ;
bip (F3, 124) ;
bip (As3, 124) ;
bip (D4, 124) ;
bip (F4, 124) ;
bip (CC4, 372) ;
bip (CC4, 124) ;
bip (CC4, 124) ;
bip (CC4, 124) ;
bip (E4, 372) ;
}

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