Hallo
Habe den Ablauf mit dem Timer bekommen. Auch die Abfrage eines Tasters
(einfach) geht. Dort steht aber noch delay drin.
Wollte jetzt die Abfrage Taster mit dem Timer zusammen nehmen. Komme
leider mit den Klammern total durcheinander. Mein Code:
if (!get_input_bit(IO_INPUT_1))
{ // Abfrage S3 Port
if (wait10_merker == 1) // Steuerung mit merker
tast++;
if ( tast == 2 ) // Einstellung Zeit 10ms mal x
tast = 0; // Pause Entprellung 20 ms
if (!get_input_bit(IO_INPUT_1))
{ // Abfrage S3 bei loslassen
while (!get_input_bit(IO_INPUT_1)) // Wiederholung
Schleife
{ } // ohne klammer geht nicht
}
}
{
IO_LEDS_GREEN_PORT = 0x04; // Green Port auf ein
IO_LEDS_RED_PORT = 0x08; // Red ein
}
delay(10); // noch ersetzen durch Timer
IO_LEDS_GREEN_PORT = 0x00; // Green Port auf aus
IO_LEDS_RED_PORT = 0x00; // Red Port auf aus
Der Impuls alle 10ms kommt damit:
// Bebinn Timer schleife
if (wait10 == 0xFF) { // Abfrage wai10 - Merker
wait10_merker=1;
wait10=0; }
Kann mir jemand sagen, was ich falsch mache.
achim
Gast
#2663737
Achim Seeger schrieb: > Komme > leider mit den Klammern total durcheinander. Dann solltest du dir mal aufmalen, was du wann bewirken willst. Sowas nennt man Struktogramm.
Achim Seeger schrieb: > Kann mir jemand sagen, was ich falsch mache. Deine Frage lautet im Grunde: Ich komme völlig durcheinander, wenn ich mein Werkzeug völlig wahllos in irgendwelche Schachteln, Schubläden und Regalen verteile. Was soll ich tun? Und die Antwort ist ganz einfach: Halte Ordnung! Dann findest du auch dein Zeug wieder. Und mit den { } ist es ganz genau gleich. Wenn du durcheinanderkommst, dann musst du eben anfangen Ordnung zu halten. Jede { kommt auf eine neue Zeile Jede weitere Zeile, die innerhalb dieser öffnenden { steht, wird um zb 2 Leerzeichen eingerückt. Die jeweils schliessende } steht exakt unter der zugehörigen öffnenden {, wird also wieder um die bewussten 2 Leerzeichen ausgerückt. Am Ende einer Funktion muss daher die letzte { der Funktion wieder am linken Bildschirmrand stehen. Ist dem nicht so, dann stimmt in deiner Schachtelung was nicht, und du musst suchen, wo du den Fehler gemacht hast. Das kann sein, dass du wircklich wo eine { oder } vergessen hast, das kann aber auch sein, dass du irgendwo mit den Einrückungen nicht konsequent warst. Und dann klappt das auch mit den { } und du kommst nicht mehr durcheinander.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |
58 | |
Ein sauber strukturiertrer Source Code ist kein Selbstzweck oder ein optisches Gimmick sondern ein Werkzeug um den Überblick im Code zu behalten. Also mach das auch! Jetzt! Nicht irgendwann! Genauso wie man nicht einmal
1 | |
und einmal
1 | |
schreibt. Wenn du vor und hinter dem = Leerzeichen machst (etwas, das ich voll und ganz unterstütze) dann mach das auch konsequent!
Hallo KH danke für deine Erklärung. In meinem eigentlichen Prg habe ich es drin. Leider nicht so ausführlich, wie du es darstellt. Habe ein Problem damit, was ich so nicht lösen kann. Bei meiner Eingabe eines Codes ist die Zeile ziemlich kurz. Das hat zur Folge, das es nicht richtig dargestellt wird. Kommentare passen fasst gar nicht rein. Eine Darstelllung, wie du es machst, geht nicht. Mache ich was falsch bei der Einstellung? achim
Hallo ich muss mal was grundlegendes fragen. Da ich scon seit ein paar Tagen versuche Codes von einer normalen Programmierung auf Timer umzustellen, ist mir was unklar. Fangen wir mit der einfachen Tastenabfrage an. Ich kann den Port abfragen, keon Problem. Die Verabeitung ist aber anders. Die kurze Wartezeit habe ich hier bei eigentlich gar nicht. Durch die Timer Funktion läuft das Prg ständig weiter. Dadurch muus das verändert werden. Genau so ist es bei der delay Zeit. Bei dem normalen Ablauf stop dr Prz und wartet. Nehme ich einen Timer, geht das Pr weiter. Dadurch muss es anders gebaut werden. Es bezieht sich doch auch aufs ganze Prg. Es müssen viele Sachen geändert werden. Sehe ich das richtig oder gibt es von den Experten Einwände dazu? Eine Frage daraus ist auch, wie gestalte ich die Abfrage eines Tasters mit Timer?
Gast
#2665548
Achim Seeger schrieb: > Eine Frage daraus ist auch, wie gestalte ich die Abfrage eines Tasters > mit Timer? Guck dir die Entprell-Routine von Peter Dannegger in der Codesammlung an!
Gast
#2665555
Hier wäre dann auch der Link: Beitrag "Entprellen für Anfänger"
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.