Forum: Mikrocontroller und Digitale Elektronik ATmega644p JTAG


von Peter P. (Gast)


Lesenswert?

Hallo,
ich hoffe nicht, dass ich was wichtiges übersehen habe, aber ich bekomme 
JTAG nicht deaktiviert, um PORTC ganz normal benutzen zu können. Habe 
das Häkchen bei JTAGEN weggemacht und auch schon versucht, JTAG mit
  MCUCR |= (1<<JTD);
  MCUCR |= (1<<JTD);
zu deaktivieren. Wenn ich alle Pins auf high setze, bekommen jedoch zwei 
von ihnen keinen Strom. In jedem Forum wird nur auf den JTAGEN Fuse 
verwiesen, daran kann es bei mir aber eigentlich nicht liegen?! :(
Gruß, Peter

von Oliver J. (skriptkiddy)


Lesenswert?

Peter Physatty schrieb:
> MCUCR |= (1<<JTD);
> MCUCR |= (1<<JTD);

Zwischen dem 1. und dem 2. Schreiben des JTD-Bits, dürfen glaube ich 
nicht mehr als 4 Takten liegen.
Schau mal ins Listing, ob das im Datenblatt geforderte Timing 
eingehalten wird.

Gruß Skriptkiddy

von Peter P. (Gast)


Lesenswert?

Tschuldigung, bin noch Anfänger und weiß nicht wie ich das Prüfen kann. 
:( Aber ich habe ja auch versucht JTAGEN zu deaktivieren. Müsste das als 
Versuch nicht reichen?

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


Lesenswert?

Peter Physatty schrieb:
> Tschuldigung, bin noch Anfänger und weiß nicht wie ich das Prüfen kann.

Faustregel: mit abgeschalteter Optimierung wird es nicht
funktionieren, mit Optimierung hingegen schon.  Ja, Deaktivieren
von JTAGEN sollte genauso genügen, aber "deaktiviert" heißt, dass
die Fuse den Wert "1" haben muss.

von Peter P. (Gast)


Lesenswert?

Klappt aber weder mit JTAGEN auf 1 noch auf 0. :(

von Mike J. (emjey)


Lesenswert?

Füge den Code mal so ein und setze die Optimierung vorher auf "-Os"
1
  cli();
2
  MCUCR |= (1 << JTD);
3
  MCUCR |= (1 << JTD);
4
  sei();
5
  ...
6
for(;;)
7
{
8
  // Main-Loop
9
}

Du kannst es auch mal so probieren:
  MCUCR = (1 << JTD);
  MCUCR = (1 << JTD);

von holger (Gast)


Lesenswert?

>Klappt aber weder mit JTAGEN auf 1 noch auf 0. :(

Fuses schon mal zurückgelesen und kontrolliert
ob der Wert für JTAGEN auch programmiert wurde?

von Peter P. (Gast)


Lesenswert?

Hallo, habe es immernoch nicht hinbekommen. Auf meinem ATmega32 hat's 
mit JTAG deaktivieren geklappt. Auf dem ATmega644p jedoch nicht. Die 
Fused sind auf jeden Fall richtig gesetzt.
Ich verstehe das nicht?! :(

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


Lesenswert?

Es ist zu befürchten, dass dein Fehler ganz woanders liegt.  Da wir
von deinem Aufbau nichts kennen, können wir hier nur raten und dir
nichts wirklich raten. ;-)

Lösch doch mal als erstes den Flash.  Wenn du JTAGEN abgeschaltet
hast, sollten dann nach einem Reset alle IO-Pins "floating" sein,
d. h. weder gegen Vcc noch gegen Masse mit einem Strommesser
irgendwelche nachweisbaren Ströme treiben.

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.