www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik If abfrage wird in der Schleife nicht wiederholt


Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hy
ich programmiere gerade einen atmega 8 in c.
Dabei habe ich mehrere if abfragen in einer schleife geschrieben und 
diese sollten sich eigentlich beim wiederholen der schleife 
aktualisieren. Dies tuhen sie aber nicht.
Jetzt habe ich schon ein wenig rumgespielt, und habe meine abfragen zum 
test in die mainloop geschrieben und dort hat es nun funktioniert.
Ich bin daher etwas ratlos und hoffe auf eure hilfe
wenn jemand ideen oder tips hat dann bitte helft mir.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1.: Vor dem nächsten Posting die Foren-Regeln lesen!

2.: Ohne Dein Programm zu sehen, kann man dazu gar nichts vernünftiges 
sagen.

Autor: Stephan Henning (stephan-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
zu jedem If gehört ein Then und EndIf !!
Strukturierte Programmierung !!
Den Quelltext der If Anweisung einrücken, dann behält man den Überblick
Aber ohne Dein Programm wird hier niemand was dazu sagen können.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stephan Henning wrote:
> zu jedem If gehört ein Then und EndIf !!
Nö, in C nicht!

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
achso
ich habe den code aus firmeninternen gründen auf einem anderen rechner, 
der keinen i net zugang haben darf, daher ist es momentan schwer den 
code hochzuladen, ich versuche jedoch dieses im laufe des tages nach 
hole

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
volatile


Peter

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ich habe den code aus firmeninternen gründen auf einem anderen rechner
Jo, die Foren-Regeln, die Du offensichtlich immer noch nicht gelesen 
hast, sind aber nicht auf dem anderen Rechner...

Autor: Stephan Henning (stephan-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Johannes,
> zu jedem If gehört ein Then und EndIf !!
Nö, in C nicht!

wie auch immer Du das machst, unser Kandidat hat offensichtlich den 
Überblick verloren, und den hat man nur mit Struktur.
Also sollte man Then und EndIf nutzen um sich eine ordentliche 
Programmierung an zu gewöhnen.

Ich frage jetzt nicht warum ein IF wenn kein Then.
Sowas nutze ich in ASM nicht !!!
Du kannst doch machen was Du willst. Es ist Dein Proggi.
Neulingen muß man aber keine schlechten Gewohnheiten beibringen !!

Autor: ARM-Fan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Also sollte man Then und EndIf nutzen um sich eine ordentliche
>Programmierung an zu gewöhnen.

Nö, immer noch nich! In C gibt's das nicht!
Und Basic für 'nen ordentlichen Programmierstil zu empfehlen...

Der OP programmiert offensichtlich in C:

>ich programmiere gerade einen atmega 8 in c.

Autor: jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ich frage jetzt nicht warum ein IF wenn kein Then.
C kennt weder then noch endif ;-)

if (Bedingung){
 MachWas;
}
Mit den Klammern kann man allerdings auch struktuieren.

Gruß

Jens

Autor: T. H. (pumpkin) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gast wrote:
> ich habe den code aus firmeninternen gründen auf einem anderen rechner,
> der keinen i net zugang haben darf,

Warum nur?

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gast wrote:
> achso
> ich habe den code aus firmeninternen gründen auf einem anderen rechner,
> der keinen i net zugang haben darf, daher ist es momentan schwer den
> code hochzuladen, ich versuche jedoch dieses im laufe des tages nach
> hole

Der Compiler nimmt wahrscheinlich an, dass sich in der Schleife die 
Bedingung der if-Abfrage nicht ändert und optimiert das Ganze.

Beachte den Hinweis auf volatile als Schlüsselwort vor Variablen und 
Funktionen, d.h. du macht dem Compiler bekannt, dass sich z.B. eine 
Variable anderswo (Interrupt?) ändert.

Wenn du das nicht hinbekommst, dann denk dir einen Ersatzcode aus, 
Teste, ob das Problem reproduzierbar ist. Porte den Ersatzcode.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.