Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

RS232-Kommunikation mit anderem Prozessor

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
tfv



Anmeldungsdatum: 06.01.2008
Beiträge: 16

BeitragVerfasst am: 06.03.2008, 01:07    Titel: RS232-Kommunikation mit anderem Prozessor Antworten mit Zitat

Ich möchte über eine RS232-Schnittstelle Daten mit einem anderen Prozessor (AT128Mega auf dem RN 128MegaFunk-Board, geht über serielle Funkverbindung) austauschen.

Dabei soll der externe kleine Prozessor viele Double-Werte an den PC senden, ein Wert ist dabei jeweils 8 Byte lang.

Die Kommunikation muss aufgrund der Menge synchronisiert werden, d.h. ich darf nicht zu viele Daten im Prozessor lossenden, sonst fliesst dort der RS232-Buffer (256 Byte) über, ich darf aber auch nicht zu langsam senden, weil ich das Warten auf einen hinreichend vollen Tastaturpuffer nicht hinbekomme.

Bevor ich mit get einen double-Wert abrufe, muss ich sicher sein, dass 8 Byte im Tastaturpuffer sind, dies kann ich mit EOF nicht detektieren, und LOF und LOC liefern beide jeweils 0, so lange EOF true ist.

Im Moment arbeite ich mit get #1,, (doublewert)
Ich könnte natürlich auch byteweise lesen, muss aber dann die Bytes wieder zu Doublewerten zusammenbauen.

Das File selbst ist mit

myErr = Open Com ("COM1:19200,N,8,1,BIN,RS,CD0,CS0,DS0,TB1024,RB1024" for Binary As #1)

geöffnet.

Was mir auch nicht ganz klar ist: Muss ich zwei verschiedene Channels für die Hin- und Rückübertragung öffnen, oder kommen sich die Daten in einem Channel nicht in die Quere?

Danke für alle Hinweise!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 06.03.2008, 09:19    Titel: Antworten mit Zitat

Im grunde sind es 2 Kannäle .. die RXD und die TXD Leitung. Hinzu kommen auf der RS232 noch steuerleitungen (sovern auf dem Board implementiert, was ich grad nicht weis, da ich das board nicht da hab)

Soweit ich weis, ist der UART-Puffer im TM nur 2Byte Gross, wird also über den Interrupt in das Interne SRAM gespeichert (kannst jamal nachschaun, im source, wenn ihn hast) ansonsten solltest es auf jeden fall syncronisieren (wenn du wiederum den Source hast und die Steuerleitungen vorhanden sind). Du könntest die CTS oder RI oder sonstige leitungen nutzen, um zu signalisieren, das Daten vorhanden sind.

Bei der Übertragung musst du auf jeden fall darauf achten, das du nicht zu viele Daten hinein schiebst. Das kann man jedoch kompensieren, indem man die Baud-Rate minimiert, so das (ne nach clock vom AT) genug zeit übrig bleibt für die Programmverarbeitung.

Double sind übrigens nicht 1 Byte Daten, sondern 4 Byte (Long mit Gleitkomma)
Siingle wären 2 Byte (Integer mit Gleitkomma)

Du hast im grunde mehrere Möglichkeiten, wie du die Daten übertragen kannst. Eine davon wäre sie erst mit MemCpy in ein LONG zu transvertieren, udn das selbe im AT mit memcpy wieder rückgäng zu machen.

Hier muss man jedoch darauf achten, das meine eine realyÜbretragungsstybillität nutzt, da sonst ASCII 0 übertragen wird, und bei unsyncronisierter Übertragung immer 0 im Puffer liegt, obwohl kein 0 gesendet wurde.

Volglich solltest du Funktionen nutzen, die im AVR auf jeden fall Interrupts für den UART nutzt. Da es im IBM PC sowas wie Interrupts im vergleich zu AVR's nicht gibt, musst du das über callbacks lösen, die automatisch feuern. Das kann man dann mit einem Interrupt-Call im AVR vergleichen.


Welche art von daten sind es, die du übertragen willst? Steuerdaten, messwerte, ?!?


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz