PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Digitalports schalten



narayan
08.03.2004, 07:11
guten morgen!

ist es möglich 8 digitalports mit einem einzigen befehl, ein bzw. auszuschalten? ich würd mir zum beispiel vorstellen die ersten 8 ports
als byteport zu definieren und diese dann mit befehlen wie
Bport1=11111111 (alle ON) oder
Bport1=00000000 (alle OFF) zu steuern.
ist das so in der art wie bei der ansteuerung der LCD-anzeige?

GREETZ roland

thille
08.03.2004, 07:29
Ja kann man, aber die Zuweisung der Bits erfolgt anders als Du das dargestellt hast.

Byteport=on
Byteport=off

Gruß

Torsten

narayan
08.03.2004, 07:34
hola!
danke für die schnelle antwort.
wenn ich nun aber nur bestimmte ports setzen will z.b. 01101001 oder so,
funzt das dann mit nem byteport überhaupt?

GREETZ
roland

thille
08.03.2004, 08:13
Ja, das geht natürlich auch:

Define bport Byteport[1]

bport=&B 01010000

Es gibt nur zwei Byteports (1oder 2), die entweder die ersten oder die zweiten acht Ports belegen. Mann kann auch noch dazu einzelne Ports definieren, die innerhlab eines Byteports liegen, und diese ganz normal betreiben.

Gruß

Torsten

narayan
08.03.2004, 09:24
vielen dank und schönen tag noch!
GREETZ

roland

hoer173
10.03.2004, 17:55
mmmh sagmal für ne schrittmotor steuerung brauch ich für 2 motoren 4 ports..

wie werden die denn dann bitte angesteuert wenn ich nur 2byteports hab??????

oder geht das dann anders das ich motoren steuern kann?

brauch ja high und low.. und meiner meinung nach ist das dann ja lachs oder hat das was mit byteport zu tun bei einer schrittmotor steuerung wenn ich bestimmte umdrehungen machen will z.b. 4 volle umdrehungen und dann wieder 2 zurück?

danke

thille
10.03.2004, 18:01
2 Byteports sind 16 BITPorts, für die motorsteuerung braucht man nur Bitports.

Gruß

Torsten

hoer173
10.03.2004, 18:06
das heißt jetzt aber nicht das ich nur 2 ports dafür hab oder?

bei mir ist das jetz so angekommen:

2 ports kann man als BYTEPORTS deffinieren
16 ports sind 16 BITPORTS

right?

hoer173
10.03.2004, 18:10
ps: wozu brauch man den byteports? *neugier pur*

Manf
10.03.2004, 20:11
Man kann mehrere bits einzeln nacheinander ansteuern, dabei erhält man zwischendurch Zustände (am Port) die man einzeln auf ihre Brauchbarkeit und Ungefährlichkeit überprüfen muß. Wenn man den ganzen Byteport auf einmal setzt, dann erscheint er auch gleichzeitig (innerhalb 100ns) am Port ohne ungeprüfte Zwischenzustände.
Manfred

hoer173
10.03.2004, 21:21
2 ports kann man als BYTEPORTS deffinieren
16 ports sind 16 BITPORTS

right?

recycle
10.03.2004, 23:10
2 ports kann man als BYTEPORTS deffinieren
16 ports sind 16 BITPORTS

right?


nee, false. Du kannst doch auch nicht 2 Flaschen Bit als zwei Kästen Bit definieren ;-)

1Byte = 8 Bit
2Byte = 16 Bit

1Byteport besteht aus 8 bitports
2Byteports bestehen aus 2 * 8 = 16 Bitports

Welche Bitports zu welchem Byteport gehören ist hardewareseitig vorgegeben.

Byteport C besteht aus Bitports C0, C1, C2, C3, C4, C5, C6, und C7
Byteport D besteht aus Bitports D0, D1, D2, D3, D4, D5, D6, und D7

Dezimal 0 = binär 0, Dezimal 255 = binär 11111111

Wenn du Byteport C auf 0 setzt, setzt du C0 bis C7 in einem Schritt alle auf 0

Wenn du Byteport C auf 255 setzt, setzt du C0 bis C7 in einem Schritt alle auf 1

Du kannst aber auch alle Bitports einzeln schalten indem du z.B. C5=1 oder C2=0 setzt.

Bei Schrittmotoren brauchst du 4 BitPorts pro Motor = 8Bitports für 2 Motoren.

Wenn du dafür 8Bitports von demselben Byteport nimmst, kannst du mit einem einzigen Befehl einen Schritt auf beide Motoren geben, anstatt 8 Befehle für jeden Port einzeln zu tippen und ausführen zu lassen.

hoer173
10.03.2004, 23:15
nenene!

ich kann über mein lpt über 2 data leitungen einen schrittmotor mit dazugehörigem IC vor,zurück,stop jeweils schalten.. dafür aber dann nur fullstep die ich in ner übersetzung auf extrem kräftige virtel schritte umgesetzt hab.

vondaher reichen 2 data leitungen die anderen beiden werden einfach invertiert und das IC gibt dann jeder spule das signal richtig.. kein plan wie aber es funktioniert.. bei den invertierten eingängen muss noch ein vorwiderstand rein und ab gehts 12volt als supply und du kannst deine runden drehn..

11.03.2004, 01:33
vondaher reichen 2 data leitungen die anderen beiden werden einfach invertiert und das IC gibt dann jeder spule das signal


Ich kann bei meinem Auto auch zwei Gänge ausbauen und es fährt trotzdem noch ;-)

Dass du du durch Einsatz von Invertern einen Port pro Schrittmotor sparen kannst ist völlig richtig.
Damit hast du dann aber etwas weniger Funktionalität.
Ein Inverter heisst Inverter weil am Ausgang immer das invertierte Eingangssignal anliegt.
Wenn du beim Schrittmotor auf eine Seite der Wicklung eine 1 gibst, gibt der Inverter also automatisch eine 0 auf das andere Ende und umgekehrt.

Damit kannst du den Schrittmotor dann zwar betreiben, aber du kannst ihn so nicht spannungsfrei schalten. Das heisst der Motor braucht so immer Strom, auch wenn er stundenlang steht.
Bei manchen Anwendungen ist das egal, bei anderen sogar praktisch, bei wieder anderen stört es aber, weil dann z.B. die Akkus ewig leer sind.
Ausserdem kann man, wenn ich mich nicht ganz täusche, mit Invertern keine Halbschritte fahren, was aber je nach Anwendungen auch oft egal ist.

Davon mal ganz abgesehen wollte ich nur deine Frage beantworten und die war nicht wieviele Ports man mindestens für einen Schrittmotor braucht, sondern wie der Zusammenhang zwischen Bitports und Byteports ist.

11.03.2004, 15:09
und genau das will ich wenn der motor unter strom steht ist es schwerer für ien kleins gewicht z.b. wieder zurück zu fallen.. der motor hält es das ist mein ziel für den greifer und das senkenund heben der cam.