Hallo Ich habe das Problem, dass der gesetzte Ausgang nicht gelöscht werden kann. Der Ausgang bleibt permanent auf High. Am Ausgangspin messe ich 5V.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
|
Anzeige
|
Ausgangsbits werden nicht gelöschtHallo Ich habe das Problem, dass der gesetzte Ausgang nicht gelöscht werden kann. Der Ausgang bleibt permanent auf High. Am Ausgangspin messe ich 5V.
Gast
#3871424
probier mal ;)
Okay das funktioniert, aber Warum? Anderes Bsp. Warum funktioniert:
und warum funktioniert folgendes nicht:
Gast
#3871462
Julian Sch schrieb: > Okay das funktioniert, aber Warum? guck dir einfach an wie lange dein pin auf high und wie lange auf low gesetzt ist. dann siehst du: - dein pin wird auf high gestellt - dann wartest 5s -> dein pin bleibt 5 sek auf high - dein pin wird auf low gestellt - dein pin wird auf high gestellt -> das low signal lag nur für n paar mikro/nano sekunden an - ... die frage ist jetzt wie du misst. mit einem multimeter kannst du das kurze low signal nicht sehen. mit einem oszi musst du das richtig einstellen damit du diesen kurzen low peak auf n bildschirm hast. Julian Sch schrieb: > und warum funktioniert folgendes nicht bei deinem zweiten beispiel toggelt der pin schnell hin und her... das sollte man auf nem oszi eigentlich sehen... also hier auch frage, womit misst du? Nunja ich messe mit einem Multimeter an PD0 dauerhaft 5V. Es wird nicht zurückgesetzt. Habe letztes Beispiel an einem Testaufbau laufen. Es wird ein Magnetventil angesteuert das wiederum einen Zylinder mit Luftdruck ansteuert. In diesem Zylinder befinden sich 2 Sensoren (Oben und Unten) die die Stellung des Kolbens ermitteln. 1. Wenn Sensor_Unten an ist wird Magnetventil angesteuert. 2. Wenn Sensor_Oben an dann wird Magnetventil nicht mehr angesteuert. 1.Schritt klappt und Ventil bleibt dauerhaft angesteuert Hatte einen Fehler drin So ist es Richtig. Funktioniert aber immer noch nicht
Gast
#3871551
Julian Sch schrieb: > Hatte einen Fehler drin > So ist es Richtig. Funktioniert aber immer noch nicht was misst du bei PC2 und PC1 mit dem multimeter, wenn der kolben oben angekommen ist?
Gast
#3871570
HI Um welchen AVR handelt es sich überhaupt? Bei den 40-pol. könnte ein Teil von Port C durch das JTAG-Interface blockiert sein (PC2..5). MfG Spess >was misst du bei PC2 und PC1 mit dem multimeter, wenn der kolben oben >angekommen ist? Genau er ist oben, und bleibt dort, da der Ausgang nicht abgeschaltet wird. >Um welchen AVR handelt es sich überhaupt? Bei den 40-pol. könnte ein >Teil von Port C durch das JTAG-Interface blockiert sein (PC2..5). Atmega324PA, Ausgänge sind am PortD angeschlossen und Eingänge am PortC. JTAG habe ich über Atmel Studio 6.2 schon deaktiviert (Haken habe ich rausgenommen). Julian Sch schrieb: >>was misst du bei PC2 und PC1 mit dem multimeter, wenn der kolben oben >>angekommen ist? > > Genau er ist oben, und bleibt dort, da der Ausgang nicht abgeschaltet > wird. > So. Und jetzt mal langsam zum mitschreiben. Wer (Schalter?) ist wo in welcher Form angeschlossen? Eine Skizze wär cool. Denn: So wie du deinen C-Port initialisierst, sieht es so aus, als ob die Endschalter(?) bei Betätigung gegen Masse schalten. Könnte aber auch umgekehrt sein. Daher: Je nachdem, wie du die Schalter verbaut hast und je nachdem, ob die öffnen oder schliessen, wenn der Kolben(?) die Endlage erreicht hat, muss hier
bei den Abfragen der Endschalter ein ! rein oder auch nicht Also: wie sind die Endschalter verbaut und was machen sie, wenn das bewegliche Teil den Endschalter erreicht? Schliessen sie oder öffnen sie? >Daher: Je nachdem, wie du die Schalter verbaut hast und je nachdem, ob >die öffnen oder schliessen, wenn der Kolben(?) die Endlage erreicht hat, >muss hier > if ( (PINC & (1<<PC2))) >bei den Abfragen der Endschalter ein ! rein oder auch nicht Ja du hast Recht. Entschuldigung das habe ich in meinem Code eigentlich auch. Habe zwischendruch ein bisschen rumexperimentiert und die ! mal rausgenommen. So sieht die aktuelle Schleife aus, die ebenfalls nicht funktioniert :P
Sensor_ausgefahren (oben): PC1 Sensor_eingefahren (unten): PC2 Magentventil: PD0 Wenn PC2=0 ist, also wenn Sensor_eigefahren (unten) ein Signal hat, wird PD0 geschalten. Magentventil gibt Druckluft auf den Zylinder und Kolben fährt aus. Wenn PC1=0 ist, also wenn Sensor_ausgefahren (oben) ein Signal hat, wird der Ausgang PD0 sofort wieder abgeschalten Die Sensor Eingänge gehen auf Optokoppler die Masse an die Eingangspins des µC ziehen. Schön. UNd was startet den ganzen Prozess. Kannst du nicht einfach dein ganzes Programm posten? Die 5 Programmzeilen
sind jetzt wirklich nicht die Welt, um als ganzes per Copy&Paste übernommen zu werden, oder ganz einfach als C File angehängt. Sicher, dass du die Schalter nicht vertauscht hast oder die Ventilsteuerunfg genau anders rum funktioniert? >Schön. >UNd was startet den ganzen Prozess. Die Versorgungsspannung >Kannst du nicht einfach dein ganzes Programm posten? Nunja das ist vorerst mein ganzes Programm.
>Sicher, dass du die Schalter nicht vertauscht hast .... Sehr sicher, da an den Sonsoren LED´s aufleuchten wenn sie schalten und ich die Spannung auch messe. > oder die Ventilsteuerunfg genau anders rum funktioniert? Bin mir sicher das es funktioniert, da ich sie selber entworfen habe. Schaltung im Anhang. Neuer Tag Neues Glück, habe gerade das Programm nochmal probiert und siehe da es geht auf einmal. Trotzdem danke für die Mühe.
Gast
#3872141
>Bin mir sicher das es funktioniert, da ich sie selber entworfen habe.
Diesen Satz werde ich in mein Standard-Repertoire "geniale Antworten"
übernehmen.
>Diesen Satz werde ich in mein Standard-Repertoire "geniale Antworten" >übernehmen. :D Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|