Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 2-te Hardwaremaessig impl. Seriellle Schnittstelle (ESCI) Kategorie: Open-Micro/Open-Mini/Open-Midi/Open-Macro/Open-Maxi (von Joe - 11.11.2014 21:28)
Joe nutzt:  CC1-M-Unit V1.1, Open-Micro, Open-Macro
Hallo O_MACRO Nutzer,

in der Anlage habe ich ein kurzes DEMO-Programm angehaengt, um die 2-te Hardwaremaessig implementierte Seriellle Schnittstelle (ESCI) kennen zu lernen. Vielleicht hilft es dem einen oder anderen diese Schnittstelle besser u. schneller zu verstehen. Ich habe doch einige Zeit gebraucht, dabei ist dieses Programm entstanden.
Die Bedienungsanleitung OPEN-MAXI Version 1.1;Erstellt ab 6. Juni 2012; von Dietmar und Infos hier aus dem Forum hatten mir sehr geholfen voran zu kommen.

 Unterschied der beiden Schnittstellen
' Semiwire-Schnittstelle:
' bez. Baudrate: nur 9600 Baud verfuegbar, keine andere Baudrate moeglich
' bez. GET: kein Empfangsbuffer, deshalb holt GET direkt die Daten vom Eingang ab, u. das funktioniert auch bei 9600Baud recht gut, wie ich testen konnte
' ESCI- Schnittstelle:
' bez. Baudrate: 300, 600, 1200, 2400, 4800,9600,19200, 38400 einstellbar
' bez. GET: hat 8 Byte Empfangsbuffer, GET holt Daten vom Empfangsbuffer und nicht direkt vom Eingang ab

Meine Anwendung mit der O_Macro: FPV Modellflug mit Antennen tracking der Empfangsantenne der Bodenstation anhand der empfangenen GPS Daten vom Modell.

Mein vorhandener GPS Empfaenger hat 38400 Baudrate. Deshalb wollte ich im F-Modell ursprünglich die GPS Daten ueber die ESCI Schnittstelle der O_NMACRO einlesen, die erforderlichen Daten aus dem NMEA  $GPGGA Datenstrom selektieren und mit Datenrate z.B. 1200 Baud über die SemiWire -RS232 die für das tracking erforderlichen Daten per Audiomodem  zur Bodenstation senden.
Da das nicht möglich ist, beorge ich mir ein neues GPS Modul mit 9600 Baudrate RS232 Schnittstelle, lese diese über die Semiwire Schnittstelle ein und sende über die ESCI Schnittstelle die erforderlichen Daten  mit 1200 Baud an das Audio-Modem. In Der Bodenstation ist dann eine weitere O_MACRO.

MfG  Joe  Fenk
#####################
' RSDEMO001.BAS Demoprogramm Di.11.11.2014  Josef Fenk
' 210 Basic- Bytes, 0-Sys Bytes und 2 RAM Bytes belegt
' Demoprogramm, zum besseren Verstaendnis der Hardwaremaessig implementierten 2-RS232 Schnittstelle (ESCI)
' an RXD:Pin7/Port13 u. TXD:Pin8/Port14
' vorallem, wie das mit dem Empfangsbuffer funktioniert
'
' Auf dem P/E-Board kann provisorisch PORT[14] mit PORT[1] verbunden werden, oder wie
' bei mir hatte ich ueber PC_1 die Semiwire RS232 Schnittstelle angesprochen u. darueber auch das Programm geladen
' PC_2 hatte ich ueber ein separates MAX232_Interface verbunden  RXD:Pin7/Port13 u. TXD:Pin8/Port14 ; PC_2 auf gleiche Baudrate wie ESCI eingestellt
' Unterschied der beiden Schnittstellen
' Semiwire-Schnittstelle:
' bez. Baudrate: nur 9600 Baud verfuegbar, keine andere Baudrate moeglich
' bez. GET: kein Empfangsbuffer, deshalb holt GET direkt die Daten vom Eingang ab, u. das funktioniert auch bei 9600Baud recht gut
' ESCI- Schnittstelle:
' bez. Baudrate: 300, 600, 1200, 2400, 4800,9600,19200, 38400 verfuegbar
' bez. GET: hat 8 Byte Empfangsbuffer, GET holt Daten vom Empfangsbuffer und nicht direkt vom Eingang ab
'

' --- Betriebssystem konfigurieren ------------------------------------------
INCLUDE "OMAC.DEF"           'Include-Datei mit Definitionen vom April 2010

' --- Definitionen Variable fuer das Hauptprogramm
' ----Def. WORD Variable ------------------------------------------
' ----Def. Byte Variable ------------------------------------------
DEFINE DATEN    BYTE    ' Datenempfangs Variable
DEFINE Zaehl    BYTE
'***** Definition der Digitalen Ein- / Ausgabeports
DEFINE Taste    PORT[04]       'Warte-Taste

' Programmbeginn
 UseESCI=ON
 BAUD R9600     'moeglich sind 300, 600, 1200,2400,4800,9600,19200,38400 Baud
#Start
   Zaehl=0
   PRINT "RXD=";RXD 'RXD=-1 falls Daten im E-Buffer, ansonsten 0
   PRINT "EsEr=";EsciErr '=-1 falls Daten >8 = Groesse E_Buffer; ansonsten 0
   PRINT "EsPt=";Esciptr '=319
   Pause 100
   WHILE RXD    ' die schleife wird max 8 mal durchlaufen falls Dateneinabe >= 8-mal
       PRINT "vRXD=";RXD 'RXD=-1 solange Daten im E-buffer sind, ansonsten 0
       PRINT "vEsEr=";EsciErr '=-1 wenn E-Buffer voll ist, ansonsten 0
       PRINT "vEsPt=";Esciptr '=319
       GET Daten                ' hier werden die Daten aus den Empfangsbuffer geholt
       PRINT "nRXD=";RXD  '=-1 solange noch Daten in den 8 Empgangsbuffern liegen, ansonsten 0
       PRINT "nEsEr=";EsciErr  '= -1 wenn mit GET 1-tes Byte aus vollem E-Buffer geholt wurde = 0
       PRINT "nEsPt=";Esciptr '=319
       Zaehl=Zaehl+1
       PRINT "Zaehl=";Zaehl,"RX_Dat=";Daten
       
   WEND  
   PRINT "hier Daten eingeben" 'Taste "1", "2" etc. druecken usw. bis > 8 Eingaben
               ' diese werden im 8 Byte grossen Esci Empfangsbuffer abgespeichert
               ' die ersten 8 Eingaben sind im Empfangsspeicher, die Eingaben darueber gehen verloren
   #Weiter  
   IF TASTE <> OFF THEN GOTO Weiter
   Pause 100
   PRINT "nach vorne"
 GOTO Start
 END

 Antwort schreiben

Bisherige Antworten:

Re: 2-te Hardwaremaessig impl. Seriellle Schnittstelle (ESCI) (von Dietmar - 11.11.2014 22:25)
    Re: 2-te Hardwaremaessig impl. Seriellle Schnittstelle (ESCI) (von Joe - 15.11.2014 17:28)