-
        

Ergebnis 1 bis 4 von 4

Thema: Problem mit Bascom Simulator und serieller Kommunikation

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    15.08.2004
    Ort
    Graz
    Beiträge
    342

    Problem mit Bascom Simulator und serieller Kommunikation

    Anzeige

    Hallo,

    Ich habe diese Frage schon vor Monaten hier, im englischen Forum und dem Support gestellt, dabei ist aber bis jetzt noch nichts herausgekommen, also versuche ich es noch 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:
    $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

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    46
    Beiträge
    765
    Ich debugge ohne Bascom - Simulator. Programm auf den Atmel und alle Ausgaben seriell zum PC. Jede Routine schickt ihre Kennung und aktuelle Variablen. Wenn der Platz nicht ausreicht, wird auf einem größeren Atmel getestet und nach dem Entfernen der Debuginfos erst auf den Kleineren geflasht. Ausgelesenen Code analysiere ich mittels AVR-Studio...
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    15.08.2004
    Ort
    Graz
    Beiträge
    342
    Ja, bleibt einem ja nichts anderes übrig. Da gehen mir halt die üblichen (sehr hilfreichen) Debbuging-Werkzeuge (Einzelschritt, Pause, Variablen direkt einsehen, Register, etc) ab. Und eine serielle Kommunikation über die serielle Schnittstelle zu debuggen hat etwas... spezielles.

    Und wenn diese Funktion laut Hilfe ansich im Simulator enthalten sein sollte, wäre es doch auch wünschenswert, wenn diese auch funktionieren würde.

    mfg

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    15.08.2004
    Ort
    Graz
    Beiträge
    342
    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.

    mfg

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •