Hi,
ich habe hier einen ATtiny84 mit einem simplen Taster dran:
Ich habe folgenden simplen Code zum Testen geschrieben und lasse mir das alles per Serial ausgeben:
#include <JeeLib.h>
#include <avr/sleep.h>
#include <avr/interrupt.h>
#define DIO1 10 // d10
static void setPrescaler (uint8_t mode) {
cli();
CLKPR = bit(CLKPCE);
CLKPR = mode;
sei();
}
int buttonState = 0;
ISR(WDT_vect) { Sleepy::watchdogEvent(); }
ISR (PCINT0_vect) {
Serial.println("Ubt");
}
void setup() {
setPrescaler(0); // div 1, i.e. speed up to 8 MHz
Serial.begin(38400);
Serial.print("ack13 \n");
pinMode(DIO1, INPUT); //set the pin to input
PCMSK0 |= (1<<PCINT2); // tell pin change mask to listen to (DIO1)
digitalWrite(DIO1, LOW);
GIMSK |= (1<<PCIE0); // enable PCINT interrupt in the general interrupt mask
//sei();
}
void loop() {
buttonState = digitalRead(DIO1);
// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (buttonState == HIGH) {
// turn LED on:
Serial.print("1 \n");
}
else {
// turn LED off:
Serial.print("2 \n");
}
//Serial.println(inttime);
delay (500);
}
Mein Output in hterm sieht nun so aus:
ack13
2
2
2
2
2
2
UUbt
bt
2
2
2
2
UUUUUbtUUbUUUUUUaUUbUUUbt
bt
bt
t
bt
2
2
Was mich nun stört ist das egal ob der Schalter betätigt ist oder nicht er immer nur LOW ist und nie HIGH ist. Aber ich jeden Interrupt auf dem Pin angezeigt bekomme. Was mache ich falsch?
Gruß kami83