Problem mit Bascom Simulator und externer Terminalsoftware

reefer

Neues Mitglied
21. Juni 2009
2
0
0
Sprachen
Hallo,

Ich habe diese Frage schon vor Monaten im Roboternetz-, mikrocontroller.net-, dem MCS Forum und dem Support gestellt, dabei ist aber bis jetzt noch nichts herausgekommen, also versuche ich es hier einmal...

Ich möchte eine serielle Kommunikation von einem PC und µC simulieren, um das µC-Programm angenehm debuggen zu können.

Dazu verwende ich
* Null modem: com0com http://sourceforge.net/projects/com0com/
* Terminal: Docklight V1.6 http://www.fuh-edv.de/docklight/index.htm
unter WinXP SP3 sowie Vista SP1 mit Bascom 1.11.9.2 - 1.11.9.4 .

Das funktioniert in Verbindung mit dem PC-Programm (VB.net) wunderbar.

Im Bascom Simulator ist als Com-Port com0com eingestellt und die Checkbox "Terminal" ist aktiviert.

Ich habe hier ein kleines Testprogramm, das etwa den Ablauf wiedergibt:
Code:
Code:
$regfile = "m8def.dat"
$crystal = 16000000
$baud = 115200

Declare Function L0_serial_process() As Byte

Dim L0_serial_bytes_waiting As Byte
Dim L0_serial_tempbyte As Byte
Dim L0_serial_received As Byte

Dim Tmp_counter As Word

Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , _
Databits = 8 , Clockpol = 0
Config Serialin = Buffered , Size = 10 , Bytematch = All

Enable Interrupts

Do
   L0_serial_received = L0_serial_process()

   Incr Tmp_counter
   If Tmp_counter = 1000 Then
      Tmp_counter = 0
      Print "b";
   End If
Loop
End

Function L0_serial_process() As Byte
   If L0_serial_bytes_waiting > 0 Then                      ' byte(s) received
      Inputbin L0_serial_tempbyte
      Decr L0_serial_bytes_waiting
      Printbin L0_serial_tempbyte
   End If
End Function

Serial0bytereceived:
   Incr L0_serial_bytes_waiting                             ' increment number of bytes waiting
Return

Das Programm sendet periodisch ein "b", welches ich auch im Terminal empfange und empfangene Zeichen werden wieder zurückgesendet.
Das funktioniert auch problemlos wenn ich es auf der Hardware teste.
Im Simulator aber wird nichts was vom Terminal gesendet wurde empfangen, vom Simulator gesendete Daten kommen allerdings an.

Mache ich hier irgendwas falsch beim Simulator, ist das ein Bug oder ein Feature?

Es wundert mich aber auch ein wenig, dass es scheinbar nur sehr wenige interessiert, eine serielle Kommunikation zwecks einfacherem Debbuging auch simulieren zu können statt ratlos vor dem Controller zu sitzen und zu versuchen sich in ihn hineinzuversetzen?

mfg
 
Hallo reefer,

Es wundert mich aber auch ein wenig, dass es scheinbar nur sehr wenige interessiert, eine serielle Kommunikation zwecks einfacherem Debbuging auch simulieren zu können statt ratlos vor dem Controller zu sitzen und zu versuchen sich in ihn hineinzuversetzen?
was soll ich dazu sagen :rolleyes: Ich benutze den Simulator eigentlich nie :D
Wenn es Probleme gibt, verwende ich entweder ein Oszilloskop oder ich arbeite
das Programm etwas um, damit ich auf angeschlossenen LEDs, nem LCD oder
dem USART Debug-Infos aus der Schaltung angezeigt bekomme. zB Registerwerte
oder andere Sachen.

Im Simulator kann man schlecht Timing-Probleme, Fehler in der Hardware
oder überhaupt die Hardware um den Prozessor nachstellen. Aus dem Grund
benutze ich den Simulator auch nicht.

Wenn bei einem kleinen Prozessor, bei dem keine Pins für ein LCD mehr frei
sind, Probleme auftauchen, dann verwende ich erst mal für das debuggen
einen etwas größeren bei dem noch Pins vorhanden sind. Wenn das nicht
geht, dann spiele ich den Programmteil auf dem Papier (ausgedrucktes
Listing) mit den Eingaben, Ausgaben und Registerwerten durch. Da habe ich
mehr Möglichkeiten als ein Debugger ;) Außerdem vergißt man den Fehler
danach bestimmt nicht mehr :D

Ist jetzt evtl ne "blöde Angewohnheit" von mir und hängt wohl auch etwas
damit zusammen, daß ich mich mit dem Debugger noch nicht "richtig"
auseinandergesetzt habe :rolleyes: Aber mein erster Versuch bei einem
Programm war damals ziemlich ernüchternd. Und ich habe auch keine Lust
mit einer Software etwas zu simulieren, was nachher zwar im Simulator
läuft und dann auf der Hardware doch wieder Fehler zeigt. Das wäre dann
zweimal debuggen. Einmal für den Simulator und einmal für die Hardware :D

Gruß
Dino
 
Hallo,

ich habe heute eine Antwort von Mark Alberts erhalten, er bestätigte mir dass es sich um einen Bug handelt, der Simulator löst den Serial Receive Interrupt nicht aus. Das wird im nächsten Update gefixt.

Der Simulator ist aber wirklich sehr hilfreich, man kann direkt Variablenwerte einsehen, Einzelschritte ausführen, Takte zählen, u.v.m.
Diese Debugging Werkzeuge erleichtern einem das Leben ungemein :)

mfg
 
Hallo,

ich habe heute eine Antwort von Mark Alberts erhalten, er bestätigte mir dass es sich um einen Bug handelt, der Simulator löst den Serial Receive Interrupt nicht aus. Das wird im nächsten Update gefixt.
also hast du dein Programm jetzt quasi doch 2mal debuggt. Naja das eine mal
hast du den Debugger debuggt :D :rolleyes:

Der Simulator ist aber wirklich sehr hilfreich, man kann direkt Variablenwerte einsehen, Einzelschritte ausführen, Takte zählen, u.v.m.
Diese Debugging Werkzeuge erleichtern einem das Leben ungemein :)
Muß ich mich wohl doch mal in ner Mußestunde mal dransetzen und Zeit
investieren ;) mal sehen ... irgendwann mal :rolleyes:

Aber wenigstens ist der Fehler jetzt gefunden :) Besten dank für die Info.
Kann evtl der eine oder andere gebrauchen ...

Gruß
Dino
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)