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
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
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!
@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 :)
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!
@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
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
@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
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
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
Eine eigene Frage?
Dieser Thread ist über 21 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.