Go Down

Topic: Stop - before Loop? (Read 805 times) previous topic - next topic

Hackdub

is it possible to stop the loop from runnning.

Im using an ethernet shield, and if it fails to obtain a local LAN Ip, I want to stop the loop from running.. can I do this?

so In void setup I have this line..
Code: [Select]
if (Ethernet.begin(mac) == 0) {

   { Serial.println("Failed to configure Ethernet using DHCP");
    lcd.setCursor(0,0);
lcd.print("LAN FAILURE !");
delay(1000);}
/// I want this to stop the loop from running from here . HOW?


do I create a else comment in loop and do nothing if (Ethernet.begin(mac) == 0)

any help would be appreciated...

David

billroy

Wouldn't it be more stylish to loop retrying the DHCP connection than simply to stop?

Anyway, you can just write a forever loop: "while (1) {;}" to stop execution.

-br

Hackdub


Wouldn't it be more stylish to loop retrying the DHCP connection than simply to stop?

Anyway, you can just write a forever loop: "while (1) {;}" to stop execution.

-br


Yes it would, but as it is even if my LAN is down, the loop begins..

GoForSmoke

You could check the LAN in setup().

Either way, while (1); ( save yer fingers, you don't need the { } ) will hang the code instantly. It's budget error-handling.

I find it harder to express logic in English than in Code.
Sometimes an example says more than many times as many words.

MarkT

You can always set a flag if initialization fails and test that in loop...  Perhaps you want something else to happen in that case
[ I won't respond to messages, use the forum please ]

Hackdub


You could check the LAN in setup().

Either way, while (1); ( save yer fingers, you don't need the { } ) will hang the code instantly. It's budget error-handling.





That was easy.. many thanks !-)

Nick Gammon


Code: [Select]
if (Ethernet.begin(mac) == 0) {

  { Serial.println("Failed to configure Ethernet using DHCP");
   lcd.setCursor(0,0);
lcd.print("LAN FAILURE !");
delay(1000);}
/// I want this to stop the loop from running from here . HOW?




Use exit();

And indent better.

Code: [Select]

 if (Ethernet.begin (mac) == 0)
    {
    Serial.println ("Failed to configure Ethernet using DHCP");
   lcd.setCursor (0,0);
   lcd.print ("LAN FAILURE !");
    delay (1000);
   exit (1);     // give up
    }


Don't be shy to hit the space bar. You don't get charged extra for spaces.
http://www.gammon.com.au/electronics

GoForSmoke

Oh yeah.. exit(). I haven't used it with Arduino because for years it means exit to O/S to me!

Please for review, does exit stop any clocks and cut power use?

I find it harder to express logic in English than in Code.
Sometimes an example says more than many times as many words.

Nick Gammon


Oh yeah.. exit(). I haven't used it with Arduino because for years it means exit to O/S to me!

Please for review, does exit stop any clocks and cut power use?


I have to resist making humorous suggestions here ...

No, it turns interrupts off and goes into an infinite loop. That's all.
http://www.gammon.com.au/electronics

Go Up