Netzman
19.06.2009, 00:41
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:
$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
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:
$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