So ganz bin ich noch nicht dahintergekommen was du mit den Flags bezweckst, aber ein paar Dinge die mir aufgefallen sind:
- in der main:
Und dann? Der Mikrocontroller darf sein Programm nie verlassen, denn du weist ja nicht was danach noch so im Flash an Programmcode folgt, der µC kann also alles mögliche machen. Du musst immer eine Hauptschleife haben die unter keinen Umständen verlassen werden kann: while(1)Code:while (erg<1) // Dauerschleife bis Alarmmeldung- Beide Unterprogramme können zwar int-Werte zurückgeben, aber die einzigen Rücksprungbefehle sind: "return 0;". Wozu muss man dann Int-Werte zurückgeben können, wenn sowiso in jedem Fall nur ein 0er zurückgegeben wird?
Was soll denn das Programm genau machen?
- Warten bis PB2 low ist
- für 3 Minuten Alarm geben
- Alarm abschalten
- warten bis PB2 wieder high ist (kein Alarmsignal mehr)
- wieder warten bis PB2 low ist (sprich ab Schriit 1 abwärts)
Stimmt das so?
<EDIT:>
Falls die Liste so stimmt, sollte folgendes Programm funktionieren (nicht getestet, aber so falsch kanns nicht sein ):
https://dl.dropboxusercontent.com/u/...ogramm2.c.html
Lesezeichen