AVR JTD setzen

Gast #1204612
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
Moderator Persönliche Seite #1204626
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&file=viewtopic&t=76590#553836
Moderator Persönliche Seite #1204643
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
1
PORTB = 42;

irgendwo einzubauen, da man an dieser Stelle immer einen Breakpoint
setzen kann.
Gast #1204651
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren