Forum: Compiler & IDEs Atmel JTAG deaktivieren in Software ohne Optimierung


von Felix (Gast)


Lesenswert?

Hallo zusammen,

Ich habe diverse Beiträge durchsucht aber nicht das richtige Gefunden.
Ich habe das Problem, dass ich die JTAG Schnittstelle im Program 
deaktivieren möchte. Ich nutze dazu C-Code Problem ist, dass innerhalb 
von 4 Taktzyklen 2x in das MCUCSR Register geschrieben werden muss.

Wenn ich das ohne Optimierung in C mache ist das allerdings zu langsam 
und dauer bei mir 5 Zyklen.

Weiss jmd wie ich in C das deaktivieren in Assembler machen kann?
Oder auch gerne andere Lösungen.

MfG Felix

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Nun, das einfachste wäre es natürlich, die Optimierung einzuschalten.
;-)
1
#include <avr/io.h>
2
3
void jtd(void)
4
{
5
  uint8_t tempreg;
6
7
  asm volatile("in %[tmp], %[mcucsr]" "\n\t"
8
        "ori %[tmp], %[mask]" "\n\t"
9
        "out %[mcucsr], %[mask]" "\n\t"
10
        "out %[mcucsr], %[mask]"
11
        :/* no outputs */
12
        : [tmp] "d" (tempreg), [mcucsr] "I" (_SFR_IO_ADDR(MCUCSR)),
13
          [mask] "M" (1 << JTD));
14
}

Sinnvoll wäre es natürlich noch, das Teil static inline zu
deklarieren, denn im Allgemeinen ruft man die Funktion ja nur
ein einziges Mal pro Applikation auf.

von Peter D. (peda)


Lesenswert?

Felix schrieb:
> Wenn ich das ohne Optimierung in C mache ist das allerdings zu langsam
> und dauer bei mir 5 Zyklen.

Wenn Dir das Programm mit Optimierung zu schnell ist, nimm einfach nen 
kleineren Quarz, dann kannst Du die Optimierung an lassen.


Peter

von Michael U. (amiga)


Lesenswert?

Hallo,

Peter Dannegger schrieb:
> Felix schrieb:
>> Wenn ich das ohne Optimierung in C mache ist das allerdings zu langsam
>> und dauer bei mir 5 Zyklen.
>
> Wenn Dir das Programm mit Optimierung zu schnell ist, nimm einfach nen
> kleineren Quarz, dann kannst Du die Optimierung an lassen.

Hmmm, habe jetzt statt eines 4MHz HC49/U einen ganz kleinen 4MHz 
SMD-Quarz genommen. Läuft aber noch genauso schnell......

[Duck und wech]

Gruß aus Berlin
Michael

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Michael U. schrieb:
> Läuft aber noch genauso schnell.

Musste ihn öfter mal schlafen legen -- die kleinen Quarze schwingen
langsamer an. ;-)

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
Noch kein Account? Hier anmelden.