Hallo, ich habe ein fertiges Board zum "spielen" bekommen. Ich möchte daran ein Display mit HD44780 anschließen. leider werden außer JTAG und CAN keine Ports/Pins nach außen durchgeführt. Idee: JTAG abschalten per MCUCSR = (1<<JTD); MCUCSR = (1<<JTD); und dann die verfügbaren Pins als zum Anschluss des Displays nutzen (mit Portexpander 74HC595). Ich benötige aber JTAG auch zum Programmieren des Chips. ICh habe gelesen, das sich der Programmer (JTAGIce mkII in meinem Falle) trotz per Register abgeschaltetem JTAG noch verbinden kann. Ist dies Richtig oder schließe ich mich durch die obigen zwei Zeilen vom Board aus? Danke für eure Hilfe.
Es könnte sein, dass man per JTAG programmieren kann, wenn zwischen Reset und Deaktivierung des JTAG genug Zeit bleibt. So dass der Programmer die Initialisierung und somit die Deaktivierung aufhalten kann.
Vielen Dank für deine Antwort. Wie definiere ich denn diese Zeit, ein Delay einzubauen ist natürlich nicht erste Wahl. Laut einer Aussage hier im Forum muss der Programmer nSRST innerhalb von zwei Taktzyklen senden. Leider finde ich hierzu keine Quelle die dies belegt.
Hier nocheinmal das Zitat: To be able to use the JTAG interface, the JTAGEN Fuse must be programmed. The device is default shipped with the fuse programmed. In addition, the JTD bit in MCUCR must be cleared. Alternatively, if the JTD bit is set, the external reset can be forced low. Then, the JTD bit will be cleared after two chip clocks, and the JTAG pins are available for programming. This provides a means of using the JTAG pins as normal port pins in Running mode while still allowing In-System Programming via the JTAG interface. Note that this technique can not be used when for Boundary-scan or On-chip Debug. In these cases the dedicated for this purpose.
Tobias schrieb: > Note that this technique can not be used when > for Boundary-scan or On-chip Debug. On-chip debugging kann man trotzdem noch benutzen, außer dass die Pins dann natürlich nicht ihre IO-Port-Funktion erfüllen können. Das geht, indem man an die erste der Anweisungen, die das JTD-Bit setzen, einen Breakpoint setzt und dann im single step über beide diese Anweisungen geht. Dadurch ist die zeitliche Bedingung (muss zweimal innerhalb von 4 Takten gesetzt werden) nicht mehr erfüllt, und das Setzen des JTD wird ignoriert.
Danke, das klingt ja super. Das Display am JTAG soll während der Programmierung abnehmbar sein. das Display wird beim Programmieren vom JTAG getrennt und dann der JTAGIce dran. Danach ein Reset durchführen, JTD in MCUCSR auf 0 also JTAG wieder auf "enable" und Programmieren sowie durch setzen des Breakpoints auch Debuggen. Sollte in meinem Gedankengang etwas falsch sein bitte antworten, ansonsten Danke für die Hilfe!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.