Einfacher C-Interrupt funktioniert nicht

Gast #916329
Lesenswert?

Hallo, liebes Forum,
hier mein erster Beitrag zu einem Interrupt-Problem.
Meine Programmierumgebung: myAVR-2.0-USB-Board mit einem ATmega8, 
Programmierung mit Mac über Xcode. Alle bisherigen Programme 
funktionierten einwandfrei. Bei dem Programm handelt es sich um das 
Beispielprogramm aus dem myAVR-Tutorial, und ich habe keinen 
programmierfehler entdeckt.
Vielen Dank für eure Hilfe
dibujo
Angehängte Dateien:
Gast #916440
Lesenswert?

Was wird am Port B ausgegeben?
Immer 0x01?

Dann wurde die Zuweisung
PORTB = buffer;
wegoptimiert.

Der Compiler sieht, die Variable buffer ist 1 und ändert sich in der 
while(1)-Schleife nicht. Daher macht er das daraus:
1
:
2
  sei();                                // Interrupts zulassen
3
  PORTB = 0x01;
4
  while (1) {  }
5
  return 0;
6
:

Mit dem volatile sagt man dem Compiler, dass sich die Variable auch 
ausserhalb der Schleife ändern kann.

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