mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Programmbeenden nach Abfrage


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
mit dem folgenden Teil möchte ich abfragen ob ein IC am Bus hängt. Dazu 
gebe ich erst die Adresse an und Frage ob er sich meldet.
ret = i2c_start(IC1);          // Start Lesen 
  if (ret == 0)
    {                         // Wenn IC1 ein OK sendet...
    
    MMM_IC1 = i2c_readNak();    //...speichere unteres Bit
    }
  else                                // Fehlererkennung
    {                              // Wenn IC1 kein OK sendet
    lcd_command(LCD_CLEAR);      // Leere Display
    _delay_ms(2);
    lcd_printlc(1,13,"READ");    // "Lesevorgang"
    lcd_printlc(2,13,"NOK");    // "Nicht OK (NOK)"
    exit();
    }
mit exit soll er eigentlich stoppen und das Programm beenden oder die 
Anzeige bringen. Er läuft aber weiter. exit wird nicht beachtet. Wie 
kann ich das machen?

LG Klaus

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HI

>Er läuft aber weiter

Und wohin soll es denn 'exiten'?

MfG Spess

Autor: Lexi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
exit() ist keine gute Idee.

Besser wäre einen Ende-Status zu setzen und dann die while-Schleife des 
Hauptprogramms zu beenden.

https://www.microchip.com/webdoc/AVRLibcReferenceManual/group__avr__stdlib_1ga137096a48cc0c731052cadfb69c39b34.html

Vorausgesetzt, es geht um avr-gcc.

Autor: J Zimmermann (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
spess53:
> Und wohin soll es denn 'exiten'?

eben, was Du machen kannst, falls es um "Energiesparen" geht, den 
Controller in den SLEEP-Modus bringen, beim XMEGA könnte man dir 
PR-Register bemühen ...
also wie spess53 schon fragte - wohin?

mfg

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es soll sich um eine "Sicherheitabfrage" handeln. Das Programm darf erst 
weiter laufen, wenn der IC vorhanden ist. Ansonsten soll er mit der 
gewählten Anzeige stehen bleiben. Stehen bleiben ist wahrscheinlich der 
falsche Ausdruck. Dachte an eine Schleife die nen IC abfragt und dann 
immer wieder auf "Ende" geht
Arbeite mit C und avr GCC

Beitrag #5409771 wurde von einem Moderator gelöscht.
Autor: Peter D. (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klaus schrieb:
> mit exit soll er eigentlich stoppen und das Programm beenden

Das macht der AVR-GCC auch, er führt ein CLI aus und dann eine 
Endlosschleife.
Vermutlich hast Du aber den Watchdog aktiviert, der dann ein Reset 
macht.

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du meinst diese Sache
void exit(
  int __status)
Was macht hier __status?

Autor: fop (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vermutlich muss man erst Windows 10 auf dem AVR installieren, bevor man 
mit exit die Kontrolle an das Betriebssystem zurück geben kann.

:)))

Sorry couldn't resist.

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab das neue Windoows 12

Autor: fop (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Na gut, Spaß beiseite :
Sinnig wäre, eine Fehlermeldung auf das Display, ca. 2 Sekunden den 
Mikrocontroller schlafen legen, um Energie zu sparen und dann von vorne 
probieren, so dass der Benutzer einfach durch Anstöpseln weiter kommt, 
wenn er die Fehlermeldung gelesen und kapiert hat.
Noch ein wenig Hirnschmalz investieren, damit die Fehlermeldung stehen 
bleibt und nicht durch Flackern unleserlich wird, und Alles wird gut.

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.