www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR JTD setzen


Autor: Timur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im Datenblatt des ATmeag324P auf Seite 274 steht. Das wenn ich das JTD 
Bit im MCUCR Register setzten will ich folgendes tuen.

"The application software must write this bit to the desired value twice 
within four cycles to change its value."

Nun versuch ich folgendes Optimierung ist natürlich ausgeschaltet.

(Das JTD Bit ist Bit Nummer 7 im MCUSR Register deshalb 0x80)

u8 temp;
  temp=MCUSR;
  temp=temp|0x80;
  MCUSR=temp;
  MCUSR=temp;
  MCUSR=temp;
  MCUSR=temp;
Ich will damit erreichen dass ich die JTAG Pins als I/O Pins nutzen 
kann.
Flashen tue ich das ganze mit meinem DragonBoard über JTAG.

Das Bit wird aber nicht gesetzt.

Hat Jemand vieleicht erfahrung mit dem Problem

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

Bewertung
0 lesenswert
nicht lesenswert
Timur wrote:

> Nun versuch ich folgendes Optimierung ist natürlich ausgeschaltet.

Was daran ,,natürlich'' sein soll, darfst du noch erklären.

Fährst du ,,natürlich'' dein Auto mit angezogener Handbremse,
damit es nicht so schnell fährt?

Genau das ist jedenfalls dein Problem.  Ohne Optimierung generiert
der Compiler Code, der so schnarchlahm ist, dass die 4-Zyklen-
Bedingung nicht eingehalten wird.

Wenn's partout ohne Optimierung sein muss:

http://www.avrfreaks.net/index.php?name=PNphpBB2&f...

Autor: Timur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah ok danke ich werde das gleich mal probieren.
Die Optimierung hatte ich ausgeschaltet weil ich angst hatte das diese 
Codeschnippsel dann wegoptimiert wird

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

Bewertung
0 lesenswert
nicht lesenswert
Timur wrote:

> Die Optimierung hatte ich ausgeschaltet weil ich angst hatte das diese
> Codeschnippsel dann wegoptimiert wird

Zugriffe auf IO-Register werden nie weg optimiert.  Daher ist es
auch eine sichere Bank, zum Debuggen einfach ein
PORTB = 42;

irgendwo einzubauen, da man an dieser Stelle immer einen Breakpoint
setzen kann.

Autor: Timur (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für den Tipp

Den alten Codeschnippsel den ich nur zum debuggen aufgebläht hatte habe 
ich jetzt durch diesen erstzt und die Optimierung im GCC auf Os gestellt 
jetzt funkt es.

*************
MCUCR |= (1<<JTD);
MCUCR |= (1<<JTD);
*************

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.