PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] was stimmt da nicht?



michi
25.02.2004, 09:47
Was stimmt da nicht? wenn ich im terminal schaue steht dass Ständig taster gedrückt werden obwohl dass nicht der fall ist

z.b.
taster1
taster9
taster3
taster12
taster1
taster8
taster14
taster16
taster4
taster2
....
..
.



define a1 port[1]
define a2 port[2]
define a3 port[3]
define a4 port[4]
define a5 port[5]
define a6 port[6]
define a7 port[7]
define a8 port[8]
define a9 port[9]
define a10 port[10]
define a11 port[11]
define a12 port[12]
define a13 port[13]
define a14 port[14]
define a15 port[15]
define a16 port[16]

#top

if a1=on then print "taster1"
if a2=on then print "taster2"
if a3=on then print "taster3"
if a4=on then print "taster4"
if a5=on then print "taster5"
if a6=on then print "taster6"
if a7=on then print "taster7"
if a8=on then print "taster8"
if a9=on then print "taster9"
if a10=on then print "taster10"
if a11=on then print "taster11"
if a12=on then print "taster12"
if a13=on then print "taster13"
if a14=on then print "taster14"
if a15=on then print "taster15"
if a16=on then print "taster16"

pause 10

goto top

Manf
25.02.2004, 09:50
Welche Spannung liegt denn an den Ports mit dem Tastern, kann man das messen?
Manfred

25.02.2004, 16:48
nichts ist zwischen gnd und port und nichts von 5v zum port

ACU
25.02.2004, 17:31
Kann das an den PULL UP Widerständen liegen?
(M-Unit oder Normale Unit)?

Manf
25.02.2004, 18:05
Wenn die Taste gedrückt ist, dann liegen am Eingang wohl 0V, wenn die Taste, wie meistens, nach Mass angeschlossen ist.
Läßt man die Taste los, dann leigen meistens 5V oder high Pegel am Port.
Kann man das messen? oder ist das Problem grundsätzlicher Art? (Kein Meßgerät).
Manfred

ACU
25.02.2004, 19:04
naja kommt wie gesagt darauf an, ob du die M-Unit oder die Normale Unit benutzt. Weil die M-Unit standardmäßig keine PullUps dran hat.
Bei mir kommt bei einem Taster auch, wenn er nicht gedrückt wird eine 1 und wenn ich drücke -1.

Manf
25.02.2004, 19:16
An ACU:
Mein letzter Post war eine Nach-Frage an Michi, ob die Spannungen am Port meßbar sind und keine Aussage über das System.

Wir finden das sicher leicht wieder auseinander.
Die Aussage, daß die M-Unit selbst keine eingebauten Pull-Ups hat, ist in dem Zusammenhang sicher wichtig.

Manfred

michi
25.02.2004, 19:52
ich hab die m-unit und ich hab grad rausgefunden dass wen man den port mit dem pull up auf 0v zieht und den port über den taster auf 5v schaltet geht es
gehört es nicht anders rum?
den pull up zwischen port und 5v und den taster zwischen gnd und port?

Manf
25.02.2004, 20:06
An Michi:
in jedem Fall würde ich den Schalter nur von Port gegen Masse einsetzen, (nicht nur ich) da der Ausgangstransistor des Ports, wenn er als Ausgang aktiviert ist, von Port nach Masse schalten kann und dann keine Beschaltung bestehen sollte, die zu einer Überlastung des Transistors führen kann.
Die Definition im Programm heißt ja nur port=on, das ist dementsprechend so zu interpretiern, daß der Port auf high ist. Für den Betrieb mit dem Schalter sollte man eine besser entsprechende Definition setzen.
Manfred

michi
25.02.2004, 22:25
Und warum geht es bei mir dann nicht so

Schalter von Port gegen Masse
Pull up Port +5V

hat jemand eine idee kann etwas defekt sein?

michi
29.02.2004, 19:53
Ich hab auch gerade herausgefunden dass der TOG befehl auch nicht geht
Der sollte doch normalerweise von ein auf aus und von aus nach ein schalten oder???

Kann da was an der m unit defekt sein?

Matthias
29.02.2004, 19:58
Du kannst es doch so machen:

if a1=off then print "taster1"
...

Matthias

29.02.2004, 22:18
ja so geht es eh aber der tog befehl geht nicht.
kannst du mir vielleicht sagen ob an der unit etwas kaputt ist?

Manf
01.03.2004, 06:43
(Wenn der Controller überhaupt geht, dann sollten auch alle Befehle gehen und somit auch der Toggle Befehl. Daß ein einzelner Ausgang kaputt gehen kann, das wäre schon eher mal möglich. )
So wie ich das verstanden habe, wird etwas an den Port ausgegeben und wieder eingelesen wobei sich nicht das erwartete Ergebnis einstellt.

Zur Überprüfung kann man grundsätzlich den Vorgang unterteilen und nach der Ausgabe direkt messen, ob sich am Ausgang etwas ändert.

Ist es möglich die Spannung am Ausagng beispielsweise mit einem Voltmeter zu messen. Andere Möglichkeiten sind natürlich ein Oszilloskop oder eine LED mit Vorwiderstand, (Kopfhörer über kleinen Kondensator)?

Manfred

Matthias
01.03.2004, 13:12
Probier mal das Programm aus:


define x port[1]

#loop
tog x
pause 20
tog x
pause 20
goto loop

Matthias

michi
01.03.2004, 15:40
so geht der tog befehl

und so geht er auch

define Led1 port[5]
define Led2 port[2]
define Led3 port[6]
define Led4 port[7]
define Led5 port[8]
define Led6 port[1]

led1=on
led2=on
led3=on
led4=on
led5=on
led6=on

#loop
tog led1
tog led2
tog led3
tog led4
tog led5
tog led6
pause 20
goto loop
und warum geht er so nicht ?????????????????????????????????? :?: :?:

define Led1 port[5]
define Led2 port[2]
define Led3 port[6]
define Led4 port[7]
define Led5 port[8]
define Led6 port[1]

#loop
tog led1
tog led2
tog led3
tog led4
tog led5
tog led6
pause 20
goto loop
irgendwas verstehe ich da nicht ganz kann mir jemand erklären warum das ohne led1=on nicht blinkt aber mit und warum es mit dem quelltext von matthias geht

michi
01.03.2004, 15:45
jetzt geht es mit dem quelltext von mathias auch nicht mehr

define x port[1]

#loop
tog x
pause 20
tog x
pause 20
goto loop

michi
01.03.2004, 15:45
jetzt geht es mit dem quelltext von mathias auch nicht mehr

define x port[1]

#loop
tog x
pause 20
tog x
pause 20
goto loop

Manf
01.03.2004, 15:47
Die Definition eines Ports als Ausgang erfolgt implizit, nämlich durch Ausgabe eines Wertes und muß zur Umwandlung in einen Eingang explizit zurückgenommen werden.
Der Tog Befehl übernimmt, wie sich zeigt, nicht das implizite Setzen als Ausgang.
Manfred

01.03.2004, 15:48
und was heißt das auf deutsch

michi
01.03.2004, 15:55
gibt es dann noch eine möglichkeit den port als ausgang zu setzen ohne ihn einzuschalten?

01.03.2004, 16:11
Man sollte meinen, der Port ist auch als Ausgang gesetzt, wenn du ihn ausschaltest. Wenn du einen Port auf OFF setzt, sollte der Tog-Befehl dann auch gehen.

01.03.2004, 16:19
danke so geht es und warum die taster nicht richtig gehen weiß keiner oder?
wenn nicht ist es auch egal mit off geht es auch?
Trotzdem danke :D :P

Manf
01.03.2004, 16:45
Die Definition eines Ports als Ausgang erfolgt implizit, nämlich durch Ausgabe eines Wertes und muß zur Umwandlung in einen Eingang explizit zurückgenommen werden.
Der Tog Befehl übernimmt, wie sich zeigt, nicht das implizite Setzen als Ausgang.


Ich wollte schnell noch sagen was das auf deutsch heißt:
mit
define x Port [1]
gibt man dem Port einen Namen, man sagt aber nicht, daß es ein Ausgang sein soll, also bleibt er wie nach reset ein Eingang.
Erst mit dem Befehl
x = on
gibt man dem Port einen Wert den er ausgeben soll. Daß es ein Ausgang sein soll hat man also nie direkt (explizit) gesagt, er versteht es aber trotzdem, denn wie soll er sonst on ausgeben, wenn er kein Ausagang ist, also wurde er (implizit) auf Ausgang gesetzt.
Soll er wieder zum Eingang werden, dann geht das mit
deact x
dieser Befehl muß explizit gegeben werden, denn ein lesen ist auch bei einem Ausgangsport möglich und der Befehl
a = x
schaltet den Port nicht auf Eingang zurück.
Toggle heißt, daß der Ausgang gelesen werden soll und das Gegenteil des Wertes anschließend geschrieben, man wird deshalb annehmen, daß Toggle auch, ohne es direkt zu sagen (also implizit) den Port zum Ausgang macht.
Macht er aber wohl nicht und da liegt dann das Problem, eine Ausnahme die man beim Programmieren beachten sollte. Das wußte ich vorher auch nicht.
Manfred

02.03.2004, 13:05
Mit
x=off
führt man auch eine Zuweisung auf x aus. So ist eine implizite Definition als Ausgang (ab dann geht der TOG-Befahl) auch möglich, ohne wirklich etwas auszugeben.