Paso 5: Una nota sobre Spin
A pesar de todo, este proyecto ha sido desarrollado con la viruta de propulsor, que más fácilmente se escribe en la vuelta.
Este es un buen momento para la nota voluntad de paralaje hacia la comunidad de código abierto. La viruta de propulsor está ahora completamente programable en C/C++, gracias a la creación SImpleIDE. La mayor parte de este proyecto fue escrita en SimpleIDE debido a su facilidad de instalación en Linux y para maquetado a puertos de comunicación.
https://sites.Google.com/site/propellergcc/Documentation/simpleide
Mientras que yo prefiero para el código de este proyecto en C++ (para uso de matrices 2D y para una menor curva de aprendizaje) todo el código de ejemplo que he escrito para este proyecto será en la vuelta. Esto se ha hecho con el fin de maximizar la funcionalidad antes de la fecha límite del concurso.
Vuelta: Pasar por valor
Pasando variables por valor de vuelta es muy similar a c ++. La única gran diferencia es que cuando se declara una variable local en la vuelta, no nombre de un tipo, (es decir, byte, palabra, largo). Esto es engañoso porque hace parecer que giro tiene asignación dinámica de memoria; para todos era capaz de decir, esto es no el caso.
Vuelta: Pasar por referencia
Pasar variables en la vuelta es relativamente fácil. Sin embargo, es diferente a C++ en el no pasa un puntero, simplemente pasa la dirección de memoria por valor y deja de hacer referencia la dirección dentro de la función. He utilizado este método de pasar parámetros ampliamente en el desarrollo de diversos vectores matemáticas función. En el siguiente ejemplo, llenamos todas las variables en ambas matrices con el número 1. Ubicaciones de memoria son obtenidos con el "símbolo y memoria lugares se elimina redeclaring el tipo de variable y la variable"[]":
Spin: Flotador matemáticas
Matemáticas de flotador en la vuelta son un dolor gigante. Encontré cuatro diferentes bibliotecas para el uso de matemáticas del flotador en la vuelta, utilizan diferentes números de dientes y funcionar en las velocidades de la diferencia y son bastante autoexplicativos. Una cosa vale la pena destacar: si se declara una constante o una variable a un valor específico directamente en el código, y que vaya a utilizar operaciones de punto flotante, debe asegurarse de que se pone una coma al final de cada número.
Giro: Registros especiales
Hay muy pocos registros especiales en la vuelta. Corro a través de algunos de ellos aquí, pero si usted es realmente serio sobre el uso de la viruta de propulsor, usted debe definitivamente Lea las notas de aplicación, así como descargar una copia del manual a tu ordenador. La mayoría de estos registros se utilizarán en los ejemplos de código en el siguiente paso.
DIRA: Este registro determina que IOs en la hélice de la viruta son salidas y que son las entradas. Puede escribir estos registros usando binario, decimal o hexadecimal. La forma más intuitiva, sin embargo, es binario. Cada bit en el registro representa uno de los IOs de hélice 32. Asignar un 0 o un 1 al poco le asignaremos IO como una entrada o salida.
CTRA/CTRB: Estos dos registros establecer los modos contador utilizados por cada contador de tiempo. Se utilizan dos contadores diferentes dependiendo de si estamos midiendo una longitud del pulso, o escribir uno.
PHSA/PHSB: Estos registros son donde realmente se almacenan los valores acumulados generados por nuestros contadores. En su modo más básico, el número de ciclos de reloj transcurridos se almacena aquí.
FRQA/FRQB: Estos registros contienen un factor que el contador cada vez que almacena a PHSA/B.
Si toda esta charla sobre modos de contador y contadores de tiempo es desconocido para usted, definitivamente debe leer el aunque no sea totalmente preciso, recomiendo altamente la lectura a través de todos los modos contador de hélice. Usando el contador correctamente te dará increíble control de bajo nivel funcionalidad de IO y permitirá que fudge a través de casi todos los protocolos de comunicación digital:
http://www.parallaxsemiconductor.com/an001