RS232 Asynchron ansteuern

Für allgemeine Fragen zur Programmierung, welche nicht! direkt mit Lazarus zu tun haben.
Antrepolit
Beiträge: 340
Registriert: Di 12. Sep 2006, 08:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

RS232 Asynchron ansteuern

Beitrag von Antrepolit »

Hallo Leute.

Hat jemand von euch eine Idee, wie man die RS232 asynchron mit Lazarus ansteuern kann?
Ich weiß, ich habe schon mal einen ähnlichen Thread erstellt, aber keine hilfreiche Antwort bekommen.

Das Problem: CreateFile(); funktioniert in Lazarus nicht. Ich habe bereits einige Versuche erprobt,
aber weder die Lösung mit der inpout32.dll noch die mit der io.dll (google) funktioniert. Auch Synaser kann mir nicht hefen, da asynchroner Zugriff benötigt wird...

Ich will einen Atmel ATMEGA 8 ansteuern, um mit ihm zu kommunizieren.

Jemand ne Idee?
Grüße, Antrepolit

care only if your os is really burning

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Du kannst auch problemlos asynchron mit ihm kommunizieren.
Oder du bastelst dir an asynchrone Klasse mit nem Thread und Synaser.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: RS232 Asynchron ansteuern

Beitrag von mschnell »

Antrepolit hat geschrieben:Auch Synaser kann mir nicht hefen, da asynchroner Zugriff benötigt wird...
RS-232 ist definitionsgemäß asynchron !?!?!?

SynaSer ist doch genau dafür da. Was geht denn mit Synaser nicht ?

-Michael

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Sone komische Antwort wenn man so rangeht gibts überhaupt keine Synchronen Schnittstellen. Schnittstellen haben keine Merkmale wie Synchron/Asynchron. Und genau aus diesem grund kann man auch keine Asynchone Kommunikation BRAUCHEN um auf eine Schnittstelle zuzugreifen.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Beitrag von mschnell »

Christian hat geschrieben:Sone komische Antwort wenn man so rangeht gibts überhaupt keine Synchronen Schnittstellen. Schnittstellen haben keine Merkmale wie Synchron/Asynchron. Und genau aus diesem grund kann man auch keine Asynchone Kommunikation BRAUCHEN um auf eine Schnittstelle zuzugreifen.
Siehe http://de.wikipedia.org/wiki/RS-232" onclick="window.open(this.href);return false;: "Die Datenübertragung erfolgt asynchron. ..."

Natürlich gibt es synchrone Schnittstellen, die heißen aber nicht RS-232 (sondern zum Beispiel HDLC, wenn sie elektrisch ähnliche Specs wie RS-232 haben).

-Michael

Antrepolit
Beiträge: 340
Registriert: Di 12. Sep 2006, 08:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Beitrag von Antrepolit »

Mein Problem ist, dass ein ATMEL MicroController keinen Synchron-Takt besitzt, anhand dessen die Übertragung der Daten synchronisiert wird. Das nennt sich auch UART.

Ich brauche nur ein dummes, kleines Beispiel, aber eines das funktioniert. AUf meiner Suche habe ich mit Google viele gefunden, aber keine, die zum Erfolg führen. Ich benutze WIndows, nicht Linux, sonst wäre es wohl einfacher, aber ich muss mit Windows arbeiten.

Ich habe eine Baudrate von 9600, 8 Datenbits und ein Stoppbit. Mittels Putty kann ich zum Beispiel problemlos mit dem Microcontroller kommunizieren, muss es aber für in Abschlussprojekt ein wenig perfektionieren, also kein Putty.

Nochmals: EIn Beispiel, mit dem ich die COM2 "abhören" kann unter Windows?
Grüße, Antrepolit

care only if your os is really burning

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Du verwechselst da grundsätzliche Sachen.
Synchron/Asynchron bei einer Software Schnittstelle bezeichnet das du darüber informiert wirst wenn neue Daten vorliegen oder nicht.

RS232 bzw UART bzw USART bei einigen AVR´s sind immer Asynchron genauso wie die RS232 an deinem PC.
RS232/UART hat niemals einen Takt.

Du kannst also jedes belibige Beispiel zu Synaser und co nehmen das du findest. Wenn du einb klein wenig Pascal verstehst und dir meien Unit anschaust dann weisst du auch wie du die benutzen kannst. Sorry einfacher gehts nun wirklich kaum mehr.
Ein Beispiel bringt dich im Moment zwar weiter aber deswegen hast dus dann nicht verstanden.
Trotzallem kannst du die beispiele von Synapse problemlos verwenden. Ich kommuniziere damit seit jahren auch mit AVR Controllern.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Beitrag von mschnell »

Antrepolit hat geschrieben:Das nennt sich auch UART.
UART = "Universal Asynchronous Receiver and Transmitter"

Also Asynchron fast sicher kompatibel zu RS232.

USART = "Universal Synchronous and Asynchronous Receiver and Transmitter"

Kann man per Software auf Asynchron und auf Synchron (z.B. HDLC) schalten.
Synchron kann eine Takt-Leitung haben, muss aber nicht. Bei entsprechend gebautem Protokoll (das genügend Bitwechsel in auf der Leitung produziert) kann (meist eine Hardware) den Takt "rückgewinnen".

-Michael

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Die avr USARt kann man aber nicht auf synchron umschalten, und Jay ist jetzt sicher vollends verwirrt.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Antrepolit
Beiträge: 340
Registriert: Di 12. Sep 2006, 08:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Kontaktdaten:

Beitrag von Antrepolit »

@MSchnell: Deine "Weisheiten" in Ehre, aber was bringt mir das? Ist es nicht nur überflüssig, dies zu erwähnen?

Weißt du, was ein ATMEGA8 ist? Ich habe UART, und das will ich nutzen. Zitate von WIkipedia
finde ich noch gerade so selbst, trotzdem danke. ;-) Meine Hardware muss
keinen Takt rückgewinnen; Der Atmega sendet bereits. Ich will nur die RS232 abhören. Ich will quasi
"Createfile(handle,"com2")" machen. Gibt es einen Lazarus-Kompatiblen Ersatz für das CreateFile?

Vermutlich nicht, sonst hätte Christian nen Wink in die richtige Richtung gegeben.
Falls jemand einen Weg findet: hier ist der Thread. Createfile oder nicht Creatfile. Das ist hier die Frage.

Wer weitere Zitate in Wikipedia findet, darf sie behalten.
Grüße, Antrepolit

care only if your os is really burning

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Du kannst unter Windows natürlich auch CreateFile verwenden ich versteh nur nicht was daran so schwirig ist sich mal die Synapse Doku anzusehn und zumindest zu versuchen selbst ne Lösung zu finden wenn du ein Pascal Tuturial durchgearbeitet hast wie ichs dir empfohlen hab und mal in die Synapse Hilfe geschaut hast und nen IQ > 45 hast sollte das kein Problem darstellen. Sobald ich auch nur nen Ansatz von Programmierung seh werd ich dir auch weiterhelfen, aber ohne den Willen selbst was zu erreichen hab ich da kein Bock drauf. Wir haben hier schon n paar leute die "offentlich Programmieren" und in den Delphi Foren is das gang und gebe aber ich find das zum kotzen. Wenn jemand was programmieren will soll ERs auch tun und nicht andere für sich arbeiten lassen und hinterher erzählen "schaut mein Werk"
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

_Bernd
Beiträge: 145
Registriert: Di 13. Feb 2007, 11:16

Beitrag von _Bernd »

Christian hat geschrieben:Die avr USARt kann man aber nicht auf synchron umschalten, und Jay ist jetzt sicher vollends verwirrt.
Doch, doch, die USARTs der (Mega) AVRs kann man synchron betreiben. Bei einigen Derivaten kann man den USART zusätzlich noch im Master SPI Mode nutzen. Man hat dann also noch einen zweiten SPI Bus. Du meintest vielleicht die UARTs der alten AT90xx AVRs? Die ließen sich tatsächlich nicht synchron betreiben.

Gruß, Bernd.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

OK, hast recht mir ist XCK noch nie aufgefallen.
Hat mit dem Thema trotsdem nix zu tun da er ja mit dem PC Kommunizieren will und man die PC UART nicht Synchron betreiben kann oder gibts da tatsächlich ne Möglichkeit und ne Statusleitung wird zum Clock ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

_Bernd
Beiträge: 145
Registriert: Di 13. Feb 2007, 11:16

Beitrag von _Bernd »

Nein, die PC UARTs basieren normalerweise auf dem Steinzeit 8250 und die lassen sich nicht synchron betreiben.

Gruß, Bernd.

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Beitrag von mschnell »

Antrepolit hat geschrieben: Ich will nur ...
Es ist wenig erfolgversprechend, wenn man etwas will, aber nicht genau weis was es ist. Dann ist der Weg dahin meist schwer zu finden.

-Michael

Antworten