mikrocontroller.net

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


Autor: Felix (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nun, das einfachste wäre es natürlich, die Optimierung einzuschalten.
;-)
#include <avr/io.h>

void jtd(void)
{
  uint8_t tempreg;

  asm volatile("in %[tmp], %[mcucsr]" "\n\t"
        "ori %[tmp], %[mask]" "\n\t"
        "out %[mcucsr], %[mask]" "\n\t"
        "out %[mcucsr], %[mask]"
        :/* no outputs */
        : [tmp] "d" (tempreg), [mcucsr] "I" (_SFR_IO_ADDR(MCUCSR)),
          [mask] "M" (1 << JTD));
}

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.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael U. schrieb:
> Läuft aber noch genauso schnell.

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.