eigentlich beschränkt sich mein "Debug" darauf, über die serielle Schnittstelle Informationen zu einem Terminalprogramm zu senden. Oder wenn ein Display dran hängt, darauf Infos auszugeben. Ganz rudimentär manchmal auch eine LED.
Jetzt bastel ich aktuell an einer Geschichte, wo ich die serielle Schnittstelle für was anderes brauche.
Umstecken für Programmdownload und Debug umgehe ich damit, dass ich auf einem Mega entwickle, der zwei (eigentlich 4 aber ich brauch nur 2) UART-Schnittstellen hat.
Aber dafür ist der Mega Overkill. Würde das eigentlich mit einem Nano oder Micro machen wollen.
Den Download kann ich ja auch über meinen USPasp machen, aber welche Möglichkeiten hätte ich dann, meine Software zu "debuggen"? Software-Serial würde ich jetzt nicht als Lösung sehen.
Den Begriff "Debug" nicht so wörtlich nehmen. Ich will halt irgendwie Infos aus dem Controller rausbekommen. Ich hab da auch schon öfters was von JTAG gelesen, aber das habe ich bis heute noch nicht kapiert. Und braucht m.E zusätzliche Hardware und geht nicht mit jedem AVR.
Kommt immer darauf an, was du ohnehin in der Schaltung hast. Wenn ein LCD Punktmatrixdisplay verwendet wird. Dann kann es sinnvoll sein, in der Entwicklungsphase statt dem 2x 16 ein 4x 20 zu nehmen und in der Lib nur die Werte auf das große Display anzupassen und sich dann noch verschiedene Rohwerte von den Analogeingängen oder Zwischenwerte aus den Formeln mit ausgeben zu lassen.
Ich hatte z.B. ein Projekt, wo ich ein 40x 4 Display eingesetzt habe und ein paar Schaltschwellen aus Analogwerten brauchte. Ich habe die Texte zu meinen Messwerten zunächst etwas eingekürzt und mir noch analoge Rohwerte mit anzeigen lassen. Auf Basis dieser Werte habe ich dann für if Anweisungen die Schwellwerte gesetzt. Als die dann passten, wurde dann erst auf "schön" getrimmt.
Den Codeblock für die Anzeige habe ich noch ein 2. Mal kopiert und 1x auskommentiert.
So kann ich ganz schnell umswichen, ob ich abgleichen will, oder normal anzeige.
Denkbar wäre auch bei einem I2C Display im Code noch ein 2. Display mit vorzusehen, was nur in der Entwicklungsphase angeschlossen ist.
Software-Serial wäre dann - zumindest nach meinen Vorstellungen - eine Alternative wenn man nur einen TxD Pin alleine (ohne Verschwendung eines weiteren Pin für das nicht genutzte RxD) definieren könnte.
Aber genau daß geht anscheinend nicht...
Oder kennt hier jemand eine Möglichkeit / Lib die genau das macht ?
Christian
PS.: JTAG ist ja beim Uno/Nano/Mini nicht möglich, aber geht das vielleicht beim Mega oder Due ???
elektron_:
Software-Serial wäre dann - zumindest nach meinen Vorstellungen - eine Alternative wenn man nur einen TxD Pin alleine (ohne Verschwendung eines weiteren Pin für das nicht genutzte RxD) definieren könnte.
Aber genau daß geht anscheinend nicht...
Ja, das "geht nicht", weil kein Fuß dran ist.
elektron_:
Oder kennt hier jemand eine Möglichkeit / Lib die genau das macht ?
Zum Beispiel die Libraries "SoftwareSerial" und "AltSoftSerial" machen das.
Wenn Du den RX oder den TX Pin nicht benötigst, übergibst Du als Pin-Parameter einfach "-1".
Den Codeblock für die Anzeige habe ich noch ein 2. Mal kopiert und 1x auskommentiert.
So kann ich ganz schnell umswichen, ob ich abgleichen will, oder normal anzeige...
Einfacher ginge sowas mit #define KONSTANTE und #ifdef
Zum Debuggen generell, ginge sowas via ISP und im debugWIRE Mode eines AVR Dragon ?
Unter Atmel Studio.
Hatte die Frage schon mal gestellt, ging aber unter....
Der Thread wird damit ein wenig OT - sorry @Serenifly: Wir reden glaube ich etwas aneinander vorbei ?
Ich trage mich mit den Gedanken einen AVR Dragon zu kaufen, da mein alter mk2Clone nur noch mit dem Atmel Studio 4 funktioniert.
Das Plugin Visual Micro läuft aber nicht mit dieser alten Version von AVR Studio.
Ich gehe derzeit den Umweg den HEX File mit der alten 4er Version zu flashen.
Ist etwas umständlich, deshalb will ich einen AVR Studio 6.2 kompatiblen ISP Programmer haben.
Der Preisunterschied zwischen den orginalen Atmel ISP Programmer und dem AVR Dragon ist gering.
Der AVR Dragon hätte Mehrwerte wie Debuging, HV Programmieren. Dafür hat er kein Gehäuse, und man muß evtl, noch Stiftleisten und einen Zif Sockel einlöten.
Meine Frage ging nun dahin ob Debugging mit DebugWire (ISP) funktioniert, viele Atmel haben ja keinen JTAG.
Ohne das Visual Micro Plugin, läuft das wohl.
Die Frage ist ob es in Verbindung mit Visual Micro funktioniert.
Wenn man Arduino Board Design verwendet, darf kein Kondensator auf der Reset Leitung sein. (logisch)
jurs:
Zum Beispiel die Libraries "SoftwareSerial" und "AltSoftSerial" machen das.
Wenn Du den RX oder den TX Pin nicht benötigst, übergibst Du als Pin-Parameter einfach "-1".
... das ist sehr interessant, danke
"AltSoftSerial" wird aber nicht gehen weil die ja fix auf Pin8 un Pin9 eingestellt ist (und eigentlich gar keine Pin Parameter übergeben werden) - oder übersehe ich was?
elektron_:
"AltSoftSerial" wird aber nicht gehen weil die ja fix auf Pin8 un Pin9 eingestellt ist (und eigentlich gar keine Pin Parameter übergeben werden) - oder übersehe ich was?
Stimmt, ohne die AltSoftSerial-Library zu ändern, kannst Du die Parameter zwar angeben, aber laut Kommentar im Quellcode dient dies nur zur Herstellung der Drop-In-Kompatibilität zur SoftwareSerial-Library und wird ansonsten komplett ignoriert:
// for drop-in compatibility with NewSoftSerial, rxPin & txPin ignored
AltSoftSerial(uint8_t rxPin, uint8_t txPin, bool inverse = false) { }
Um die Verwendung des TX-Pins aus der Library rauszubekommen, muß man also die Library erst so umschreiben, dass alle TX-Funktionen stillgelegt sind.