Encoder attiny84

consulta no puedo declarar bien los pines pcint1 y pcint2 lo hice funcionar en attiny85 pero no en el 84 que cambio? gracias

#include "avr/interrupt.h"; 
#include <EEPROM.h>
int cont3;
int m = 0; 
volatile int value =122;
volatile int lastEncoded = 0;


void energia (){
if(digitalRead(m)==LOW){ 
cont3++;
delay(1);
if (cont3 >5) {
 EEPROM.put(0,value);
delay(50);
cont3 = 0; 
}
}
} 
void setup()
{
    EEPROM.get(0, value);
  pinMode(6, OUTPUT);  


 
  pinMode(1, INPUT);
  pinMode(2, INPUT);
  digitalWrite(1, HIGH);
  digitalWrite(2, HIGH);
  pinMode(m, INPUT);
  
  GIMSK = 0b00100000;       
  PCMSK0 = 0b00000110;    // pcint1  pcint2  

  sei();                    
}
 
void loop()
{
   //energia ();
  analogWrite(6, value);
}
 

ISR(PCINT1_vect)
{
  int MSB = digitalRead(1); 
  int LSB = digitalRead(2);
 
  int encoded = (MSB << 1) |LSB;
  int sum  = (lastEncoded << 2) | encoded; 
 
  if(sum == 0b1101 || sum == 0b0100 || sum == 0b0010 || sum == 0b1011)
    value++;
  if(sum == 0b1110 || sum == 0b0111 || sum == 0b0001 || sum == 0b1000)
    value--;
 
  lastEncoded = encoded; 
 
  if (value <= 0)
    value = 0;
  if (value >= 255)
    value = 255;
}`

Hola. Por favor edita tu primer post y pon el código como corresponde (edita, selecciona todo el código y pulsa </> en la barra del editor).

Sinceramente no entiendo tu pregunta, ¿podrías explicarte mejor?

Saludos

Moderador:
Para saber como hacerlo tienes las Nórmas del foro. Toda sección tiene como primer hilo, las normas.

Sinceramente que díficil que te has expresado. al igual que @anon90500195 no entiendo tu primer post.

También ya lo solucione, PCMSK0 = bit (PCINT1) | bit (PCINT2);
GIMSK = bit (PCIE0);
sei();

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.