Forum: Mikrocontroller und Digitale Elektronik ATMeag32 / C-Code (einige Fragen, Performance etc.)


von Rene H. (ballibou77)


Lesenswert?

Hallo,

also ich habe ein kleines Projekt vor bei dem sich nun doch einige 
Fragen stellen.

Ich fange mal mit dem ATMega32 und dem was ich benötige an, also:

2 PWMs (für LEDs über Transistoren)
3 ADCs (davon zwei mit Spannungsteilern für Mittelwert)
1 Zähler
1 Timer im µs bereich
einige I/Os

Die Frage die sich mir hier stellt ist, reicht ein ATMega32 dafür aus? 
Welchen Quarz nutze ich am besten? 8 und 12 Mhz habe ich da.

Zur Erläuterung:

Die zwei PWMs sollen LEDs über Transistoren dimmen. Es wird jedoch nur 
eine PWM gleichzeitig genutzt (den Rest im C-Code)

1 ADC soll konstant im 30 Sekunden Takt einen Fotowiderstand auswerten 
und ab einem Schwellwert dann einen PIN auf High bzw. LOW setzen. 
(stellt kein großes Problem dar)

2 weitere ADCs müssten "syncron" laufen. Diese werden mit je einem 
Spannungsteiler auf "mittelwert" also 512 +- 100 konstant gesetzt. Hier 
sollen dann je zwei zustände, also 1024 oder 0 erkennt und darauf dann 
entsprechende I/O PINs auf High bzw LOW gesetzt werden.

1 Zähler. Dieser soll Impulse zählen und nach Ablauf einer gewissen Zeit 
nachdem kein Impuls mehr kam einen entsprechenden PIN oder aber auch die 
die PWM starten.

Nun zum Code:

Der Code soll halt die oben genannten Aufgaben abarbeiten. Dies stellt 
so nach kein großes Hindernis dar, aber wie setze ich folgendes um?:

Also sagen wir an PD0 und PD1 sind Taster angeschlossen die auf LOW 
ziehen.

Nun soll, wenn PD0/1 auf LOW zieht die PWM von 0 -> 1024 starten. Bei 
High wieder von 1024 -> 0. Soweit sogut.

Wenn jedoch PD0 die PWM schon gestartet hat, wie verhindere ich, das 
wenn PD1 dann auf LOW zieht die PWM erneut gestartet wird? Beim High das 
selbe.

Ebenfalls bei dem Zähler. Wenn 2 Impulse kamen soll die PWM gestartet 
werden. Wenn nun einer der Taster auf LOW zieht soll dieser "unbeachtet" 
werden. Erst wenn der Taster dann auf High zieht soll die PWM wieder 
gestartet werden (also wieder "aus" dimmen)

Dann suche ich noch eine Art "Master-Funktion". Also, ich habe einen 
PIN. Wenn dieser auf LOW liegt wird der Code ausgeführt. Ist dieser auf 
HIGH wird der ganze Code unbeachtet belassen (if/else), also wie ein 
AN/AUS schalter.

Aber wie mache ich es nun, das der Controller den Code trotzdem ausführt 
und zwar nur dann, wenn der PIN auf High liegt und Daten per I²C herein 
kommen? Also eine Art "Superuser per I²C" die den "AN/AUS" Schalter 
"übergeht".

Ich dachte mir, ok, da ich in der main Schleife ja prüfe ob der PIN LOW 
ist und dann in eine Variable 1 schreibe, schiebe ich dieses mittel I²C 
vor, und sage ihm "der PIN ist LOW". Klappt jedoch nicht, denn sobald 
die Schleife wieder beginnt und der PIN nicht LOW ist setzt der Code die 
Variable ja wieder auf 0.

Habt ihr da ein paar Ideen für mich?

von Falk B. (falk)


Lesenswert?

@ Rene Hov (ballibou77)

>Ich fange mal mit dem ATMega32 und dem was ich benötige an, also:

>2 PWMs (für LEDs über Transistoren)

Gibt es in Hardware an mehreren Timern.

>3 ADCs (davon zwei mit Spannungsteilern für Mittelwert)

Einfach.

>1 Zähler

Gibt es drei.

>1 Timer im µs bereich

Was soll der genau machen?

>Die Frage die sich mir hier stellt ist, reicht ein ATMega32 dafür aus?

Wahrscheinlich schon. Was soll dein us Timer machen?

>Welchen Quarz nutze ich am besten? 8 und 12 Mhz habe ich da.

Dann nimm die 12 MHz.

>Nun soll, wenn PD0/1 auf LOW zieht die PWM von 0 -> 1024 starten. Bei
>High wieder von 1024 -> 0. Soweit sogut.

>Wenn jedoch PD0 die PWM schon gestartet hat, wie verhindere ich, das
>wenn PD1 dann auf LOW zieht die PWM erneut gestartet wird? Beim High das
>selbe.

Durch passenden Programmlogik, meist mit einer Statemachine.

>Ebenfalls bei dem Zähler. Wenn 2 Impulse kamen soll die PWM gestartet
>werden. Wenn nun einer der Taster auf LOW zieht soll dieser "unbeachtet"
>werden.

Klingt nach der Auswertung von einfach und mehrfach Tastendrücken. Dafür 
gibt es hier schon ein gutes Stück Software, siehe Entprellung.

> Erst wenn der Taster dann auf High zieht soll die PWM wieder
>gestartet werden (also wieder "aus" dimmen)

Siehe oben, Statemachine.

>Aber wie mache ich es nun, das der Controller den Code trotzdem ausführt
>und zwar nur dann, wenn der PIN auf High liegt und Daten per I²C herein
>kommen? Also eine Art "Superuser per I²C" die den "AN/AUS" Schalter
>"übergeht".

Alles per Statemachine.

von M. K. (sylaina)


Lesenswert?

Rene H. schrieb:
> Die Frage die sich mir hier stellt ist, reicht ein ATMega32 dafür aus?
> Welchen Quarz nutze ich am besten? 8 und 12 Mhz habe ich da.

Die Forderung 3 ADCs erfüllt der Atmega32 nicht, er hat nur einen mit 
einem Multiplexer sodass man 7 Kanäle hat. Ansonsten erfüllt er alle 
anderen Anforderungen. Brauchst du also wirklich 3 ADCs oder genügen 
drei ADC-Kanäle? Auf der anderen Seite kann man problemlos mehrere ADCs 
an den Atmega32 anschließen.
Die Frage, die ebenfalls noch im Raum steht: Wie schnell soll er diese 
Aufgaben bewältigen können? Das wird bestimmen ob er a. immer noch 
geeignet ist und b. welchen Quarz du verwenden musst ;)

: Bearbeitet durch User
von Rene H. (ballibou77)


Lesenswert?

Also ein ADC muss im 30 sekundentakt, dafür auch der Timer einen 
Fotowiderstand auslesen und ab einem gewissen Schwellwert High bzw Low 
auf einen Pin schalten.

Die anderen beiden ADCs die mit den Spannungsteikern auf dem Mittelwert 
gehalten werden, müssten eigentlich syncron zum restlichen Programm 
konstant ausgewertet und je nach zustand, also 5V oder 0V der 
entsprechende Pin auf High gesetzt werden.

Der Timer sollte im 200us bereich laufen.

von Karl H. (kbuchegg)


Lesenswert?

Rene H. schrieb:

> Die anderen beiden ADCs die mit den Spannungsteikern auf dem Mittelwert
> gehalten werden, müssten eigentlich syncron

Was verstehst du unter synchron?

Wie genau muss das sein? Muss die Auswertung alle millionstel Sekunden 
erfolgen? Alle 10 Millionstel Sekunden, alle .....

Da es sich hier ganz offenbar um eine Benutzereingabe handelt, reicht es 
wohl völlig aus, wenn ca. 1000 mal pro Sekunde nachgesehen wird, wie 
denn jetzt die Poti stehen. Und dann reicht es auch, wenn man sie 
hintereinander auswertet und nicht absolut gleichzeitig. Kein Mensch 
kann so schnell drehen.

Für deinen Mega eine Aufgabe, die er mit links erledigt und sich dabei 
noch langeweilt.

: Bearbeitet durch User
von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Karl H. schrieb:
> Da es sich hier ganz offenbar um eine Benutzereingabe handelt, reicht es
> wohl völlig aus, wenn ca. 1000 mal pro Sekunde nachgesehen wird, wie
> denn jetzt die Poti stehen.

Mach da 'ne 100 draus, das reicht auch.

von Rene H. (ballibou77)


Lesenswert?

Also an den zwei ADC Pins hängen zwei Wippschalter. Die Schalter sind 
aber "falschrum" angeschlossen. Also die Schalter kriegen 5V und GND und 
der "ausgang" geht dann zum ADC Pin. Daher soll der ADC auf Mittelwert 
"halten" und wenn man den Wippschalter oben drückt dann schaltet er 5V 
durch, drückt man ihn nach unten schaltet er GND durch und wenn man 
nichts drückt schaltet der Schalter nichts wodurch der ADC dann mit dem 
Spannungsteiler auf "mitte" gehalten werden muss wodurch man ja dann 
erkennen kann ob der Schalter in "mittelstellung" steht oder eben ob 5V 
oder GND fließen.

Das ganze zwei mal. Diese schalten Motoren, Links oder Rechts herum. 
daher sollte das schon "syncron" laufen um ein "nachdrehen" des Motors 
zu verhindern.

Der dritte ADC ließt einen Fotowiderstand aus und soll bei einem 
gewissen Dunkelwert Licht einschalten bzw. ein Relai was dann das Licht 
schaltet.

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

@ Rene Hov (ballibou77)

>aber "falschrum" angeschlossen. Also die Schalter kriegen 5V und GND und
>der "ausgang" geht dann zum ADC Pin.

Schalter sind digiatl, die misst man nicht mit einem ADC sondern einem 
normalen digitalen Eingang.

> Daher soll der ADC auf Mittelwert
>"halten"

???

>und wenn man den Wippschalter oben drückt dann schaltet er 5V
>durch, drückt man ihn nach unten schaltet er GND durch und wenn man
>nichts drückt schaltet der Schalter nichts wodurch der ADC dann mit dem
>Spannungsteiler auf "mitte" gehalten werden muss wodurch man ja dann
>erkennen kann ob der Schalter in "mittelstellung" steht oder eben ob 5V
>oder GND fließen.

AHA! Das ist natürlich was anderes!

>Das ganze zwei mal. Diese schalten Motoren, Links oder Rechts herum.
>daher sollte das schon "syncron" laufen um ein "nachdrehen" des Motors
>zu verhindern.

Was du mit "synchron" bezeichnest ist nicht viel mehr als "mit wenig 
Verzögerung". Das ist für den uC totlangweilg wie schon oben 
geschrieben. Wenn deine Statemachine mit 100 Hz aufgerufen wird und 
die Auswertung bzw. Ansteuerung vornimmt, ist der uC nicht mal 
ansatzweise ausgelastet.

>Der dritte ADC ließt einen Fotowiderstand aus und soll bei einem
>gewissen Dunkelwert Licht einschalten bzw. ein Relai was dann das Licht
>schaltet.

Trivial.

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

Rene H. schrieb:
> Also an den zwei ADC Pins hängen zwei Wippschalter. Die Schalter sind
> aber "falschrum" angeschlossen. Also die Schalter kriegen 5V und GND und
> der "ausgang" geht dann zum ADC Pin. Daher soll der ADC auf Mittelwert
> "halten" und wenn man den Wippschalter oben drückt dann schaltet er 5V
> durch, drückt man ihn nach unten schaltet er GND durch und wenn man
> nichts drückt schaltet der Schalter nichts wodurch der ADC dann mit dem
> Spannungsteiler auf "mitte" gehalten werden muss wodurch man ja dann
> erkennen kann ob der Schalter in "mittelstellung" steht oder eben ob 5V
> oder GND fließen.

Ah, danke, jetzt wird das klarer. Für eine solche Konstruktion braucht 
man nicht unbedingt einen ADC, es sollte auch mit einem hochohmigen 
externen Pull-Down-Widerstand gehen. Die Schwierigkeit besteht ja darin, 
herauszufinden, ob der zweiseitige Wipptaster in der Mitte steht, also 
der Eingang des Mikrocontrollers hochohmig ist.

Wenn du einen externen Pulldown gegen GND schaltest, wird der Eingang 
bei geöffnetem Schalter immer dem Zustand des internen Pullups folgen:

interner Pullup aus: Eingang auf GND
interner Pullup ein: Eingang auf VCC

Unabhängig davon bin ich mir nicht sicher, ob du wirklich einen so 
riesigen Baustein wie den Mega32 brauchst. Für die LEDs reicht Soft-PWN 
locker aus. Wahrscheinlich reicht dann z.B. ein ATtiny85 oder ein 
ATtiny84A. Und falls es keine Hochleistungs-LEDs sind, brauchst du 
keinen Transistor zur Ansteuerung. Vielleicht brauchst du nicht einmal 
ein Quarz, der interne Oszillator ist gar nicht so schlecht.

von Rene H. (ballibou77)


Lesenswert?

Also es handelt sich um zwei mal 90 LEDs. Da brauche ich schon einen 
Transistor :)

Und da ich dann noch knapp 18 I/Os brauche und nicht mit 
Schieberegistern arbeiten möchte und hier eh noch 5 ATMega32 rumliegen 
kann ich diese auch "verbraten" ansonsten hätte ich noch ATMega128L da, 
der erscheint mir aber definitiv zu "überdimensioniert".

PWM möchte ich schon Hardware mäßig.

von Karl H. (kbuchegg)


Lesenswert?

Rene H. schrieb:

> Das ganze zwei mal. Diese schalten Motoren, Links oder Rechts herum.
> daher sollte das schon "syncron" laufen um ein "nachdrehen" des Motors
> zu verhindern.

machen wir das doch mal an ein paar konkreten Zahlen fest.
Angenommen dein Motor dreht mit 60-tausend Umdrehungen pro Minute. Das 
ist schon recht heftig.
Dann dreht der Motor 1000 Umdrehungen pro Sekunde. Oder anders 
ausgedrückt: er dreht 1 Umdrehung in 1 Millisekunde. Wenn du also 
spätestens nach 100µs auf den Schaltvorgang reagierst, dann kann der 
Motor in dieser Zeit keine 1/10 Umdrehung machen. 100µs sind für einen 
Mega aber immer noch Kinderkram.

Nun ist es aber so, dass dein Motor sehr wahrscheinlich keine 60-tausend 
Umdrehung dreht. Des weiteren wird es auch nicht so sein, dass dein 
menschlicher Bediener auf 1/10 Millisekunden genau den Zeitpunkt 
erwischt, an dem der Motor abschalten soll. Selbst wenn eine Mechanik 
auf den Wippschalter drücken würde, sind die mechanischen 
Ungenauigkeiten so gross, dass ein reproduzierbarer Schaltvorgang im 
Milliesekundenbereich eine Herausforderung darstellt. Bei einem 
menschlichen Bediener sind wir in der Größenordnung von Zehntel-Sekunden 
und selbst da muss der sich schon extrem konzentrieren.

Millisekunden oder gar Zehntelsekunden sind aber für einen µC eine halbe 
Ewigkeit. Umgelegt auf dich als Mensch (und selbst der Vergleich hinkt) 
würde das bedeuten, dass du im Jannuar den Schaltvorgang bemerkst und 
spätestens bis Weihnachten geschaltet haben musst. Das ist nichts was 
dich irgendwie beunruhigen würde. Oder?

>
> Der dritte ADC ließt einen Fotowiderstand aus und soll bei einem
> gewissen Dunkelwert Licht einschalten bzw. ein Relai was dann das Licht
> schaltet.

Wieder umgelegt auf dich und deine Geschwindigkeit: Wenn du irgendwann 
im Juni oder Juli mal kurz nachsiehst, ob das Licht einzuschalten ist 
oder nicht, dann bringt dich das nicht wirklich ins schwitzen.

Eines sei noch angemerkt: Die Übertragung auf dich als Person hinkt 
hinten und vorne. Denn im Relation dazu, bist du mit deinem Zeitgefühl 
immer noch schnarchlangsam. Dein µC kann selbst ohne Quarz rund 
800-tausend Befehle pro Sekunde abarbeiten. Was denkst du, wie sehr der 
damit ausgelastet ist, alle heiligen Zeiten mal 10 oder 20 Befehle für 
die Motoren bzw. das Licht aufzuwenden?

Um diese Aufgabe so zu versauen, dass den Motoren deinem Gefühl nach 
nicht sofort die Spannung bei einem Schaltvorgang weggenommen wird 
bzw. zugeschaltet wird, da muss man sich schon gewaltig anstrengen. Das 
ist ohne Delays gar nicht so einfach.

: Bearbeitet durch User
von M. K. (sylaina)


Lesenswert?

Ich sehe das, nachdem klar ist was "gleichzeitig" bzw. "synchron" hier 
in der Anforderung bedeutet genauso wie Karl Heinz. Der Quarz ist IMO 
nicht mal notwendig, da kann man auch super mit dem internen Oszilator, 
der bis 8 MHz geht beim Atmega32 wenn ich mich recht entsinne, arbeiten. 
Die Aufgabe ist Pille-Palle, könnte auch ein Atiny2313 locker 
übernehmen. Wie kommt also die Wahl auf Atmega32? Lag der nur grade in 
der Schublade? Wenn er noch gekauft werden muss ist das auch nicht 
sinnvoll für diese Aufgabe.

: Bearbeitet durch User
von Rene H. (ballibou77)


Lesenswert?

Rene H. schrieb:
> Und da ich dann noch knapp 18 I/Os brauche und nicht mit
> Schieberegistern arbeiten möchte und hier eh noch 5 ATMega32 rumliegen
> kann ich diese auch "verbraten" ansonsten hätte ich noch ATMega128L da,
> der erscheint mir aber definitiv zu "überdimensioniert".

von Karl H. (kbuchegg)


Lesenswert?

Rene H. schrieb:
> Rene H. schrieb:
>> Und da ich dann noch knapp 18 I/Os brauche und nicht mit
>> Schieberegistern arbeiten möchte und hier eh noch 5 ATMega32 rumliegen
>> kann ich diese auch "verbraten" ansonsten hätte ich noch ATMega128L da,
>> der erscheint mir aber definitiv zu "überdimensioniert".

Du willst also nicht mit Schieberegistern arbeiten und statt dessen 
lieber in die 'Hölle' gehen, dir eine Kommunikation zwischen mehreren 
Megas aufzubauen.
Viel Spass damit.
Nur Narren glauben, dass der Einsatz von mehreren µC simpler ist, als 
einen µC alles machen zu lassen, wenn es keine technologischen Gründe 
dafür gibt (wie Laufzeiten oder räumliche Distanz). Mehrer Prozessoren 
einzusetzen, wo einer alleine locker ausreicht, ist immer ein Fehler. 
Mehrere Prozessoren machen die Dinge nicht einfacher, sondern 
komplizierter. Dagegen sind Schieberegister pillepalle.

: Bearbeitet durch User
von Rene H. (ballibou77)


Lesenswert?

Wieso mehrere?

Ne, ein ATMEGa32 ist was die PINs und die I/Os angeht ausreichend. Ein 
ATMega8 wäre zuklein. Ein ATMega128L finde ich überdimensioniert.

Also es soll nur EIN ATMega32 zum einsatz kommen.

von Karl H. (kbuchegg)


Lesenswert?

Rene H. schrieb:
> Wieso mehrere?

Sorry.
Da habe ich deine Aussage mit den 5 Megas dann fehlinterpretiert.
Ich dachte schon .....

(Zur Ehrenrettung: Hatten wir alles schon)

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Rene H. schrieb:
> wodurch man ja dann
> erkennen kann ob der Schalter in "mittelstellung" steht oder eben ob 5V
> oder GND fließen.

Geht aber auch mit einem Digitaleingang und Widerstand gegen einen 
Ausgangspin, spart sogar einen Widerstand ein.
Out In  Out In
0   0   1   1  offen
0   0   1   0  GND
0   1   1   1  VCC

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

Peter D. schrieb:
> Geht aber auch mit einem Digitaleingang und Widerstand gegen einen
> Ausgangspin, spart sogar einen Widerstand ein.
> Out In  Out In
> 0   0   1   1  offen
> 0   0   1   0  GND
> 0   1   1   1  VCC

Ja... oder eben ohne zusätzlichen Ausgangspin:
> Wenn du einen [hochohmigen] externen Pulldown gegen GND schaltest,
> wird der Eingang bei geöffnetem Schalter immer dem Zustand des
> internen Pullups folgen:
>
> interner Pullup aus: Eingang auf GND
> interner Pullup ein: Eingang auf VCC

Wobei je nach Umgebung die Hochohmigkeit nicht immer so geschickt ist, 
da ist deine Lösung natürlich robuster.

von M. K. (sylaina)


Lesenswert?

Rene H. schrieb:
> Rene H. schrieb:
>> Und da ich dann noch knapp 18 I/Os brauche und nicht mit
>> Schieberegistern arbeiten möchte und hier eh noch 5 ATMega32 rumliegen
>> kann ich diese auch "verbraten" ansonsten hätte ich noch ATMega128L da,
>> der erscheint mir aber definitiv zu "überdimensioniert".

Hatte ich übersehen. Noch 18 weitere I/Os? Was hängt denn da alles dran? 
Nicht das da noch ein Detail ist…oder ist das nur für Display und Co 
gedacht?

von Rene H. (ballibou77)


Lesenswert?

Ein Pin ist für On/Off. Also
1
while(1)
2
{
3
4
  if (PIN_PA1 == High) { onoff = 1; } else { onoff = 0; }
5
6
  if (onoff == 1)
7
    {
8
      // Hier dann der gesamte Programmcode
9
    } else { 
10
      // Tu nichts
11
    }
12
}

Die anderen müssen je nach den Auswertungen nur auf High oder Low 
geschaltet werden. 4 Pins alles für die 2 Motoren. 1 Pin für Licht (also 
Transistor der dann ein Relai schaltet)

Nur sowas halt.

von Ast E. (vis)


Lesenswert?

Rene H. schrieb:
> Ein Pin ist für On/Off. Also
>
> while(1)
> {
>
>   if (PIN_PA1 == High) { onoff = 1; } else { onoff = 0; }
>
>   if (onoff == 1)
>     {
>       // Hier dann der gesamte Programmcode
>     } else {
>       // Tu nichts
>     }
> }


gibt es dafür nicht einen Reset Pin?

der uC wird dann natürlich komplett zurück gesetzt, jedoch klingt die 
Anwendung nicht nach etwas hoch speziellem... aber das weiß wie immer 
nur die Glaskugel ;-)

: Bearbeitet durch User
von M. K. (sylaina)


Lesenswert?

Rene H. schrieb:
> Ein Pin ist für On/Off. Also
>
>
1
> 
2
> while(1)
3
> {
4
> 
5
>   if (PIN_PA1 == High) { onoff = 1; } else { onoff = 0; }
6
> 
7
>   if (onoff == 1)
8
>     {
9
>       // Hier dann der gesamte Programmcode
10
>     }  else {
11
       // Tu nichts
12
     }
13
> }
14
> 
15
>
>
> Die anderen müssen je nach den Auswertungen nur auf High oder Low
> geschaltet werden. 4 Pins alles für die 2 Motoren. 1 Pin für Licht (also
> Transistor der dann ein Relai schaltet)
>
> Nur sowas halt.

Und warum nicht gleich :
1
 
2
 while(1)
3
 { 
4
   if (PIN_PA1 == High)
5
     {
6
       // Hier dann der gesamte Programmcode
7
     }
8
 }

??
Die erste If-Schleife ist eigentlich Quatsch. Noch besser, und bei dir 
sogar recht simple umsetzbar da zwischen zwei Aktionen dein µC ja quasi 
eine halbe Ewigkeit Zeit hat: Den µC schlafen schicken und nur aufwecken 
wenn es etwas zu tun gibt. Karl Heinz hat da sicher den ein und anderen 
Tipp für dich.

EDIT: Mal Rausgesucht den Artikel zu den Sleepmodes hier auf der Seite: 
https://www.mikrocontroller.net/articles/Sleep_Mode

: Bearbeitet durch User
von egbert (Gast)


Lesenswert?

"If-Schleife"?!?

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

egbert schrieb:
> "If-Schleife"?!?

Ja. Nähere Informationen hier: http://if-schleife.de/ ;-)

Aber Michael hat trotzdem Recht.

: Bearbeitet durch User
von M. K. (sylaina)


Lesenswert?

Okey, ich kenne keinen Programmierer, der bei Begriff "if-Schleife" 
nicht weiß was damit gemeint ist.
Und macht das while(1) davor die if-Abfrage nicht automatisch zur 
Schleife? :D

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.