Stap 2: Wat is het verschil tussen core AVR & Arduino
Dit is de eerste fundamentele vraag voor degenen die relatief nieuw voor Arduino/AVR spullen zijn...
AVR:
Nou, is AVR een familie van microcontrollers vanaf "Atmel Semiconductors"
Zoals een familie vele leden bevat, bevat de AVR-familie ook ander soort microcontrollers. Ze volgt de Havard het platform. Ze zijn 8 bit microcontrollers. (Er zijn 32-bits AVR chips ook).
AVR's kunnen vooral worden ingedeeld in drie groepen
1) tinyAVR. (lagere pincount met lagere programmering ruimte)
2) megaAVR. (met middellange programmering ruimte)
3) xmegaAVR. (hogere programmering ruimte met een aantal uitgebreide eigenschappen zoals "DMA").
Er zijn dus veel chips onder deze 3 groepen.
Zoals voor Ex-.
ATMEGA8/Atmega16/Atmega32/Atmega328 zijn al verschillende leden van mega familie met sommige enigszins verschillende kenmerken van elkaar.
Voor bijvoorbeeld Atmega328p heeft 32 k flash / 1k EEPROM / 2k SRAM terwijl Atmega8 heeft 8 k flash/512 byte EEPROM / 1K SRAM hoewel beide dezelfde geen van pincount(28) hebben.
Aan de andere kant Atmega32 heeft ook 32k flash als Atmega328p maar met hogere pincount(40).
ATTINY45 is een populaire microcontroller van tinyAVR familie met slechts 8 pinnen en met 4 k flash/512 byte EEPROM & SRAM.
Je moet dus kiezen dat microcontroller volgens uw circuit moet. Net als als u een enkele LED knipperen wilt, dan ATTINY45 is perfect, maar als je wilt een complexe LCD zoals 128 x 64 of 20 x 4 rijden dan moet u kiezen mega8/328/32.
Deze microcontrollers zijn lege chips met niets geprogrammeerd in hun flits/bootloader. Nu, wat de hel is bootloader? Ik zal later bespreken.
U moet het ontwerpen van een goede macht circuit te voeden, leveren het klok om te draaien. Ook moet je een soort van programmeurs te branden programma's in hen.
Ze kunnen op veel verschillende manieren worden geprogrammeerd, zullen we zien in de komende stappen hoe het kan worden gedaan. Ook moet je een soort van IDE waarin u uw programma kunt schrijven. Winavr is een IDE. Atmel studio is ook een andere IDE voor het schrijven van programma's voor Atmel microcontrollers.
Wij zal WinAVR onze core-microcontrollers programmeren kiezen.
ARDUINO:
We kunnen zeggen dat Arduino platform is (met inbegrip van hardware & software) vooral gebruikt voor prototyping. Het grote voordeel van arduino is dat dit een "open source".
Nou, ik denk dat ik moet concentreren meer licht op dit... want hier het belangrijkste verschil tussen AVR en Arduino komt
Arduino UNO rev3 is bijvoorbeeld een bord waarin een AVR Microcontroller en alle nodige randapparatuur te laten werken als, zoals ik al zei, de voeding, klok circuit enz. De microcontroller die hier gebruikt is een Atmega328p.
Ook is er een aan boord "regeling" voor het programmeren van de mega328p zonder een programmeur. Wat is nu de regeling???
Er is een eenvoudige USB naar seriële converter aan boord waarmee u de mega328p kunt programmeren. Maar hoe??? Dit is waar, de "bootloader" komt.
"bootloader" is een stukje programmaatje gelegen in een bepaald gebied van de microcontroller de flitser. Wanneer de chip opnieuw opgestart/ingeschakeld is, wordt de chip eerst invoert in het gebied van de bootloader (deze activiteit moet ook worden geprogrammeerd via fuse-bits) en voert de code die is geschreven in het. Maar hoe kan de code voor het programmeren van de chip zelf???
Voor bijvoorbeeld de code is geschreven op zodanige wijze, dat hij wacht op de programmering bytes te komen van de USB naar seriële converter. Bij het programmeren van ontvangen bytes, het slaat de bytes in het programma flash en wanneer alle bytes ontvangen, het zelf wordt opnieuw opgestart en wordt de code die onlangs in flash programma geschreven is uitgevoerd.
Maar nu een vraag ontstaat die na de programmering, als de mega328p is opstarten vanaf de programma-flitser (het vermijden van de bootloader), dan hoe het kan worden geprogrammeerd in de volgende cyclus??
Het antwoord is vrij eenvoudig, het mega328p nooit springt naar de beginlocatie voor het programma flash eerst. Het altijd springt naar de bootloader sectie eerst en wachten er enige tijd voor de komst van databytes via de seriële poort. Wanneer gegevens binnen de timeperiod aankomen, dan begint het te program zelf zoals verklaard voordat, als gegevens niet binnen de bepaalde tijd aankomt, dan het verlaat de bootloader sectie begint en uitvoeren van de code van programma flash.
De byte volgorde verzenden is bekend door zowel de bootloader en de ArduinoIDE.This is de werking van arduino programmeren zonder de hulp van een programmeur.
MAAR...
Om te branden de bootloader in AVR van flash, moet een soort programmeur (ofwel Parallel/ISP) worden gebruikt voor de eerste keer. Dit is waar komt de noodzaak van de zelfstandige programmeurs.
Nu over de IDE van de arduino.
In de Arduino IDE zijn er vele soorten boards om uit te kiezen. Elk bord maakt gebruik van verschillende soort microcontrollers. Als de UNO gebruikt rev3 bestuur Atmega328p.The mega2560 gebruik Atmega2560 enz enz.
Vervolgens komt er een ander opwindend deel van de Arduino." De bibliotheek". De bibliotheken zijn bos van programma's om te rijden van de verschillende modules van de microcontroller (zoals TWI, SPI, poort, enz.) of om te rijden een andere externe Hardware zoals LCD, Stepper motor, verschillende soorten sensoren en vele vele anderen. Om de microcontroller die werken, die u moet schrijven van sommige nominale codes met behulp van de functies van de bestaande bibliotheek. Ook is de taal die wordt gebruikt in de Arduino IDE C/C++. Maar je hoeft niet rechtstreeks communiceren met de hardware van de atmega. Deze worden verzorgd op de achtergrond. De opdrachten zijn veel eenvoudiger dan het gebruik van kern 'C'. Ik zal de atmega-chip programmeren in twee verschillende IDEs later.
Aan de andere kant, hebt u voor het programmeren van een kern AVR met Winavr of dergelijke andere C gebaseerde IDE, dan u moet weten de juiste architectuur, de hardware, de modules van de microcontroller en vervolgens alleen u kunt het programma. Maar waarom men zou gaan in een dergelijke coplexity??? Dit is een miljoen dollarkwestie...
Heb je ooit gevoeld, dat u alleen elkaars geschreven code/functies gebruikt en u bent niet in staat om het te wijzigen volgens uw behoeften of u bent niet in staat om te zien hoe het totale programma werkt op de achtergrond of heb je ooit gevoeld de noodzaak voor de uitvoering van de code regel voor regel???
Als je ooit gevoeld om het even welk van bovengenoemde, dan is het tijd voor u om te schrijven van de kern ' C'code voor je AVR.
Ook als u wilt unleash the power van de programmering van de AVR kern van laag niveau met uw eigen bibliotheek/code geschreven en wilt wijzigen van de codes volgens uw behoeften en parallelly willen een beter inzicht in uw hele code... moet dan je spelen met kern AVR programmering.
Hoop dat ik je twijfels over de Arduino en AVR spullen hebt uitgeschakeld. Nu tijd voor een beetje breken vóór het aangaan van de volgende sectie...