Seite 1 von 1

Serielle Schnittstelle und sertest (- Gelöst - )

Verfasst: Do 30. Jul 2009, 23:52
von Rainer
Hallo Leute,

hat einer von euch schon einmal "sertest.bin" ausprobiert ? Läuft das bei irgend jemanden ?

Ich habe jetzt 5 Terminalprogramme ausprobiert und kriege immer nur "Müll" angezeigt.
Irgendwas mache ich falsch, finde den Fehler aber nicht.
Laut Quelltext ist die Baudrate 9600 (ich habe aber auch alles bis 115k ausprobiert).
Ein Lauf von sertest bringt mir folgende Ausgabe:

Bild

Meine Hardware müsste eigentlich in Ordnung sein, da ich ja ohne Probleme flashen kann.
Angeschlossen habe ich einen USB zu Serial-Adapter (mit dem flashe ich auch), die Jumper sind auf Regnatix eingestellt.

Wenn es bei euch geht, mit welchen Einstellungen und mit welchem Programm? Ich arbeite zwar unter Windows, habe aber auch eine Linux-Distri auf VMWare. Kann also auch Linux-Terminalprogs testen.
Wäre nett wenn ihr das mal testen könntet.

Danke Rainer

Re: Serielle Schnittstelle und sertest

Verfasst: Fr 31. Jul 2009, 07:46
von drohne235
Bei mir geht es grad auch nicht :) muß ich heut abend mal schauen. Hab es per USB-Adapter und mit einem anderen Kabel direkt an der seriellen versucht. Den DIP hast du auf Bellatrix stehen? Ansonsten könnte man in dem Testprogramm mal die Parallax-Schnittstelle einbinden. Dafür gibt es auch ein Democode (Parallax Serial Demo Terminal).

Re: Serielle Schnittstelle und sertest

Verfasst: Fr 31. Jul 2009, 16:05
von scotty
Bei mir kommt bei allen möglichen Baud-Raten auch nur Murks an (Linux, seriell direkt).
drohne235 hat geschrieben: ...
Den DIP hast du auf Bellatrix stehen?
...
sertest läuft doch auf Regnatix (von SD-Card), oder?
drohne235 hat geschrieben: ...
Ansonsten könnte man in dem Testprogramm mal die Parallax-Schnittstelle einbinden
...
Ich habe mal mit "FullDuplexSerial.spin" von Parallax rumgespielt, funktioniert gut.

Ich kann den Quelltext von sertest in keinem der Download-Archive finden. Wo versteckt der sich denn?

Re: Serielle Schnittstelle und sertest

Verfasst: Fr 31. Jul 2009, 18:05
von Rainer
Vielen Dank für die Hilfe.

Ich habe jetzt in "sertest" das Objekt "FullDuplexSerial256" mit "FullDuplexSerial" getauscht. Hat schon ein bischen mehr angezeigt, aber nie den ganzen Text.

Habe dann diesen Fehler gefunden. Der String kann nicht komplett übergeben werden, da sofort danach der Befehl "ser.stop" kommt.
Mit einem Warten auf eine Taste hat sich das erledigt. (siehe Unten).

Was ich aber immer noch nicht im Griff habe --> Ich kann keine größeren Werte als 16 in "rx_buffer[n]" und "tx_buffer[n]" benutzen. Dann kriege ich sofort wieder Müll angezeigt.
Also 32, 64, 128, 256 und 512 gehen nicht.
Ok, für meine Zwecke reicht das jetzt erstmal. Vielleicht schaue ich mir das später noch mal an.

Code: Alles auswählen

PUB main2 | j
 ios.start

' code für test im ram, sollte bei bin-datei auskommentiert werden
' ios.startram

  ios.print(@msg0)                                      ' version anzeigen
  ser.start(serRecv,serXmit,0,baud)                     ' schnittstelle initialisieren
  ser.str(@msg0)
'******************************************************************
  repeat
    j := ios.key
  until j <> 0
'******************************************************************
  ser.stop
  ios.stop                                              ' anwendung beenden
Als Anhang die neuen sertest.bin + sertest.spin

Gruß.
Rainer

Re: Serielle Schnittstelle und sertest

Verfasst: Fr 31. Jul 2009, 18:57
von drohne235
Genau so ist das. Sertest ist aus versehen auf der SD-Card gelandet, war nur so ein Dreizeiler den ich nicht weiter verfolgt habe.

Hier ein Code der den Zeichensatz auf dem Bildschirm und über die Schnittstelle ausgiebt.

Code: Alles auswählen

OBJ
        ios     : "ios"
        pst     : "Parallax Serial Terminal"

CON

_CLKMODE     = XTAL1 + PLL16X
_XINFREQ     = 5_000_000

CON

   serXmit   = 30                     ' Serial Transmit
   serRecv   = 31                     ' Serial Receive
   baud      = 115_200                ' Baud Rate

VAR


PUB main | i

  ios.start

' code für test im ram, sollte bei bin-datei auskommentiert werden
  ios.startram

  ios.print(@msg0)                                      ' version anzeigen

  pst.start(baud)                                       ' schnittstelle initialisieren

  repeat
    repeat i from 20 to 255
      ios.printchar(i)
      pst.char(i)
      waitcnt(cnt + 5_000_000)
     

DAT

msg0          byte      13,"sertest - 12-03-2009-kr",13,0
Der neuen Version des Propeller Tools liegt auch ein passendes kleines Terminalprogramm bei (PST - Parallax Seriell Terminal) - das geht ganz gut zum testen

Re: Serielle Schnittstelle und sertest

Verfasst: Fr 31. Jul 2009, 19:02
von scotty
Rainer hat geschrieben: ...
Ich kann keine größeren Werte als 16 in "rx_buffer[n]" und "tx_buffer[n]" benutzen.
...
aus "FullDuplexSerial.spin":

Code: Alles auswählen

rx_tail := (rx_tail + 1) & $F
Die Maskierung mit $F passiert an mehreren Stellen im Code.

Re: Serielle Schnittstelle und sertest

Verfasst: Fr 31. Jul 2009, 19:15
von Rainer
Danke ihr beiden.

Jetzt ist soweit alles klar :)

Gruß.
Rainer

Re: Serielle Schnittstelle und sertest (- Gelöst - )

Verfasst: Fr 31. Jul 2009, 19:32
von drohne235
Ich hab bei der Gelegenheit gleich noch xload getestet - das kann man als einfachen Democode für das alte xmodem-Dateiübertragungsprotokoll verwenden. Startet man xload wartet das Programm auf die Initialisierung einer Dateiübertragung. Ich habe es mit dem Hyperterminal von XP getestet - einfach bei Dateiübertragung das X-Modem und die zu übertragende Datei auswählen und auf senden klicken. Xload empfängt die Datei und speichert sie einfach in der Datei xfile.bin. Das Demo ist fest auf 9600/8/n/1 + Keine Flußkontrolle eingestellt. Funktioniert.

Wie er die Datei so lädt und die Blöcke hochzählt mit dem Heartbeatsound erinnert stark an die alten Tape-Routinen bei den KC-Computern... :)