einfaches Programm mit if funktioniert nicht

OP (Firma: HTL-Braunau) #3578685
Lesenswert?

Hallo liebe Forumsmitglieder,

ich habe ein kleines Problem mit einem eigentlich sehr einfachen 
Programm in C. Ich verwende einen ATtiny13 für eine kleine 
Steuerungsaufgabe.

Am Pin INT0 kommt ein Digitales Signal von einer anderen Schaltung. In 
der ISR wird eine variable getoggelt. Das habe ich getestet und 
funktioniert auch. Wenn ich aber nun im Hauptprogramm die Variable (ja 
sie ist global angelegt) in einer if Abfrage behandle tut das Programm 
keinen Rührer.

Hier der Code:

#include <avr/io.h>
#include <avr/interrupt.h>

int8_t power=0;

int main(void)
{
  DDRB=0b11111011;
  MCUCR=(1<<ISC01)|(1<<ISC00);  //trigger rising edge
  GIMSK|=(1<<INT0);
  sei();
  PORTB=0;

  while(1)
    {
    if(power)
    {
      PORTB=power;
    }
  }
}

ISR(INT0_vect)
{
  power^=1;
}

Wenn ich die if weglasse und in main nur PORTB=power; schreibe 
funktioniert alles super.
Bin im Bereich Interrupts und der Gleichen noch recht neu und würde mich 
über eure Hilfe freuen.
Gast #3578773
Lesenswert?

Sebastian Gerner schrieb:
> Nein aber ich wollte mich langsam an die Materie herantasten.
> Deshalb
> diese Test Routine.
>
> MfG

OK,
dann tue Dir den Gefallen und arbeite das Tutorial hier durch ;-)
Ich habe auch irgendwie in meiner Glaskugel so einen Nebel der etwas von 
Tastenentprellung u.ä. andeutet :-P
Im übrigen sind ADC und Timer sicher besser geeignet sich mit IRQs zu 
beschäftigen.
So eine einfache Eieruhr mit Poti zum Zeit einstellen und einem Timer 
der nach der Einstellung einen Summer anschaltet dürfte doch ein schönes 
sinnvolles Einstiegsprojekt sein ?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren