Begin Microcontrollers deel 6: Het schrijven van de eerste programma voor zwenking op een LED


Ik weet dat u bent klaar om te schrijven van het eerste programma. Je hebt meegemaakt veel tot nu toe! Terwijl we op het onderwerp, recapituleer de gebeurtenissen. U ging naar buiten en gekocht van de Atmel AVR Microcontroller van uw keuze. TheATMega32 koos ik voor mijn gebruik. U waren ingevoerd om het concept van microcontrollers hoe ze werken; en werden ook geïntroduceerd voor de programmeur, het apparaat waarmee de overdracht van het programma in de microcontroller. U bouwt een handige interface waarmee de SPI-pinnen sluit aan op de juiste pennen van de microcontroller. U gecontroleerd dat de programmeur (USBTinyISP)-stuurprogramma's correct zijn geïnstalleerd voor de 32-bits en 64-bits versies van Windows (XP, 7 en Vista). U ook geïnstalleerd de programmering milieu geïnstalleerd de "Programming Environment" genoemd WinAVR, zodat u kunt hebben van een omgeving waarin uw programma te schrijven, en breng het in de microcontroller. En om ervoor te zorgen dat alles correct werkt, gebruikt u avrdude getest de programmeur terwijl aangesloten op de computer en de microcontroller. Herinneren dat dit programma is het programma overdracht nut om verder te gaan onze gecompileerde programma in het geheugen de microcontroller. Ten slotte bouwde u het eerste circuit zodat we iets hadden te schrijven van een programma voor. Oef... dat was een stuk! Maar aangezien u sprong door alle van deze hindernissen, het harde werk is voorbij en het is glad zeilen van hier op. Hopelijk konden u krijgen door middel van de vorige stappen probleemloos--dus nu laten we krijgen op met ons eerste programma.

Omwille van de vereenvoudiging, laten we categoriseren de functie van de microcontroller in drie categorieën: controle, sensing en communicatie. We laten de details over het ontwikkelen van elk van deze functies, en ingaan op deze details als we de verschillende programma's schrijven. Merk op dat er vele manieren om deze functies programmeren. Voor het eerste programma maken we de microcontroller "control" iets. En zoals u uit de vorige post weet, we zullen worden met behulp van een LED voor dit doel. Kortom, wij zullen inschakelen de LED. Ja ik weet het... saai, recht? Nou moet ik ergens beginnen! Zoals ik u door de ervaring van de programmering meenemen, zal ik toevoegen meer complexiteit een beetje op een moment zo u gemakkelijk in staat bent om uw hoofd wikkelen rond deze belangrijke concepten.

Dus op dit punt waarschijnlijk vraagt u... Hoe maken we een programma om te controleren van een LED? Nou, het is echt gemakkelijk: We zullen gewoon vertellen Pin0 op PORTB voor de uitvoer van 5 volt. Vergeet niet dat dit de pin die de positieve leiding (anode) is aangesloten. De eerste toets in dit scenario is "uitvoer", en de volgende is "5 volt." Er is een manier die kunnen we het vertellen van een bepaalde pin moet worden ingesteld te worden een vermogen van het MCU. Zodra een pin is ingesteld op het bieden van uitvoer, zal u vervolgens zitten kundig voor besturingselement dat pin en maak het ofwel hoge (5 volt) of het lage (nulspanning). En aangezien er slechts twee staten voor deze pin in de uitvoermodus (5v of 0v), en slechts twee staten voor de mode zelf (ingang of uitgang), hoeft u alleen de waarde instellen op logische 1 of een 0. Merk op dat dit moet worden uitgevoerd voor elke pin die wij in onze schakeling wilt gebruiken. Maar voordat we naar inpluggen in een 1 of 0, laten we praten over invoer ten opzichte van de uitvoer. Als een pin in ingangsfunctie is luistert het naar een spanning. Als de pin in de uitvoermodus is kan de it worden gebracht op 5v of niet 0v in rekening gebracht. That's it!

Er zijn vele manieren om dit te doen. Dit is niet te verwarren u, maar eerder om dingen eenvoudiger te maken. Ik zal de invoering van u aan één van de vele manieren om deze taak te volbrengen, en verderop zal ik uitleggen enkele andere methoden tijdens het schrijven van andere programma's. Merk echter op dat terwijl deze eerste methode geweldig is voor de invoering van het concept, het is waarschijnlijk niet zo goed in de praktijk. Daarom ziet u andere methoden in toekomstige programma's, die contextuele pinnen (die pinnen aan beide zijden van de pin van belang) niet beïnvloed, verlaten zal aangezien ze kunnen heel goed hebben al eerder ingesteld in het programma. Maar aangezien we een eenvoudig programma schrijven, we zullen niet zorgen over deze complexiteit op dit moment.

Te halen de uitvoermodus voor een PIN-code, gebruikt u de Data richting registreren (DDR). Oh mens! Wat is een register?!? Laat dit u zorgen. Een register is gewoon een geheugenlocatie die maakt de microcontroller die reageren op een bepaalde manier. We gebruiken een register een status voor de microcontroller instellen, of de microcontroller die iets doen. Het is als reflexen, of prikkelt. Wanneer een persoon een andere persoon kietelt, roept het gelach. Kunnen we de MCU iets doen door een specifieke waarde in een register. Dat is alles wat die u moet weten op dit moment.

Dus wanneer u met het register van de DDR, bent u kundig voor troep de pin gegevens uitvoeren of gegevensinvoer accepteren. Maar we gezegd input of output, nu je gegevens ook zegt. De term "gegevens" gebruikt voegt hier gewoon een andere dimensie aan dit idee in de vorm van "tijd." Als u een pin 5 volt, dan nul volt, en vervolgens de 5 volt weer... verzendt u eigenlijk 1s en 0s. Om de pin, dit is niets meer dan een hoge (5 volt) staat, en vervolgens een laag (nul volt) staat: de MCU ziet deze hoog/laag-logica. En u kunt ook het ontvangen van gegevens op dezelfde manier.

Er zijn verschillende manieren om in te stellen pin0 voor poort B om uit te voeren. Een manier om dit te doen is om te schrijven:

DDRB = 0b00000001;

Laat het me uitleggen. "DDRB" verwijst naar de Data richting Register voor poort B; "0b" is te vertellen de compiler dat wat volgt de binaire uitdrukking van een getal is; en de "1" op het einde geeft de positie van de pin 0 (de eerste pin in poort B). Recall zijn er 8 pinnen voor poort B; pinnen 0 al 7. Er zijn ook 8 cijfers in onze lijn van code. Dus elk cijfer vertegenwoordigt een pin op de poort, en we kunnen de afzonderlijke cijfers gebruiken om specifiek te verwijzen naar één van de pinnen in de haven B. Dus verwijst de '1' aan het einde van onze code-instructie naar de eerste pin in poort B, die in dit geval pin 0 is. (Herinneren dat C en C++ op nul gebaseerde talen, zijn zodat de eerste index van een gegevensstructuur naar verwijst het element zero'th is; de tweede index verwijst naar de eerste element, enz.) We hoeven niet echt te krijgen op dit punt meer complexe, zoals dit zal worden behandeld in veel meer detail in de toekomst tutorials. Echter als u meer weten over het binaire systeem wilt, kijk dan hier.

Nu moeten we toepassen van 5v op de pin. Dit werkt net als de code-instructie voor DDR die we hierboven gebruikten. We zullen een binair getal gebruiken 5v om op te zetten die pin (pin-nummer 0) met behulp van deze verklaring:

PORTB = 0b00000001;

Het enige verschil tussen deze en de vorige verklaring is dat zijn we nu met behulp van het register van de poort. Dit register kent de pinnen van die specifieke poort, en geeft ons toegang tot de werkelijke waarde (logische 0 of 1) opgeven voor deze pinnen.

Nu moeten we praten een beetje over de algemene structuur van ons programma. Alle programma's moeten een opgegeven plaats om te beginnen met de uitvoering. Het is als het geven van iemand een reeks instructies over hoe te een cake maken zonder hen die stap te beginnen over te vertellen. De "belangrijkste" functie is de plek waar alle C/C++-programma's uitvoering start. Zo maken we een hoofdfunctie.

int main(void)
{
}

Om het programma te begrijpen van de DDR en de haven registreren informatie en hoe deze binnen de microcontroller werken, een include-instructie moet worden toegevoegd bevat dat alle informatie over de AVR-microcontrollers. Hierbij verklaring zal waarschijnlijk worden in alle programma's.

#include < avr/io.h >
int main(void)
{
}

Wanneer het compilatieproces wordt gestart, wordt het pre processor-gedeelte van de compiler kijkt in de directory "avr" voor het bestand "io.h". De ".h" extensie hier aangeeft dat dit een headerbestand, en (zoals de naam al aangeeft) de code in dat bestand wordt ingevoegd aan het begin (hoofd) van het bronbestand dat u wilt maken. Nu kunt we invoegen verklaringen van de DDR en poort onze code, omdat de opneming van het headerbestand io.h de compiler heeft geïnformeerd over hen.

#include < avr/io.h >
int main(void)
{

DDRB = 0b00000001; //Data instelling pin0 richting registreren om uit te voeren en de resterende pinnen als input PORTB = 0b00000001; //Set pin0 tot 5 volt

}

Nu is de richting van de pin0 ingesteld op output, met een waarde die is ingesteld op 5v. Maar we zijn nog niet klaar. We moeten houden van de microcontroller uitgevoerd voor onbepaalde tijd, dus we moeten een routine om dit te doen. Dit heet een lus eindeloos (of oneindige). De oneindige lus zorgt ervoor dat de microcontroller stopt niet uitvoeren van haar activiteiten. Ik zal dit in meer detail uitleggen wanneer we dingen hebben te doen in deze for-lus. Er zijn verschillende soorten lussen die we voor dit doel gebruiken kunnen, maar voor deze demonstratie zal ik de while lus. Het betekent hetzelfde in het Engels als in de code: bijvoorbeeld, "terwijl" Ik heb mijn hand omhoog, u moet houden klappen.

#include < avr/io.h >
int main(void)
{

DDRB = 0b00000001; Gegevens richting registreren instelling pin0 uitgang en de resterende pinnen als input
PORTB = 0b00000001; Set pin0 tot 5 volt
while(1)
{

//Code zou hier indien dit nodig om uit te voeren over en over en voorbij... eindeloos

}

}

Opmerking dat we een '1' als het argument voor de while gebruiken lus, omdat iets anders dan '0' een logische true is. Dus de while lus voorwaarde zal nooit iets anders dan logisch waar, en het programma zal blijven voor onbepaalde tijd uit te voeren (dat wil zeggen; Ik houd mijn hand opgeheven).

Dus, hier is de vrucht van onze arbeid. Het was een lange rit tot nu toe zal, maar ik beloof, alles vanaf hier verheugend en veel minder tijdrovend. In de volgende video en instructie, zullen we de LED knipperen. We zullen onderzoeken hoe maak je een vertraging zodat de LED niet zo snel knippert dat het lijkt alsof het niet knippert.

Gerelateerde Artikelen

Begin Microcontrollers deel 8: Het toevoegen van een knop aan de Microcontroller en daarmee doen iets

Begin Microcontrollers deel 8: Het toevoegen van een knop aan de Microcontroller en daarmee doen iets

Een zeer eenvoudige en gemakkelijke manier te voorzien van menselijke interactie met de microcontroller is een knop invoegen in het circuit. We communiceren met computers met behulp van de twee belangrijkste invoerapparaten: de muis en het toetsenbor
Begin Microcontrollers deel 2: Het scheppen van een SPI Interface van de programmeur de microcontroller

Begin Microcontrollers deel 2: Het scheppen van een SPI Interface van de programmeur de microcontroller

Hallo, we hopen dat u genoten deel 1 van begin Microcontrollers. We gaan beginnen te praten over interfaces en hoe u uw microcontroller om te communiceren met een computer te verplaatsen langs in deel 2.Dus, op dit punt, moet u vertrouwd met het conc
Hoe het schrijven van een grote schaal in de muziek

Hoe het schrijven van een grote schaal in de muziek

Samenvatting: bijna alle muziek die we gewend zijn te horen in ons dagelijks leven is tonale, betekenis dat het klinkt volledig en zoals u zou verwachten dat het nummer te klinken. Nadat u hebt volledige dit instructable, zult u beter begrijpen hoe d
Creëren van uw eerste programma In Visual Basic

Creëren van uw eerste programma In Visual Basic

dit instructable zal u tonen hoe te programmeren van Microsoft Visual Basic 2005 Express Edition. Het voorbeeld die u vandaag maakt is een eenvoudige image viewer.Als je dit instructable gelieve duw de + knop aan de bovenkant van de instructable. Bed
Begin Microcontrollers deel 5: De programmeur te testen en het opbouwen van het eerste Circuit

Begin Microcontrollers deel 5: De programmeur te testen en het opbouwen van het eerste Circuit

Tot nu toe hebt u de software geïnstalleerd en de interface die voor een eenvoudige aansluiting van de programmeur de microcontroller (MCU zorgt) gebouwd. Voor de volgende stap, zal u een breadboard (degene met getallen zijn erg behulpzaam), een LED
Begin Microcontrollers deel 4: Installatie van de programmeeromgeving (WinAVR)

Begin Microcontrollers deel 4: Installatie van de programmeeromgeving (WinAVR)

Welkom bij de volgende stap in onze serie. Wij zullen sommige fundamentele programmeerelementen nu introduceren. Deze tutorial is gewoon over het installeren van uw programmeeromgeving. De programmeeromgeving die we zullen gebruiken heet WinAVR.Om te
Hoe het schrijven van een 'Hello World!'-app voor Android

Hoe het schrijven van een 'Hello World!'-app voor Android

InleidingDeze tutorial is bedoeld voor iedereen die heeft geen ervaring in het programmeren van toepassingen voor het Android operating system, maar zou willen. Deze is zeer eenvoudig, en het installeren van de nodige programma's is ingewikkelder dan
Schmidt: Stratigies voor het schrijven van een impromtu op een boek dat je niet lezen

Schmidt: Stratigies voor het schrijven van een impromtu op een boek dat je niet lezen

In dit instructable ik zal geven van instructies over hoe je succesvol in een Engels klasse dat toegewezen boek te lezen, terwijl ze niet te lezen.Er zijn geen echte vereisten opslaan wat u met schrijft en een boek zul je niet lezen.Stap 1: In de kla
Begin Microcontrollers deel 12: Inleiding tot de Interrupts

Begin Microcontrollers deel 12: Inleiding tot de Interrupts

In dit deel van de tutorial die we over interrupts praten zullen werken bijvoorbeeld met behulp van de teller. Interrupts verbeteren het gebruik van microcontrollers in een enorme manier. Interrupts maken uw programma's reageren op de hardware van de
Maid of Honor gids: het schrijven van een Toast

Maid of Honor gids: het schrijven van een Toast

Als meisje van eer u naar verwachting hebben een toast bereid te zeggen bij de receptie. Dit kan voelen als een ontmoedigende taak, maar het is niet slecht als je wat je gaat weet zeggen.Hier is een snelle richtsnoer kunt gebruiken bij het schrijven
Hoe het schrijven van een blogpost die zullen lezen en gedeelde

Hoe het schrijven van een blogpost die zullen lezen en gedeelde

iedereen deze dagen heeft een blog, van stay-at-home moeders delen van tips over het verhogen van de drieling aan auteurs die besluiten om te bakken op recept dagelijks van Julia Childs kookboek. Maar de beste blogs hebben berichten die lezers graag
Hoe het schrijven van een lied

Hoe het schrijven van een lied

Heb je ooit wilde om een lied te schrijven maar je denkt dat het te hard?Het schrijven van dat een lied is een stuk makkelijker dan mensen zouden denken, laat het me uitleggen van het proces dat ik gebruiken.Stap 1: materialen-Pen of potlood-Papier-I
Hoe het schrijven van een overtuigende brief

Hoe het schrijven van een overtuigende brief

wil je mensen met u eens?  Wilt u om uw weg met je ouders en je vrienden?  Volg deze eenvoudige stappen om een brief schrijven om te overtuigen van anderen.Stap 1: Kies een onderwerp.  Uw onderwerp moet iets dat je bent gepassioneerd of kennis over.B
Het schrijven van een Instructable

Het schrijven van een Instructable

navigeren door de Instructables website kunnen verwarrend zijn voor beginners. Ik ben van plan om op te ruimen mysteries rond Instructables. Dit Instructable gebruikt de oude editor die meer mensen kennen.Stap 1: Netiquette Netiquette zijn de algemen