Llevo un par de horas atascado con esta tontería de programa. Es el ejemplo button pero estoy intentando programar los registros. En todos los comandos que he usado los registros de desplazamiento (<<) me da el mismo error: expected ')' befoer ';' token
Será una tontería pero no veo el error, he probado hasta instalando el AVR studio y sigue dando el mismo error. A alguien se le ocurre que puede ser?
#include <avr/io.h> //librería de entradas y salidas de los micros AVR
// constants won't change. They're used here to
// set pin numbers:
#define buttonPin PINB2; // Pulsador (Pin10 en Arduino)
#define ledPin PORTB5; // Diodo led (Pin13 en Arduino)
void setup(void); //Función para configurar el micro
int main(void){
// read the state of the pushbutton value:
if(PINB&(1<<buttonPin)){
PORTB|=(1<<ledPin);
}
else{
PORTB&=~(1<<ledPin);
}
}
void setup(void) {
DDRB&=~(1<<buttonPin); // initialize the LED pin as an output
DDRB|=(1<<ledPin); // initialize the pushbutton pin as an input
}
He realizado el mismo programa pero en vez de usar main y funciones de C he usado las de Arduino y compila estupendamente, el código que he probado :
const int buttonPin = PINB2; // Pulsador (Pin10 en Arduino)
const int ledPin = PORTB5; // Diodo led (Pin13 en Arduino)
void setup() {
DDRB&=~(1<<buttonPin);//pinMode(ledPin, OUTPUT);
DDRB|=(1<<ledPin);//pinMode(buttonPin, INPUT);
}
void loop(){
// read the state of the pushbutton value:
if(PINB&(1<<buttonPin)){
PORTB|=(1<<ledPin);
}
else{
PORTB&=~(1<<ledPin);
}
}
He simulado y los desplazamientos de pines están correctos, el problema está al poner el código en C. He provado con Arduino y Atmel Studio con los mismo errores de compilación.
Hasta la noche no puedo probarlo pero no lo veo mal. Port es el registro para sacar 1 o 0. Pin es para leer el estado de las entradas. Ademas si estuviera mal no daria error eo compilador. Eso creo por lo menos. Salu2
donde trae una serie de razones para no utilizar esta vía y utilizar pinMode(), digitalWrite() ...
Dice que se ahorra poquito tiempo, y se pierde mucho.
Justamente habia leido todo lo contrario en otro sitio diciendo que era mejor programar ek registro. Se pierde mucha velocidad de hacer blink 90000 veces al segundo, se pasa a 2,6 millones de al segundo. El tamaño de los scketch cae a la mitad. Yo creo que es bueno aprender a modificar registros y segun necesidad programar con funciones o con desplazamiento de bits. Sigo sin comprender porque no va.
He modificado el primer post para confirmar que el problema no está en los desplazamientos de registros, eso lo hace bien.
En realidad los dos son correctos. Igual que si pongo 5. Al fin y al cabo con los bits de desplazamiento le digo cuanto se tienen que desplazar el bit 00000001 hacia la izquierda. Y son 5 posiciones. La libreria /io tiene a su vez includes con port y pin igual a 5. No se si esta muy claro lo que he intentado explicar. Salu2