Stap 5: Een opmerking over Spin
Hoe dan ook, heeft dit project ontwikkeld met de propeller-chip, die gemakkelijkst in Spin geschreven is.
Dit is een goed moment om op te merken van de Parallax van goede wil tegenover de open sourcegemeenschap. De propeller-chip is nu volledig programmeerbaar in C/C++ dankzij de oprichting van SImpleIDE. De meerderheid van dit project werd geschreven in SimpleIDE te wijten aan het gemak van installeren in Linux, en voor accesiblity tot communicatie poorten.
https://sites.Google.com/site/propellergcc/documentation/simpleide
Terwijl ik liever voor dit project in C++ (voor gebruik van 2D-arrays, en voor een ondieper leercurve) code zullen alle voorbeeldcode die ik voor dit project geschreven heb in Spin. Dit heeft gedaan om het maximaliseren van de functionaliteit voor de deadline van de wedstrijd.
Spin: Pass door waarde
Passeren variabelen door waarde in Spin lijkt erg op c ++. Het enige grote verschil is dat wanneer u een lokale variabele in Spin declareert, u doen niet de naam een type, (dwz byte, woord, long). Dit is misleidend, omdat het maakt het lijkt Spin heeft dynamisch geheugentoewijzing; voor alles wat ik kon vertellen, is dit niet het geval.
Spin: Pass door verwijzing
Passeren variabelen in Spin is relatief eenvoudig. Het is echter anders dan C++ in dat u niet een pointer doorgeven, je gewoon langs het geheugenadres waarde, en dereferentie het adres binnen de functie. Ik gebruikte deze methode van het doorgeven van parameters uitgebreid terwijl het ontwikkelen van diverse vector wiskunde functie. In het volgende voorbeeld vullen we elke variabele in beide arrays met het cijfer 1. Geheugenlocaties worden opgehaald met de "symbool, en geheugen locaties zijn dereferenced door redeclaring van het type variabele en de variabele aanbrengend"[]":
Spin: Float Math
Float wiskunde in Spin is een gigantische pijn. Ik vier verschillende bibliotheken voor het gebruik van float wiskunde in draai gevonden, ze gebruiken verschillende nummers van radertjes uitvoeren bij snelheden van verschil en zijn vrij vanzelfsprekend. Een ding vermeldenswaard: als u een constante of variabele op een specifieke waarde zijn declareren direct in uw code en u van plan bent te gebruiken zwevend punt bewerkingen, u moet ervoor zorgen dat je een decimaalteken aan het eind van elk nummer.
Spin: Speciale Registers
Er zijn heel wat speciale registers in Spin. Ik zal lopen via een paar van hen hier, maar als je echt serieus bent over met behulp van de propeller-chip, u moet zeker Lees de releaseopmerkingen van toepassing, evenals een kopie van de handleiding gedownload naar uw computer. De meeste van deze registers worden gebruikt in de codevoorbeelden op de volgende stap.
DIRA: Dit register bepaalt die IOs op de propeller-chip uitgangen en ingangen zijn. U kunt deze registers met behulp van binair getal, decimaal of hex. De meest intuïtieve manier, echter, is binaire. Elke bit in het register is een van de propeller 32 IOs. Toewijzen van een 0 of een 1 aan dat beetje zal toewijzen dat IO als een input of output.
CTRA/CTRB: Deze twee registers instellen de modi van de teller gebruikt door elke timer. Wij gebruiken twee verschillende teller afhankelijk van of we een puls lengtemeting, of het schrijven van een.
PHSA/PHSB: Deze registers zijn waar de opgetelde waarden die zijn gegenereerd door onze items daadwerkelijk zijn opgeslagen. Op de meest basale modus, het aantal verstreken klokcycli hier opgeslagen.
FRQA/FRQB: Deze registers bevatten een factor die schalen van de teller, telkens wanneer het slaat naar PHSA/B.
Als al dat gepraat over de timers en teller modi is onbekend voor u, moet u zeker lezen de hoewel het wellicht niet geheel noodzakelijk zijn, zou ik sterk aanbevelen lezen door middel van alle van de propeller teller modi. Met behulp van het prestatiemeteritem goed krijgt u ongelooflijke controle over low-level IO-functionaliteit, en zal toestaan dat u fudge je een weg door bijna alle digitale communicatieprotocollen:
http://www.parallaxsemiconductor.com/an001