Forum: Mikrocontroller und Digitale Elektronik Igor Plug + VB6 ???


von Lightning (Gast)


Lesenswert?

Hallo,

Wie muss ich die IgorPlug DLL verwenden damit was
beim AVR ankommt ???

Ich meine von der Initialisierung der Ports bis hin zum
senden eines Bytes ??

Habe heute schon den ganzen Tag rumprobiert aber es will
einfach nicht funktionieren. Grund --> ???

Falls mir jemand helfen kann/will wäre
ich sehr Dankbar.

Mfg. Lightning

von Lightning (Gast)


Angehängte Dateien:

Lesenswert?

Hier die HTML-Datei
die beschreiben soll wie man
die DLL ansteuert aber
ich werd daraus nicht schlau.

Kann mir bitte jemand Erläuterungen
dazu geben ???

Bin dankbar für alle Antworten.

~ Lightning

von Lightning (Gast)


Lesenswert?

Ach ja hab ich vergessen....

Ich arbeite mit VisualBasic 6.0

Naja hätte man ja auch aus dem Titel
lesen können :)

~ Lightning

von Frank Simon (Gast)


Angehängte Dateien:

Lesenswert?

Hallo, vielleicht hilft dir dieser Thread:
http://www.mikrocontroller.net/forum/read-1-141415.html#new
Ich hab das Projekt an den Nagel gehängt, weil die Übertragungsraten
einfach ernüchternd waren. Das VBA-Makro (Excel), mit dem ich das
untersucht habe, hängt jetzt hier an, muss eigentlich in VB6 genauso
gehen. Mein Prog. ist unkommentiert, zeigt aber wie man schreibt und
liest.
Viel Erfolg!

von Lightning (Gast)


Lesenswert?

@Simon Frank

Erstmal Danke vielen Dank das Makro von dir hat mir sehr viel
weitergeholfen.
Das is ja eigentlich garnicht so kompliziert wie ich
gedacht habe. :-)

Ach ja der Link zm anderen Thread is auch nich schlecht danke.

Jetzt aber nur noch eine kleine Frage:
Wenn man sich das html File oben ansieht un man klickt da z.B auf
DoSetDataPortDirection, stehen da immer 2 Funktionen z.B.:
----------------------------------------------------------------
function DoSetDataPortDirection(DirectionByte:byte):integer
----------
...und...
----------
function DoSetDataPortDirections(DirectionByteB, DirectionByteC,
DirectionByteD, UsedPorts:byte):integer
----------------------------------------------------------------

Was muss ich da genau tun/eingeben um z.B. wie in diesem Beispiel die
Port Direction Register (DDRx) per VB zu setzten ???

Die doppelbefehle gibts auch noch bei:
~ DoGetDataPortDirection
~ DoSetOutDataPort
~ DoGetOutDataPort
~ DoGetInDataPort

Ich weiss schon wie man das per VB aufruft und so, aber
ich habe keine Ahnung was man von dem zuerst senden muss und
was man bei den Variablen da eingeben muss.

Wie weiter oben schon erwähnt,
Bin dankbar für jede Antwort :)

von Lightning (Gast)


Lesenswert?

Nachtrag: "Ich muss nur wissen wie man das ganze verwenden muss" (Was
man da alles eingeben,... muss)

~ Lightning

von Lightning (Gast)


Lesenswert?

Ich muss nur wissen für was die erste und für was die zweite funktion
ist.
Und wie man die im programm einsetzt.

Mfg. Lightning

von Frank Simon (Gast)


Lesenswert?

Okay, die Funktionen schreiben bzw. lesen bestimmte Register im uC. Über
deren Bedeutung liest du am besten im AVR-Tutorial auf dieser Website.
Die Register heißen DDRx, PORTx und PINx (x=B,C,D) und sind für Ein-
und Ausgabe an den drei Ports des uC zuständig. In den Igor-Routinen
geht es darum, entweder für einen oder gleich für alle drei Ports das
jeweilige Register zu setzen/lesen. Viel Erfolg!

von Lightning (Gast)


Lesenswert?

@Frank Simon

Aho ok soweit sogut, aber bei der 1.Funktion steht z.B. nur
"(DirectionByte:byte):integer" bei welchem Port werden dann
hier die Directions gesetzt ???

Und für was ist bei der 2. Funktion "UsedPorts" ??

Mfg. Lightning

von Frank Simon (Gast)


Lesenswert?

Hallo,
so stehts da:
function DoSetDataPortDirection(DirectionByte:byte):integer;  stdcall;
function DoSetDataPortDirections(DirectionByteB, DirectionByteC,
DirectionByteD, UsedPorts:byte):integer; stdcall;

    Function sets transfer direction of microcontroller data pins
(D0-D7).
Parameters
   DirectionByte
        [in] Byte which bits represents direction of given
microcontroller pin. Bit value 1 represents output and bit value 0
represents input.
   UsedPorts
        [out] bit mask: which ports to set (combination of : 1=PortB,
2=PortC, 4=PortD).

UsedPorts wird bitweise kodiert. Das musst du so verstehen: Wenn du
DDRB,DDRC und DDRD in einem Rutsch beschreiben willst, musst du für
UsedPorts den Wert 7 übergeben, denn 7 = 1+2+4.
mfg Frank

von Lightning (Gast)


Lesenswert?

@Frank Simon

Achso funktioniert das mit den UsedPorts, aber
aus welchem grund gibt es denn dann 2 Funktionen ??

Nochmals danke für die Hilfe.

Mfg. Lightning

von Frank Simon (Gast)


Lesenswert?

Die eine ist, wenn du nur ein Portregister ändern willst, z.B. wenn du
sowieso nur Port B benutzt. Dann setzt zu einmal das DDRB-Register.
Wenn du dann z.B. deine Ampel-Leds von rot auf grün gehen lässt, gibst
du nur einen neuen Wert nach PORTB aus.
Er hat das so programmiert, weil beim USB eben nur alle soundsoviele
Millisekunden ein Paket geschickt wird. Mit den Mehrfachroutinen können
eben in der gleichen Zeit dreimal soviele Nutzdaten fließen.
mfg Frank

von Lightning (Gast)


Lesenswert?

@Frank Simon

Hab jetzt alles mal schnell getestet
und es funktioniert danke vielen dank für die hilfe und alles !!!

Mfg. Lightning

von Tobias R. (wildcard)


Angehängte Dateien:

Lesenswert?

Hi Leute,
habe den Hardware Teil hinter mir, möchte von einem AVR zu einem IGOR
Avr senden und dann via usb zum PC und die Daten anzeigen lassen.
Mit Igors Testprogramm funktioniert dies auch, dh. die Daten werden
korrekt empfangen und im "Terminal" Bereich runtergerasselt...

Wenn ich das nun aus einem C Programm selbst versuche schaffe ich es
nur die Baudrate richtig einzustellen, danach kommt aus dem Lesebuffer
kein einziges Zeichen zurück...

Sieht jemand mein Problem?

http://mandrill.fuxx0r.net/c++/paste:5298 <- hübsche Formatierung

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.