Hi
I've wrote a sketch for a flashlight, and now I'm trying to port it from the arduino to an Attiny85. I'm using this tutorial: http://hlt.media.mit.edu/?p=1695
Programming the attiny works. (tested with the blink sketch)
But now my interrupt doesn't work. I'm using interrupt 0 with the internal pull-up and according to the datasheet of the attiny85 int0 is on pin7
#include <avr/sleep.h>
byte ledpin=0; //pinnen definieren
byte drukknop=0;
volatile boolean ledStatus; //volatile gebruiken doordat deze moet aangesproken worden in de interrupt methode
byte aantalDrukken;
long timer1; //variabele om aantal milliseconden weg te schrijven
long timer2;
//instellingen:
//pinksnelheid in milliseconden:
int pinksnelheid=500;
//debouncetijd in milliseconden:
int debounce=200;
//standbytijd
int standbytijd=1000;
void setup(){
pinMode(drukknop,INPUT); //inputs en outputs definieren
digitalWrite(drukknop,HIGH); // interne pull-up aanzetten
pinMode(ledpin,OUTPUT);
ledStatus=false; //led om te beginnen uitzetten
aantalDrukken=0; //beginnen
attachInterrupt(0,knop,FALLING); //interrupt 0 (digital pin 2) koppelen aan de routine
//Serial.begin(9600);
}
void loop(){ //Main loop die de status controleert en naargelang de led aan, uit of laat pinken
if(aantalDrukken==0){
digitalWrite(ledpin,LOW);
standby();
}
if(aantalDrukken==1){
digitalWrite(ledpin,HIGH);
}
if(aantalDrukken==2){
pinken(); //verwijst naar de pinkroutine
}
}
void knop(){ //interrupt routine om te zorgen voor de input van de drukknop
delay(debounce); //debouncetijd van 200 milliseconden
if(digitalRead(drukknop)==LOW){
aantalDrukken++;
if(aantalDrukken>=3) //aantalDrukken bevat het cijfer dat de modus aanduid: 0= uit, 1= aan, 2=pinken
aantalDrukken=0; //aantalDrukken moet terug naar 0 gaan wanneer hij op 3 komt
timer1=millis();
}
}
void pinken(){ //code om te pinken zonder gebruik te maken van delay's
if(millis()-timer1>pinksnelheid){ //Delay's zouden code stilleggen en de input verstoren. Of onregelmatig maken.
ledStatus= !ledStatus;
digitalWrite(ledpin,ledStatus);
timer1=millis();
}
}
void standby(){
if(millis()-timer2>standbytijd){
// Serial.println("powering down");
delay(1000);
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sleep_enable();
sleep_mode();
sleep_disable();
// Serial.println("waking up");
timer2=0;
}
}
What could I be doing wrong?