Code:
unsigned char phigh;
void StartExtInt(void)
{
PORTD |= PD2;
// DDRD |= PD2; // CON2 (RED_LED) auf Input => ext. Int 0
MCUCR |= ((1 << ISC00) | (1 << ISC01)); // High level interrupt
GICR |= (1 << INT0); // interrupt aktiviren
}
void StopExtInt(void)
{
GICR &= ~(1 << INT0); // Interrupt löschen
MCUCR &= ~((1 << ISC00) | (1 << ISC01)); // low level set
}
SIGNAL (SIG_INTERRUPT0)
{
StopExtInt();
while(!(PIND & (1 << PD2)));
mybase = 0;
phigh = 1;
}
int main(void)
{
unsigned int mem;
phigh = 0;
Init(); // initialise the processor
SerWrite("Start", 5);
StartExtInt();
SerWrite("Run", 3);
StatusLED(GREEN);
//OFF,GREEN,YELLOW,RED
sei();
while(1) {
if((phigh == 1) && !(PIND & (1 << PD2))) {
mem = mybase;
SerWrite((unsigned char*)&mem, sizeof(mem));
SerWrite("\n", 1);
StartExtInt();
phigh = 0;
}
}
return 0;
}
also WENN ich den pin manuell auf high lege geht es und er misst mir auch ne zeit aus ... wenn cih das cmps03 anschliesse pasiert nix mehr ... aber ich hatte ihn schonmal so weit das er permanent den interrupt ausgelöst hat Q_Q was mach ich falsch ?!
also das signal liegt am con2 an also int0 und damit pd2 .... aber es passiert nix ....
Lesezeichen