Gast
#4340747
Hallo Zusammen,
ich würde gerne einen Pin Change Interrupe an PB0 nur bei steigender
Flanke auslösen lassen. Leider komm ich nicht mehr weiter. anbei mein
Code. Was mache ich falsch habt ihr eine Lösung?
#include <avr/io.h>
#include <avr/interrupt.h>
int main(void)
{
DDRB |= (1<<PB5);
PORTB &= ~(1<<PB5);
DDRB &= ~(1<<PB0);
PORTB |= (1<<PB0);
PCICR |= (1<<PCIE0);
PCMSK0 |= (1<<PCINT0);
sei();
while(1)
{
}
}
ISR(PCINT0_vect)
{
unsigned char sig;
unsigned char sig_alt;
sig = PINB & (1<<PB0); // Signal einlesen
if ( (sig!=sig_alt) && (sig_alt=sig) ) {
// steigende Flanke
PCMSK0 &= ~(1<<PCINT0);
PINB ^= (1<<PB5);
}
}
VIELEN DANK!