Conexión de Arduino Uno a Crystalfontz 16 x 2 OLED con sólo 4 cables! (7 / 8 paso)

Paso 7: Optimizando el código.

Este código se transfiere a una frecuencia de reloj de unos ~ 57KHz, y se tarda aproximadamente ~ 180uS, para completar una escritura de 10 bits, usted no va a morir de vejez esperando.

Pero el viejo conjunto de codificación EE me quería ver si podía ir un poco más rápido. A partir de algunos optimizado ejemplos Arduino Software SPI, era capaz de hacerlo un poco mejor:

 //Pretty fast software SPI 10-bit transfer code //Several ideas taken from the fastest non-assembly implementation at: //http://nerdralph.blogspot.com/2015/03/fastest-avr-software-spi-in-west.html // // The SS pin is low for ~3.8uS, the clock frequency is ~ 2.6MHz // 47x faster than above //Pre-calculate the value that will drive clk and data low in one cycle. //(Note that this is not interrupt safe if an ISR is writing to the same port) register uint8_t force_clk_and_data_low; //Select the chip CLR_SS; //Pre-calculate the value that will drive clk and data low in one //operation. force_clk_and_data_low = (SPIPORT & ~(MOSI_MASK | SCK_MASK) ); //Set clock and data low SPIPORT = force_clk_and_data_low; //Set the data(1)/command(0) flag if(DATA==destination) { SPITOGGLE = MOSI_MASK; } //Use a toggle to bring the clock up SPITOGGLE = SCK_MASK; //Set clock and data low SPIPORT = force_clk_and_data_low; //MOSI is already 0, for read(1)/write(0) flag as write //Use a toggle to bring the clock up SPITOGGLE = SCK_MASK; //Now clock the 8 bits of data out SPIPORT = force_clk_and_data_low; if(data & 0x80) SPITOGGLE = MOSI_MASK; SPITOGGLE = SCK_MASK; SPIPORT = force_clk_and_data_low; if(data & 0x40) SPITOGGLE = MOSI_MASK; SPITOGGLE = SCK_MASK; SPIPORT = force_clk_and_data_low; if(data & 0x20) SPITOGGLE = MOSI_MASK; SPITOGGLE = SCK_MASK; SPIPORT = force_clk_and_data_low; if(data & 0x10) SPITOGGLE = MOSI_MASK; SPITOGGLE = SCK_MASK; SPIPORT = force_clk_and_data_low; if(data & 0x08) SPITOGGLE = MOSI_MASK; SPITOGGLE = SCK_MASK; SPIPORT = force_clk_and_data_low; if(data & 0x04) SPITOGGLE = MOSI_MASK; SPITOGGLE = SCK_MASK; SPIPORT = force_clk_and_data_low; if(data & 0x02) SPITOGGLE = MOSI_MASK; SPITOGGLE = SCK_MASK; SPIPORT = force_clk_and_data_low; if(data & 0x01) SPITOGGLE = MOSI_MASK; SPITOGGLE = SCK_MASK; //Release the chip SET_SS; 

Que acelera las cosas por un factor de 47 veces, que una transferencia de 180uS 3.8us. La frecuencia de reloj equivalente de 247KHz a 2.6 MHz. ¡Qué bien!

Por supuesto que cualquier rutina funcionará... el "Arduino adecuado" debe ser más portátil. Se divierten conectar una OLED a su Arduino, sentirse libre post sus comentarios o preguntas.

Artículos Relacionados

Arduino Uno y Visuino: controlar Robot coche Smart con Joystick y L298N controlador de Motor

Arduino Uno y Visuino: controlar Robot coche Smart con Joystick y L298N controlador de Motor

Que coche elegante se establece cuando se combinan con Los módulos de controladores Motor L298N, ofrecen una de las maneras más fáciles de fabricar coches robot. El Módulo del controlador Motor L298N es fácil de controlar con Arduino, y con la ayuda
Cómo programar Arduino Pro Mini con Arduino Uno y ArduShield - sin los cables de

Cómo programar Arduino Pro Mini con Arduino Uno y ArduShield - sin los cables de

El objetivo principal de esta instrucción es mostrar cómo programar más fácil manera de Arduino Mini o Arduino Pro Mini con Arduino UNO y ArduShield – sin los cables.Paso Tutorial paso, con ninguna medida para saltar por PCB impresionante.Paso 1 - ¿q
El primer uso de ESP8266 con Arduino Uno

El primer uso de ESP8266 con Arduino Uno

Hoy, voy a mostrarte cómo podemos preparar nuestro módulo ESP8266 para utilizar con Arduino UNO.La necesidad de la lista:1. Arduino UNO (con el cable USB conectado al ordenador mediante cable USB, también utilizará la tensión)2. el ordenador (si pued
Cómo utilizar NeoPixel 16 anillo con Arduino Uno

Cómo utilizar NeoPixel 16 anillo con Arduino Uno

Hoy, voy a mostrarte cómo usar anillo de NeoPixel con Arduino Uno muy básicos. Como ustedes saben, nos encanta LED colorido, incluso se ha establecido en un anillo!La necesidad de la lista:1. Arduino Uno2. NeoPixel anillo 16xWS2812 (con neopixels peq
Arduino Uno xilófono

Arduino Uno xilófono

Este xilófono utiliza el Arduino Uno y un multiplexor para identificar cuando uno de ocho teclas se pulsan y reproducir sonido en un equipo que sonido vía midi. Una parte opcional de las instrucciones también permite cada tecla a la luz hasta con dos
Conectar Arduino Uno con Android via Bluetooth

Conectar Arduino Uno con Android via Bluetooth

En este proyecto un módulo Bluetooth serial se utiliza para crear una conexión entre Arduino Uno y una aplicación para Android que he creado con MIT App Inventor.Arduino escucha los comandos a la luz algunos LED o mostrar su estado. Además, una inter
TFT táctil basado en interfaz de usuario con Arduino UNO

TFT táctil basado en interfaz de usuario con Arduino UNO

I, m muy encariñado con pantalla TFT LCD. Así que decidí aprender. Ya había biblioteca disponible para este trabajo. Pero la mayoría de ellos era para los controladores diferentes. Había un chico en intructables que editaron estas bibliotecas para sp
GOduino - el Arduino Uno + clone Driver de Motor

GOduino - el Arduino Uno + clone Driver de Motor

versiones04/04/2012: la versión de pcb con motor de velocidad variable, GOduino II, está en mi blog http://techbitar.blogspot.com/2012/04/goduino-ii-motor-driver-arduino-uno.html y aquí29/03/2012: correcciones a la sección de cálculos de carga del mo
Arduino Uno Intro más proyectos

Arduino Uno Intro más proyectos

Hey todo el mundoBienvenido a mi Arduino uno introducción fueron aprenderemos sobre el Arduino Uno, cómo el pin obras, cómo código y al final veremos proyectos de otras personas utilizando el Arduino uno.Paso 1: Sobre la Arduino UnoArduino Uno es un
Cómo programar attiny usando arduino uno

Cómo programar attiny usando arduino uno

sólo quería hacer un pequeño arduino para mi algunos proyectos porque comprar un arduino para cada proyecto será demasiado caro para un chico de 15 años de edad!Paso 1: Lo que necesitaArduino IDEATtiny archivos en su arduino IDEPuede descargar los ar
Cómo controlar 8 leds utilizando arduino uno

Cómo controlar 8 leds utilizando arduino uno

Hola chicos este es mi primer proyecto de arduino por favor comentario lo siento u.        Paso 1: Lo que necesita Ya que es fácil del proyecto para el principiante para piezas también son simplesPartes:1 - Arduino uno o cualquier otro tablero funcio
Conexión ESP8266-01 para Arduino UNO / MEGA y BLYNK

Conexión ESP8266-01 para Arduino UNO / MEGA y BLYNK

Este es un tutorial para mostrar cómo flash firmware a ESP8266-01 y conectarse a Blynk con un ESP8266 - 01 como un Arduino wifi shield.Hardware necesario:* Arduino Uno/Mega* Jumper cables* USB al cable del USB B* ESP8266-01Software necesario:Para fac
Medidor de distancia ultrasónico con pantalla LCD en el Arduino UNO

Medidor de distancia ultrasónico con pantalla LCD en el Arduino UNO

En este tutorial vamos a ver un uso distinto del módulo de ultrasonidos HC-SR04. Este módulo es de uso frecuente en coches de juguetes y robots para localizar obstáculos pero puede ser utilizado para medir distancias así.Distancias medidas por la HC-
Conectar tu Arduino Uno y frambuesa Pi!

Conectar tu Arduino Uno y frambuesa Pi!

El Raspberry Pi y el Arduino Uno son dispositivos muy potentes, buena en diferentes cosas. Las placas Arduino son impresionantes en la lectura de las entradas y salidas de varias cosas diferentes. El Raspberry Pi es básicamente un mini, el equipo de