Inleiding tot de Microcontroller Debugging (en een Pomodoro-Timer) (9 / 9 stap)

Stap 9: Super loodgieter Pomodoro-Timer Code!


main.c


#include "msp430g2211.h"
#include "notes.h"

unsigned int klikken = 0;
unsigned int seconden = 0;
unsigned int minuten = 0;
unsigned int new_minute = 0;
Const unsigned int pomodoro_length = 25;
Const unsigned int pomodoro_break = 5;

#define LED4 bits1
#define LED3 BIT2
#define LED2 BIT3
#define LED1 BIT4
#define LED0 BIT5
#define ZOEMER BIT6
#define POWER BIT7

VOID setLEDs (char waarde) {}
if(Value & 0x10)
P1OUT | = (LED4); LED4 ingeschakeld
anders
P1OUT & = ~ (LED4); LED4 verrekening

if(Value & 0x08)
P1OUT | = (LED3); LED3 ingeschakeld
anders
P1OUT & = ~ (LED3); LED3 verrekening

if(Value & 0x04)
P1OUT | = (LED2); LED2 aangezet
anders
P1OUT & = ~ (LED2); LED2 verrekening

if(Value & 0x02)
P1OUT | = (LED1); LED1 aangezet
anders
P1OUT & = ~ (LED1); LED1 verrekening

if(Value & 0x01)
P1OUT | = (LED0); LED0 aangezet
anders
P1OUT & = ~ (LED0); LED0 verrekening
}

void main (void) {}

unsigned int pomodoro_remain = pomodoro_length + pomodoro_break;

WDTCTL = WDTPW + WDTHOLD; Watchdog-timer om te voorkomen dat de time-out reset stoppen

BCSCTL1 = CALBC1_1MHZ; DCO ingesteld op 1MHz fabriek kalibratie waarde
DCOCTL = CALDCO_1MHZ;

P1DIR | = (LED0 + LED1 LED2 + LED3 + LED4 + BUZZER + POWER); alle LED pinnen en zoemer als output
P1DIR | = MACHT; MACHT blijft op totdat we willen doden van onze eigen macht
P1OUT & = ~ (LED0 + LED1 LED2 + LED3 + LED4 + ZOEMER); alle LED's en buzzer af

CCTL0 = CCIE; CCR0 interrupt ingeschakeld
CCR0 = 50000; clock deler
TACTL = TASSEL_2 + MC_1; SMCLK, upmode
_BIS_SR(GIE); interrupt inschakelen

setLEDs(pomodoro_remain);
playTheme();

while(pomodoro_remain) {}
if(minutes > new_minute) {}
new_minute = minuten;
pomodoro_remain--;
setLEDs(pomodoro_remain);
if(pomodoro_remain == pomodoro_break) {}
playFlagTune();
} else {}
pieptoon (G2, 124); .25 pieptoon, behalve wanneer we het einde bereiken
}
}
}

play1up(); definitieve klokkenspel
P1OUT & = ~ (macht); POWER verrekening
Slapen voor altijd... moet niet bereiken, maar wie weet? :)
_BIS_SR (LPM1_bits + GIE);

}

Timer A0 interrupt service routine
#pragma vector = TIMERA0_VECTOR
void Timer_A (void) __interrupt
{
Wij zullen krijgen genaamd op 1Mhz / 50k = 20 keer een seconds
klikken ++;
Als (klikt op > = 20) {}
Clicks = 0;
seconden ++; voorschot klok voor elke seconde
Als (seconden > = 60) {}
seconden = 0;
minuten ++;
}
}
}

Notes.h


Dit moet niet hier, maar ik was in een haast om te dienen
vóór de wedstrijd liep termijn uit :)
#define ZOEMER BIT6

Definitie van de toelichting frequecies in 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

VOID delay_ms (unsigned int ms) {}
unsigned int i;
voor (ik = 0; ik < = ms; i ++)
__delay_cycles(1000);
}

VOID delay_us (unsigned int ons) {}
unsigned int i;
voor (ik = 0; ik < = us; i ++)
__delay_cycles(1);
}

Deze functie genereert de blokgolf, waardoor de piëzo-luidspreker geluid op een bepaalde frequentie.
VOID pieptoon (unsigned int opmerking, lange duur) {}

lang uitstellen = (long)(62500/note); Dit is de semiperiod van elke noot.
lange tijd = (long)((duration*100)/delay); Dit is hoeveel tijd we nodig hebben om te besteden aan de notitie.

voor (lang ik = 0; ik < tijd; i ++) {}
P1OUT | = ZOEMER; Set zoemer op...
delay_us(delay); .. .voor een semiperiod...
P1OUT & = ~ ZOEMER; .. .en resetten...
delay_us(delay); .. .voor de andere semiperiod.
}
}

ongeldig playTheme(void) {}
thema
4|ee-e-ce-g---|| c---e-ga-FG-e-cd---||
//3|-------------g----|| ---g--e--a-b-AA-g---b---||
//2|-------------g----|| ---------------------------------||
pieptoon (E4, 124); pieptoon (E4, 124); delay_ms(124);
pieptoon (E4, 124); delay_ms(124);
pieptoon (C4, 124); pieptoon (E4, 124); delay_ms(124);
pieptoon (G4, 124); delay_ms(496);
pieptoon (G3, 124); delay_ms(496);
pieptoon (C4, 124); delay_ms(248);
pieptoon (G3, 124); delay_ms(248);
pieptoon (E3, 124); delay_ms(248);
pieptoon (A3, 124); delay_ms(124);
pieptoon (B3, 124); delay_ms(124);
pieptoon (As3, 124); pieptoon (A3, 124); delay_ms(124);
pieptoon (G3, 124); pieptoon (E4, 124); delay_ms(124);
pieptoon (G4, 124); pieptoon (A4, 124); delay_ms(124);
pieptoon (F4, 124); pieptoon (G4, 124); delay_ms(124);
pieptoon (E4, 124); delay_ms(124);
pieptoon (C4, 124); pieptoon (D4, 124); pieptoon (B4, 124);
klinkt beter zonder de laatste regel tenzij lus
}

ongeldig play1up(void) {}
1UP geluid
pieptoon (E5, 62); delay_ms(62);
pieptoon (G5, 62); delay_ms(62);
pieptoon (E6, 62); delay_ms(62);
pieptoon (C6, 62); delay_ms(62);
pieptoon (D6, 62); delay_ms(62);
pieptoon (G6, 312);
}

VOID playFlagTune (void) {}
vlag *
pieptoon (G2, 124);
pieptoon (C3, 124);
pieptoon (E3, 124);
pieptoon (G3, 124);
pieptoon (C4, 124);
pieptoon (E4, 124);
pieptoon (G4, 372);
pieptoon (E4, 372);

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

pieptoon (As2, 124);
pieptoon (D3, 124);
pieptoon (F3, 124);
pieptoon (As3, 124);
pieptoon (D4, 124);
pieptoon (F4, 124);
Beep (As4, 372);
Beep (As4, 124);
Beep (As4, 124);
Beep (As4, 124);
pieptoon (E4, 372);
}

Gerelateerde Artikelen

12V-180kV: een batterij aangedreven Marx-Generator (en inleiding tot de elektronica)

12V-180kV: een batterij aangedreven Marx-Generator (en inleiding tot de elektronica)

Als je dit Instructable leest, één ding is waarschijnlijk waar: u geïnteresseerd bent in hoogspanning! Zo ja, bent u bij ons aan het juiste adres; Marx generatoren kan voldoen aan uw dorst voor sparks, pony, en sensatie. Ik maakte deze Marx-Generator
LED Microcontroller Debug-Module

LED Microcontroller Debug-Module

Als het gaat om het debuggen van een microcontroller-circuit, zijn er niet een heleboel eenvoudige opties.  Aangezien een microcontroller circuit meerdere dingen gaande op hetzelfde moment wellicht, het meten van spanningen met een DMM geen optie.  M
Inleiding tot Leatherworking

Inleiding tot Leatherworking

Leder is een geweldig product dat is gebruikt door de mens sinds echt, het begin van de mens. Het is in kleding, schoenen, tassen, riemen en holsters en echt, vrij veel alles wat die je van bedenken kunt kan worden gemaakt van leer.Werken met leer is
Configureren MKS Sbase v1.2 32-bits domeincontroller basics en inleiding tot de Smoothieware.

Configureren MKS Sbase v1.2 32-bits domeincontroller basics en inleiding tot de Smoothieware.

ProlougeIk ben echt blij om te zien hoe deze fundamentele intro in Smoothieware en de MKS Sbase 1.2 controller zoveel aandacht hebben gekregen, en hoop echt dat het gaat om het helpen van mensen aan de slag of besluiten niet te.Ik heb aanvaard in rob
Inleiding tot de MaxMSP

Inleiding tot de MaxMSP

MaxMSP is een visuele programmeertaal waarmee u kunt bouwen van complexe, interactieve programma's zonder enige voorafgaande ervaring schrijven van code.  MaxMSP is vooral handig voor gebouw audio, MIDI, video en grafische toepassingen waar gebruiker
Inleiding tot het installeren van web apps.

Inleiding tot het installeren van web apps.

Webapplicaties zijn een zegen voor uw computeromgeving bieden. Traditioneel zou u computer software applicaties lokaal op elk systeem laden.  Zelfs met geautomatiseerde software kan implementatie systemen, nog steeds worden ondersteunen intensieve. M
How To Make Websites - Complete Inleiding tot de Webdevelopment

How To Make Websites - Complete Inleiding tot de Webdevelopment

Bekijk op YouTubeDeze video serie is het introduceren van websiteontwikkeling voor beginners die niets weet over het maken van websites. Deze eerste aflevering introduceert de software die ik gebruik in mijn workflow om websites te maken om de beste
Inleiding tot de Light Emitting Diode met behulp van Snap Circuits

Inleiding tot de Light Emitting Diode met behulp van Snap Circuits

In deze foto Instructable, leert u over de Light Emitting Diode, of LED. U zult ook leren hoe te bouwen van een eenvoudige schakeling die aantoont hoe de LED werkt met behulp van Snap Circuits.Onderdelen nodig:1 basis raster (11 "x 7.7") # 6SC B
Zomer 2014 Inleiding tot Engineering competitie

Zomer 2014 Inleiding tot Engineering competitie

Juli 3, 2014DOORGroep: Één stukBu JiaqingQian-JunqiXiang YinanYang SiyuanChen MiaomiaoVG100 INLEIDING TOT DE TECHNIEKDEPATMENT VAN INSTALLATIE-EN MACHINEBOUWUNIVERSITEIT VAN MICHIGAN – SHANGHAI JIAO TONG UNIVERSITEIT GEZAMENLIJK INSTITUUT(UM SJTU JI)
Inleiding tot vinyl plotter/snijplotters

Inleiding tot vinyl plotter/snijplotters

dit is een inleiding tot vinyl plotters en scharen.
Inleiding tot Aquaponics

Inleiding tot Aquaponics

Toen ik voor het eerst over aquaponics hoorde, werd ik vrij opgestookt. Het was een onbekend begrip op het moment, zijnde kundig voor vissen en planten in harmonie groeien. Het heeft een paar jaar geduurd, maar ik bouwde tot slot een systeem dat vold
Inleiding tot hardware: schoonmaken en aanvang van de werkzaamheden

Inleiding tot hardware: schoonmaken en aanvang van de werkzaamheden

Hi!Vandaag ga ik u tonen hoe te uw computer schoon, uitstappen van het geval, aan de slag. Dit waarschijnlijk moet komen voordat mijn vorige tutorial [Klik hier], maar ik vergat dat u deze Help-informatie wellicht. Doe opmerkingen achterlaten met je
Inleiding tot Java Programming

Inleiding tot Java Programming

dus als u hebben gezworven op dit instructable, bent u waarschijnlijk op zoek om te leren hoe te programmeren in java of u wil gewoon om te leren hoe om beter te begrijpen hoe uw computer/smartphone/tablet werkt. Java is een programmeertaal die compa
Hoe Hack een Apple Time Capsule met een Raspberry Pi

Hoe Hack een Apple Time Capsule met een Raspberry Pi

Invoering van de "Pi-Capsule." Het is momenteel de enige Apple Time Capsule die u op uw TV aansluiten kunt..., betekent dit dat het een Apple TV? ;-)OK, ok, laten we zeggen dat je hebt een oude Apple Time Capsule rond leggend dat niet meer werkt