For-Endlosschleife in Main funktioniert nicht

Gast #73406
Hallo!

Ich habe glaube ich ein großes Problem.
An meinem ATMEGA8 hängt ein LCD und wird im 4-Bit-Modus angesteuert.
Funktioniert auch tadellos.

Ich habe mehrere Delayfunktionen mit Timern realisiert.
Der 16-Bit Timer ist für die Sekunden (meiner "Uhr) und der andere für
die Delays zur Ansteuerung.
Ich habe die Variablen hours und minuten in denen logischerweise die
Zeit drinsteht.

Jetzt will ich einen Alarm realisieren der auf PORTD.7 ist und auf 0
gesetzt werden muss wenn z.B. hours und minutes auf einen vorher
festgelegtem Wert sind.
Wenn ich diese Abfrage in einem Timerinterrupt mache geht sie
problemlos. Ich will sie aber in der For-Schleife in Main ausführen.
Nur es funktioniert nicht.
Nicht mal wenn ich nur minutes>=1 überprüfe.

Ich bitte um eure immer sehr kompetente Hilfe! :)

Danke,
Thomas K
Angehängte Dateien:
Gast #73410
Der Compiler sieht keine Grund warum sich die Variable minute ändern
soll, da in der Schleife nix damit passiert. Also wird die ganze
Schleife wegoptimiert.
Mit Volataile sagt man dem Compiler, dass die Variable auch von
"aussen" verändert werden kann, also kann er da nix wegoptimieren.
Gast #73411
hmm. achso. er optimiert also in jeder funktion einzeln?
dachte er sieht, dass in einer anderen funktion die variable verändert
wird und optimierts nicht weg.

danke, jedenfalls! :)
Gast #73412
In C gibt es sowas wie einen "Interrupt" nicht. Da deine
Interruptroutine ja nicht regulär innerhalb der Schleife aufgerufen
wird, wird "Minuten" auch aus Compilersicht nie geändert.

Dass der Interrupt aufgerufen wird ist ja eine reine Hardwaresache, das
geht aus der Software ja nicht hervor.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.