for Schleife funktion

In dieses Forum gehören all deine Fragen rund um die Elektrotechnik und im Speziellen zum Bereich der Mikrocontrollertechnik.

for Schleife funktion

#1

Ungelesener Beitrag Herbert » 9. Dez 2019, 13:24

Hallo,
ich habe zu folgender for Schleife..

Code: Alles auswählen

for (int pot_num = 0; pot_num <=3; pot_num ++)
..die ich aus einem fertigen C-Programm habe zwei Fragen ob ich diese richtig verstehe.
Und zwar denke ich das die Schleife mit 0 Anfängt zu zählen und dann bei jedem Durchlauf
um 1 inkrementiert wird und dann bis 3 zählt. Und somit von 0-3 zählt.

Weitere Frage wenn die obige for Schleife in einem C-Programm ist und statt der 3 versehentlich
eine 4 eingegeben wird, ob man diesen Tippfehler dann durch Debuggen mit PICKit3 erkennen bzw finden würde?

Viele Grüße
Herbert

Re: for Schleife funktion

#2

Ungelesener Beitrag vloki » 9. Dez 2019, 14:50

<edit> war nicht präziese...

pot_num zählt eigentlich von von 0 bis 4.
Man kann das mit einem PICkit oder auch im Simulator unter Umständen nur von 0 bis 3 beobachten, wenn man das Programm schrittweise ausführt, bzw. innerhalb der Schleife einen Breakpoint setzt, weil das Hochzählen am Ende der Schleife gemacht wird. Die Schleife wird mit dem Wert 4 ja dann nicht mehr betreten.

Man kann aber auch einen Daten-Break-Point setzen, der das Programm stoppt, sobald pot_num 4 wird.
(Geht allerdings nur, wenn man pot_num als globale Variable definiert)

Re: for Schleife funktion

#3

Ungelesener Beitrag Peter » 9. Dez 2019, 16:12

Du kannst dir im Compiler doch den Wert von pot_num im Debugg Modus
Anzeigen lassen.
Bei jedem Durchlauf müßte der Wert sich immer um eins erhöhen.

Re: for Schleife funktion

#4

Ungelesener Beitrag Herbert » 9. Dez 2019, 19:42

vloki hat geschrieben:
9. Dez 2019, 14:50
<edit> war nicht präziese...
Hallo,

also wird pot_num mit der aufgeführten for Schleife insgesamt 4 mal aufgerufen richtig?

Danke Grüße
Herbert

Re: for Schleife funktion

#5

Ungelesener Beitrag Herbert » 9. Dez 2019, 19:45

Peter hat geschrieben:
9. Dez 2019, 16:12
Du kannst dir im Compiler doch den Wert von pot_num im Debugg Modus
Anzeigen lassen.
Hallo
könntest du mir wie man das macht
eventuell ein Beispiel geben.
Danke Herbert

Re: for Schleife funktion

#6

Ungelesener Beitrag Peter » 9. Dez 2019, 19:59

Die Schleife wird dreimal durch laufen.
Ich kenne deinen Compiler nicht.
Aber bei meinem Compiler wird im Debug-Modus
eine Liste angezeigt welche Variablen es im Programm
gibt. Wähle ich davon eine aus, so kann ich deren Inhalt wärend
es durchlaufen wird, angezeigt bekommen.

Re: for Schleife funktion

#7

Ungelesener Beitrag Herbert » 9. Dez 2019, 20:43

Peter hat geschrieben:
9. Dez 2019, 19:59
Die Schleife wird dreimal durch laufen.
Hallo,
irgendwie habe ich jetzt Probleme die aufgeführte for Schleife zu verstehen und zwar aus Folgendem Grund: Die Variable pot_num steht für Potentiometer die
an die ADC Pins vom PIC16F877A Angeschlossen sind. Hierbei handelt es sich insgesamt um 5 Potentiometer mit den Nr. pot1-pot5 wenn man diese Potis betägt wird der Entsprechende Ausgangs Pin betätigt und ein PWM Singnal der einen Modell Servo steuert Ausgegeben.

Da aber nur die Potis 2-5 beim Betätigen das PWM Singnal auf die Ausgangs Pins brachte, habe ich in der for Schleife die 3 gegen 4 gewechselt dann funktionierten alle 5 Potis wie sie sollen.

Deshalb bin ich der Meinung das die Schleife insgesamt 4 bzw 5 mal durchlaufen wird. weil ja auch bei 0 Angefangen wird zu zählen.

Eventuell verstehe ich zur Zeit auch nur Bahnhof.
Ich Stelle das Gesamte Programm hier mal ein der Entwickler ist Aswinth Raj

Grüße Herbert
Dateianhänge
PIC_Robotic_Arm.c
(5.02 KiB) 148-mal heruntergeladen
lcd.h
(2.72 KiB) 134-mal heruntergeladen

Re: for Schleife funktion

#8

Ungelesener Beitrag Peter » 9. Dez 2019, 21:27

Ja stimmt. Jetzt habe ich auch die Null übersehen.
Wird natürlich von 0 bis 3 gezählt.
Das macht 4 Durchläufe.
Fang doch einfach bei 1 an, dann kommst du auch nicht durcheinander.

Re: for Schleife funktion

#9

Ungelesener Beitrag vloki » 9. Dez 2019, 22:02

Peter hat geschrieben:
9. Dez 2019, 21:27
Fang doch einfach bei 1 an, dann kommst du auch nicht durcheinander.
Gute Idee. for (int pot_num = 1; pot_num <=5; pot_num ++)
oder for (int pot_num = 'A'; pot_num <='E'; pot_num ++)

Der ursprüngliche Code war dann tatsächlich falsch!
Herbert hat geschrieben:
9. Dez 2019, 19:45
Hallo
könntest du mir wie man das macht
eventuell ein Beispiel geben.
Lies doch mal in meinem Skript das Kapitel 3.1.8 Erstes Testen / Debuggen des Programms
Es ist nicht sehr ausführlich, aber evtl. bekommt du eine Idee, wie das in der MPLABX IDE funktioniert.

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag
  • Neuer Beitrag Programmer PICKit3 Funktion fehlerhaft
    von Herbert » 6. Nov 2019, 21:12 » in Elektrotechnik und Mikrocontroller
    3 Antworten
    1645 Zugriffe
    Letzter Beitrag von Herbert
    6. Nov 2019, 22:59
  • Neuer Beitrag Neue Funktion: Antwort markieren
    von Nico » 10. Nov 2019, 10:17 » in Ankündigungen, Fagen und Kritik zum Forum
    4 Antworten
    2969 Zugriffe
    Letzter Beitrag von Nico
    29. Nov 2019, 18:21

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast