Hola, recurro a vosotros a ver si alguien me puede echar un cable.... os pongo en situación.
quiero usar un attiny10 y de todos es sabido la pequeña capacidad que tiene, he mirado por internet como se puede reducir los programas, y comentan de escribir directamente en los puertos en binario y trabajar sobre ellos.
Queria hacer una prueba y he tenido un problema, si creo una condición de la forma "normal" If (digitalRead(pin) la condición que sea y digitalRead(pin)) no tengo problemas pero cuando intento cambiar ese digitalRead(pin) por leer el puerto directamente me da problemas, pongo la prueba con la que estoy enredando...
void setup() {
DDRB = B00100000; //configuro puertos como entrada y salida
Serial.begin(9600); //inicio serial
}
void loop() {
if (((PINB & (1<<PB0))==1) && (PINB & (1<<PB1)!=0)){ //leo puerto pb0 si es igual a 1 y la lectura del puerto pb1 no es 0 (es 1) continua con la condicion
delay(1000);
Serial.println("1");
}
if (((PINB & (1<<PB0))==0) && (PINB & (1<<PB1)==0)){ //leo puerto pb0 si es igual a 0 y la lectura del puerto pb1 es igual a 0 continua con la condicion
delay(1000);
Serial.println("2");
}
/* if (((PINB & (1<<PB0))==1) && (PINB & (1<<PB1)!=1)){ //leo puerto pb0 si es igual a 1 y la lectura del puerto pb1 no es 1 (es 0) continua con la condicion
delay(1000);
Serial.println("3");
}
*/
}
Tal y como esta me funciona, pero si activo la tercera condicional que hay, no funciona correctamente, por el puerto serie solo sale 1 3 1 3 1 3 1 3 1 3 no sale 3 como digo si no utilizo esa tercera condición no hay problema me pone 1 1 1 1 1 cambio la configuración y pone 2 2 2 2
Seguramente sera una tontada pero sinceramente no se por donde va el tema.
Gracias!
P.D he editado el codigo que lo he copiado mal del portatil...