Ten eerste zijn er verschillende poorten van de Arduino-omgeving naar de NRF51822, maar dat zal ik voorlopig terzijde laten en adresseren met de codebase van Nordic of de mbed-versie.
Over het algemeen zal een van deze paden je meer plaatsen in de huidige 'echte wereld' van ingebedde ontwikkeling op professioneel niveau, waarin de ARM-cortexdelen een leidende rol spelen. Je zult conventionele meerdere bronbestandsprojecten hebben die met elkaar verbonden zijn door meer gewone middelen zoals een Makefile of expliciete IDE-configuratie, in plaats van de nogal vreemde manier waarop de Arduino IDE is geëvolueerd om dingen te doen. De basis API's op lager niveau waar u naar zult schrijven, zullen veel conventioneler zijn - dat wil zeggen, uw code zal beginnen in main()
in plaats van setup()
en lus()
, genereert u foutopsporingsberichten met printf()
of een soortgelijk opgemaakte lidfunctie op mbed in plaats van Arduino-type print()
/ println()
(hoewel je natuurlijk met een bepaalde instelling printf()
op een Arduino kunt gebruiken). Hierdoor wordt het veel eenvoudiger om code te coderen of te delen tussen dit en andere ingesloten systemen, of zelfs tussen een ingebed systeem en een telefoon of desktop waarmee wordt gecommuniceerd of gesimuleerd. Natuurlijk kun je een Arduino als een gewone ATmega behandelen en dit ook doen, tot de limiet van de CPU en zijn herinneringen.
Mensen hebben de neiging om de mbed-optie te zien als een online "speeltje" voor bepaalde borden, maar je kunt over het algemeen anderen gebruiken door het op dezelfde manier in te stellen voor een bord dat dezelfde MCU gebruikt. En in de meeste gevallen kun je een zipbestand van een project downloaden met een Makefile erin die arm-gcc of een paar andere compilerkeuzes zal aansturen. De NRF51822 komt in variëteiten met verschillende opslagmaten aan boord, en dit kan soms zorg en aandacht vereisen voor het linkerscript - in sommige gevallen zal een project dat in de online build past (blijkbaar met de Keil-compilatie-engine als de back-up) niet bouw de gedownloade GCC-configuratie in, tenzij u het linkerscript aanpast om de stackgrootte te verkleinen, of misschien de niveaus van de compileeroptimalisatie te wijzigen.
Om deze redenen tegen te gaan zou je de ATmega kunnen houden als je een aantal van zijn I/O-randapparatuur of zijn 5v I/O-mogelijkheden nodig hebt. De NRF51822 heeft bijvoorbeeld beperkte PWM-hardwarecapaciteit in vergelijking met een ATmega, dus dat moet in het algemeen in software worden gedaan.
Als je echt thuis bent met "The Arduino Way", kan overschakelen naar iets traditionelere aanpassingen van denkwijzen en gewoontes. Aan de andere kant, als je kijkt naar de voordelen van Arduino, zijnde de verscheidenheid aan out-of-the-box, gemakkelijk aan te passen voorbeelden die je kunt gebruiken om de mogelijkheid van een project te onderzoeken, maar je vaak geïrriteerd voelt door de erfenis van zijn talloze eigenaardigheden en atypische benaderingen op de langere termijn, dan zul je waarschijnlijk de aanpassing aan het gebruik van de NRF51822 direct de moeite waard vinden.