Quiero trabajar a una alta velocidad por lo que necesito optimizar la funcion DigitalRead.
Con la funcion para definir los puertos como entrada o salida no he tenido problema:
DDRB, pero lei que los bits altos (6 y 7) estan definidos para el reloj del atmega del arduino
Estoy utilizando esta funcion exactamente:
DDRB = B11101111;
He probado mi programa sin ningun problema, pero puede haber algun problema de definir los bits 6 y 7 como salidas?
Volviendo a DigitalRead , segun la pagina de arduino puedo utilizar PINB para hacer lectura del puerto pero no logro leerlo.
if PINB == B11110011 ... No reconoco , pero con digitalRead(5) si funciona.
Tambien he probado con PINB5 == 1 , PORTB5 == 1, etc pero ninguna me a funcionado.
La funcion de digitalread es esta:
int digitalRead(uint8_t pin)
{
uint8_t timer = digitalPinToTimer(pin);
uint8_t bit = digitalPinToBitMask(pin);
uint8_t port = digitalPinToPort(pin);
if (port == NOT_A_PIN) return LOW;
// If the pin that support PWM output, we need to turn it off
// before getting a digital reading.
if (timer != NOT_ON_TIMER) turnOffPWM(timer);
if (*portInputRegister(port) & bit) return HIGH;
return LOW;
}
Gracias de antemano.
Con la funcion para definir los puertos como entrada o salida no he tenido problema:
DDRB, pero lei que los bits altos (6 y 7) estan definidos para el reloj del atmega del arduino
Estoy utilizando esta funcion exactamente:
DDRB = B11101111;
He probado mi programa sin ningun problema, pero puede haber algun problema de definir los bits 6 y 7 como salidas?
Volviendo a DigitalRead , segun la pagina de arduino puedo utilizar PINB para hacer lectura del puerto pero no logro leerlo.
if PINB == B11110011 ... No reconoco , pero con digitalRead(5) si funciona.
Tambien he probado con PINB5 == 1 , PORTB5 == 1, etc pero ninguna me a funcionado.
La funcion de digitalread es esta:
int digitalRead(uint8_t pin)
{
uint8_t timer = digitalPinToTimer(pin);
uint8_t bit = digitalPinToBitMask(pin);
uint8_t port = digitalPinToPort(pin);
if (port == NOT_A_PIN) return LOW;
// If the pin that support PWM output, we need to turn it off
// before getting a digital reading.
if (timer != NOT_ON_TIMER) turnOffPWM(timer);
if (*portInputRegister(port) & bit) return HIGH;
return LOW;
}
Gracias de antemano.