Member since Apr 2011
15 posts
|
![]()
In reply to post ID 2691
Ist leider nicht so gut wie die andere lösung aber ich wollte mal fragen wo hier noch überall fehler sind
![]() Bitte um verbesserungsvorschläge und fehlersuche ![]()
|
![]()
Member since Oct 2010
101 posts
|
![]()
EDIT: *In neuen Topic verschoben*
|
E-Mail: christopher.beck@fau.de
GPG-Fingerprint: AE1A C931 2BAF C5A1 F0BE 2083 3117 1121 2F9D 4F14 |
Member since May 2011
331 posts
|
![]()
@beckus: Bitte keine threads enführen! - Bitte mach mit der Frage einen neuen Thread auf....
|
Member since Oct 2010
15 posts
|
![]()
In reply to post ID 2687
@joan: Wenn ich das richtig verstanden habe, wird sleep_cpu() bei jedem Interrupt verlassen. Also auch wenn ein Interrupt auftaucht, der gar nichts mit deiner Bedingung in der while-Schleife zu tun hat. Somit wird die while-Schleife nicht verlassen, aber nochmal die Bedingung überprüft.
|
Member since May 2011
331 posts
|
![]()
In reply to post #16
P.s: Code bitte mit [code=c] .... [/code] formatieren. |
Member since May 2011
331 posts
|
![]()
@D.KAy: Auch an dich: Neue Frage, neuer Thread - sonst wird es unübersichtlich....
|
Member since Apr 2011
15 posts
|
![]()
In reply to post #20
-ISR(INT0): ich verstehe nicht was falsch ist weil ich doch nur einen liter dazuzähle wenn der zufluss geöffnet ist und falls ich über das fassungsvermögen hinauskomme schließe ich das zuflussventil
-ISR(INT1): warum führt das zu einem kontinuierlichen interrupt ich wechsle doch bei jedem ausgelösten interrupt der quelle INT1 von offener abflusssperre zu geschlossener abflusssperre und umgekehrt. Sorry ich komm nicht drauf wo mein denkfehler liegt. -ich lese PORTD unter interruptsperre aus weil sich ja sonst PORTD während des auslesens durch interrupt INT1 ändern könnte und ich so das falsche lese oder etwa nicht? - ich dachte mir ich überprüfe so ob das 3. Bit an PORTD gesetzt ist. falls das zutrifft ist ja der abflusshahn offen steht in den informationen zur hardware. und solange der abflusshahn offen ist soll wasser abfließen. - warum kann man es nicht mit PORTD auslesen? Sorry steh vil. auf dem Schlauch aber ich verstehe es einfach gerade nicht. |
Member since May 2011
331 posts
|
![]()
....evtl gibt es noch jemand anderes der joan helfen kann? Lesen sollte es ja genug....
|
Member since Oct 2010
15 posts
|
![]()
Was mir so spontan in der Abflussüberwachung auffällt:
Fliesst innerhalb eines Schleifendurchlaufes kein Liter durch, d.h. wechselt sich der Zustand von PORTD einmal nicht sofort, wird der Abflusshahn geschlossen und die Zuflusssperre geöffnet. Die Zuflusssperre sollte aber erst unter 20.000 Liter wieder geöffnet werden. Bei dir stoppt auch der Abfluss sobald nur noch 19.999 Liter drin sind. |
Member since Apr 2011
15 posts
|
![]()
ja stimmt der else zweig ist falsch danke
![]() |
Member since May 2011
6 posts
|
![]()
In reply to post ID 2687
falls sleep_cpu() durch einen anderen interrupt unterbrochen wurde, wird die while-schleife nicht verlassen. das ist der Grund weshalb du überhaupt die while-schliefe hast. somit brauchst du auch das cli() vor jedem testen deiner schlaf-bedingung. |
Member since Aug 2011
1 post
|
![]()
Frage zur Initialisierung:
ist PD0 ein Makro für 0, oder PD2 ein Makro für 2? |
Member since May 2011
331 posts
|
![]() Jep P{A,B,C,D}X sind makros für X. Deshalb verwende ich sie auch nicht. Es gibt sie halt, weil es alle Namen das Datenblats zur Verfügung gestellt werden. Meistens macht es Sinn sie zu verwenden - in diesem Fall finde ich es eher verwirrend... ![]() |
Member since Oct 2012
31 posts
|
![]()
In reply to post ID 2635
Bei den ISR habe ich nicht wirklich eine bessere Idee, aber dieses abgesperrt+1 und dan %2 wird doch nicht funktionieren oder ? Da kommt doch eigentlich immer 0 raus, man addiert 1 auf 0 teilt durch 2, hat also wieder 0 beim nächsten Durchlauf. |
Powered by the Unclassified NewsBoard software, 20110527-dev,
© 2003-8 by Yves Goergen