Hallo Leute.
Ich hab hier ein "interessantes" Problem in Verbindung mit
Python(PySerial) und Atmel Studio 6.2.
Das Bild zeigt den Aufbau.
mC: Atmel SAM3X8E (Arduino Due Board)
USB-Seriellwandler: ATmega16U2 (auf dem Arduino Board verbaut)
IDE: Atmel Studio 6.2
Programmer/Debugger: Atmel ICE
OS: Win7 - 64bit
Python: 3.4.2
PySerial: 2.7
Das Arduino Board ist ueber den "Arduino Due Programming Port" an den PC
(COM2) angeschlossen, zur Spannungsversorgung und zum Datenaustausch.
Gleichzeitig ist das Board ueber JTAG mit dem Atmel ICE verbunden, zum
programmieren und debuggen.
Wenn ich jetzt einen Debugvorgang starte (F5/der gruene Pfeil in der
IDE), und jetzt mit PySerial den Port COM2 oeffne (das Oeffnen reicht,
es muessen nicht mal Daten gesendet werden!), um Daten an den Controller
zu schicken, "stuerzt" der Atmel Studio Debugger ab.
Der Absturz laesst sich so beschreiben:
Der Debugvorgang laeuft, das heisst ich kann auf Pause druecken
(Ctrl+F5/das Pausezeichen in der IDE) und... es passiert nichts. Das
Pausezeichen wird ausgegraut, der gruene Pfeil bleibt ausgegraut,
und es passiert nichts weiter, Breakpoints werden ebefalls nicht
angesprungen. Das Programm auf demm Controller wird nicht angehalten.
Ich kann nur noch auf Stop Debugging (Ctrl+Ahift+F5) druecken. Tue ich
das, so braucht es mehrere Sekunden (>=10 sek.) bis die IDE wieder
benutzbar ist, was auch nicht normal ist.
Das die Breakpoints und das Programm auf dem Controller einwandfrei
funktionieren kann ich ueber ein Terminalprogramm (hTerm) feststellen.
Ebenso kann ich den COM-Port auch problemlos mit einem C/C++-Programm
(http://msdn.microsoft.com/en-us/library/ff802693.aspx) oeffnen, ohne
das Atmel Studio da ein Problem bekommt. Benutze ich hTerm/das
C/C++-Programm funktionieren die Breakpoints, ich kann Pause und Weiter
klicken, alles so, wie es sein soll.
Lediglich das "Zusammenspiel" von PySerial und Atmel Studio scheint da
irgendwie nicht so ganz einwandfrei zu funktionieren.
Pythoncode fuer die Serielleschnittstelle:
1 | import serial
|
2 | ser = serial.Serial( port='COM2', baudrate=115200, \
|
3 | bytesize=serial.EIGHTBITS, parity=serial.PARITY_NONE, \
|
4 | stopbits=serial.STOPBITS_ONE)
|
5 |
|
6 | #ser.flush()
|
7 | #ser.write(b'Hier beliebigen String einfuegen...')
|
8 | ser.close()
|
Nicht falsch verstehen: Die serielle Verbindung mit PySerial
funktioniert, ich kann Daten senden und empfangen, lediglich Atmel
Studio spinnt.
Habt Ihr da vielleicht eine Idee, wie man da naeher rausbekommen
koennte, was da wo klemmt? :-/
Gruesse