AVR Programming with Arduino, AVRdude en AVR-gcc (3 / 7 stap)

Stap 3: De programmering

Een AVR-chip kan op verschillende manieren worden geprogrammeerd.

  1. Installeren van de Arduino Bootloader voor het gebruik van de IDE en taal
  2. Vergadering gebruiken. Hoewel dit kan zeer moeilijk te lezen en te schrijven, kan het zeer efficiënt.
  3. Gebruik Atmel's officiële IDE Atmel Studio, maar het is alleen beschikbaar op Windows, geen Linux of Mac
  4. Programma in uw favoriete C of tekst editor en vervolgens compileren en flash met avr-gcc en avrdude maken.
    Dit biedt een mooi compromis tussen leesbaarheid en efficiëntie, alsmede het werkt op alle platformen.

Ik zal de vierde en laatste optie detail.
Veel ontwerpers werkt hiervoor zoals je zal gewoon een C-programma schrijven: Eclipse, notepad ++, vi, evenals veel meer.

Download de bijgevoegde led_flash.c bestand en de makefile.

Ik gebruikte een ATTiny 85 voor dit project.

Ik zal eerst uitleggen van de code.

De eerste coderegel is:

 #include <avr/io.h> 

De constanten met betrekking tot uw AVR-chip in het programma geïmporteerd. Wanneer u het programma compileert, opgeven u moet het type van AVR-chip die u gebruikt.

De volgende invoer:

 #include <util/delay.h> 

Het gaat hierbij om de functie om de chip te onderbreken tijdens de lus.

Daarna komt enkele definities:

 #define shift_light_up(port) port << 1 
 #define shift_light_down(port) port >> 1 

Hiermee definieert u macro's om te verschuiven van het licht op en neer de keten door één stap.

 #define register_set_output(register) register = 0b11111111 #define enable_first_light(port) port = 0b00000001 

Hiermee definieert u macro's als u wilt instellen een hele register om uit te voeren en om het eerste licht.

Macro's worden in wezen in deze definities maken zodat we niet hoeven de code aan het eind om later te gebruiken. Het kan de code worden veel leesbaarder dan vóór toestaan.

Het instellen van het register op alle 1's in binaire zorgt ervoor dat alle van de pinnen moet een uitgang in plaats van input.
De poort wordt vervolgens de waarde van de pin ingesteld op hoog of laag.

poort << 1 verschuift de ingeschakelde pin door 1 plaats. poort >> 1 het beweegt in de tegenovergestelde richting.

 boolean is_last_pin(uint8_t *port){ if((*port & 0b00010000) > 0) return true; else return false; } boolean is_first_pin(uint8_t *port){ if((*port & 0b00000001) > 0) return true; else return true; } 

Twee functies waarmee de gemakkelijke test als de eerste of laatste pennen worden momenteel gebruikt door de lichten.

Nogmaals, dit maakt de latere code beter leesbaar.

 int main (void){ register_set_output(DDRB); // Set it all to output enable_first_light(PORTB); // Set the first light to on boolean up = true; while(true){ _delay_ms(100); // Dependent on the chip's clock speed, speed must be set if(is_first_pin(&PORTB) == true) //check if it is at the start up = true; else if(is_last_pin(&PORTB) == true) // check if it is at the end up = false; if(up == true) PORTB = shift_light_up(PORTB); // Shift our light up else PORTB = shift_light_down(PORTB); // Shift our light down } } 

Dit is het belangrijkste gedeelte van onze functie. De functie int main(void) wordt aangeroepen wanneer de chip wordt opgestart. We het register B worden alle uitgangen voor het eerst inschakelen. Dan we het eerste licht instelt op en verklaar een Boolean-waarde die welke richting onthoudt te gaan. Elke lus eerste vertragingen voor.2 tweede, vervolgens gecontroleerd als de richting moet veranderen. Het eindelijk het licht in de gegeven richting verschuift en de lus herhaalt.

That's it! het definitieve programma is een beetje geabstraheerd zodat het zeer gemakkelijk leesbaar.

Omhoog volgende: De makefile voor het automatiseren van het compileren en knipperende proces

Gerelateerde Artikelen

Nieuwe software uploaden naar Trinity met behulp van Arduino [Jak nahrát software Ken Trinity with Arduino]

Nieuwe software uploaden naar Trinity met behulp van Arduino [Jak nahrát software Ken Trinity with Arduino]

[ČESKY NÍŽE]Hallo dudes! Hier leert u hoe om te uploaden van nieuwe firmware naar Trinity synth met behulp van de Arduino IDE.Meer info over Trinity is hier: http://www.bastl-instruments.com/Deze methode is om te worden gebruikt voor het bijwerken va
Program je Arduino met een Android toestel!

Program je Arduino met een Android toestel!

Halloin dit Instructable die ik wil je laten zien, kunt hoe u programmeren uw Arduino met uw Androïde apparaat. Het is zeer eenvoudig en goedkoop. Ook het laat ons toe om onze Arduino program waar ooit wij wilt, dit is nuttig voor permanent geïnstall
Stem gecontroleerde Switch with Arduino

Stem gecontroleerde Switch with Arduino

Dit is voor de eerste keer ben het uploaden van mijn project in Inscrutable. Dus als jullie ieder domme vinden negeren fouten gelieve het.Dus, over mijn project, dit is over de stem bediend lichten geïnspireerd door IRON-MAN film. JARVIS door Michel
Program je Arduino met een Android apparaat via Bluetooth

Program je Arduino met een Android apparaat via Bluetooth

Hallo wereld, in dit Instructable wil ik u laten zien hoe te programmeren van de Arduino Uno met uw Androïde apparaat via Bluetooth. Het is zeer eenvoudig en zo goedkoop. Ook het laat ons toe om onze Arduino program waar ooit wij via draadloze blueto
Controleren van de gezondheid van HC-05 Bluetooth module zonder programing of arduino

Controleren van de gezondheid van HC-05 Bluetooth module zonder programing of arduino

dit instructable is om idee over hoe snel het controleren van uw Bluetooth-module voordat begint elk project, dus u zal zeer zeker over de gezondheid van de module.Deze methode controleert volledig uw module omvatten gezondheid van RX en TX pinDus be
Android bluetooth-toetsenbord voor PC - Mac - Raspberry Pi //with arduino

Android bluetooth-toetsenbord voor PC - Mac - Raspberry Pi //with arduino

https://www.YouTube.com/watch?v=q64nO9ByrlIStap 1: Arduino kant Deel de lijst:-Arduino leonardo (Im gebruikt pro micro)-Een bluetooth-module (HC05 of HC06)Verbinding:HC05/06 verbonden aan het leonardo Rx/Tx pinnenArduino gewoon aangesloten op de Rasp
RGB LED lichteffecten met Adafruit Trinket

RGB LED lichteffecten met Adafruit Trinket

Dit instructable is te maken van programmeerbare lichteffecten met behulp van een RGB-LED (dit is een LED met afzonderlijke elementen van rood, groen en blauw) en de low-cost Adafruit Trinket microcontroller. Deze lichten kunnen worden gebruikt en he
Het wijzigen van de fuse-bits AVR Atmega328p - 8-bit microcontroller met behulp van Arduino

Het wijzigen van de fuse-bits AVR Atmega328p - 8-bit microcontroller met behulp van Arduino

In dit instructable leert u hoe u kunt wijzigen van de fuse-bits van Atmega328p microcontroller. Ik ben met behulp van Arduino mega als programmeur aan programma Atmega328P-PU op breadboard. Het komt met een standaard 1MHz interne gekalibreerd oscill
AVRSH: Een tolk opdrachtshell voor Arduino/AVR.

AVRSH: Een tolk opdrachtshell voor Arduino/AVR.

Ooit wilde worden "aangemeld" bij uw AVR microcontroller? Ooit gedacht dat het zou gaaf zijn aan de "kat" een register om te zien van de inhoud ervan? Hebt u altijd al wilde een manier om de nodige energie en individuele perifere sub-s
Honey, I Shrunk de Arduino: verplaatsen van Arduino naar ATtiny en schrijven van uw code in zuivere AVR-C

Honey, I Shrunk de Arduino: verplaatsen van Arduino naar ATtiny en schrijven van uw code in zuivere AVR-C

Arduino is een geweldig hard- en softwareplatform, maar met alle functies is het ook een beetje opgeblazen en vaak hoeft u alleen een klein deel van alle functies. Uw project vereist soms om kleinere en goedkopere apparaten te hebben. Wat je misschie
AVR Dual RGB-Matrix Driver

AVR Dual RGB-Matrix Driver

Een vriend van mij had een geweldig idee voor een geweldig project. Hij wilde een paar servo-tuig dat zou het nabootsen van de beweging van zijn handen met behulp van de beweging van een sprong maken. Op de top van de servo's zou zitten sommige laser
Hoe aan de slag met Eclipse en AVR

Hoe aan de slag met Eclipse en AVR

AVR's programmeren is leuk, maar soms maken de fabrikanten ontwikkelomgevingen code onderhoud een karwei. Als je op zoek naar een vrije, cross-platform, hoge kwaliteit stuk van software voor het programmeren van AVR's Eclipse is een goede keuze.Verpl
Bouwen van een systeem van volledige AVR en Mastermind spelen!

Bouwen van een systeem van volledige AVR en Mastermind spelen!

Het spel Mastermind is al een lange tijd, en ik herinner me het krijgen van een versie van de Raad van bestuur met gekleurde pinnen, toen ik een kind was. Ik hou van dit spel, want het is gewoon door pure logica oplosbaar. Één speler (of een computer
AVR LCD de badge

AVR LCD de badge

dus, you gonna een conferentie/meetup/nerdfest en u wilt iets doen dat u zich onderscheidt van normale mensen.  Een LCD de badge wordt verzorgd door een ATtiny2313 is een geweldige manier om dat te doen.  Dit is een algemene doel LCD display-eenheid