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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.