Forum: Mikrocontroller und Digitale Elektronik xmega Fuse bit im Programm ändern


von Matthias F. (frank91)


Lesenswert?

Hallo

Ich habe den Controller ATXmega128A1U und möchte in meinem Programm die 
Pins verwenden, welche eigentlich für das JTag verwendet werden.
Es gibt ja irgendwie die Möglichkeit dies über defines zu machen, so 
dass ich letztendlich nur noch die elf Datei programmieren muss.

Ich habe hierzu schon folgenden Beitrag gefunden:
Beitrag "Suche ein Beispiel Fuse Bits für Xmega"

Ich habe den code 1 zu 1 kopiert. Aber ich erhalte folgende 
Fehlermeldung:

unknown field 'byte' specified in initializer

Was mache ich falsch? Liegt es vielleicht am neueren Atmel Studio (6.1)?
Der Post ist ja auch schon älter.

Gruß
Matthias

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


Lesenswert?

Matthias Frank schrieb:
> Pins verwenden, welche eigentlich für das JTag verwendet werden.

Warum mit den Fuses herumhacken, was spricht gegen:
1
  CCP = CCP_IOREG_gc;
2
  MCUCR = MCU_JTAGD_bm;

als Teil der MCU-Initialisierung?

von Matthias F. (frank91)


Lesenswert?

'MCUCR' undeclared (first use in this function)
erhalte ich hier als Fehler.

Was genau bewirkst du eigentlich in der ersten Zeile?

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


Lesenswert?

Matthias Frank schrieb:
> 'MCUCR' undeclared (first use in this function)
> erhalte ich hier als Fehler.

Sorry, MCU_MCUCR oder MCU.MCUCR muss es heißen.

> Was genau bewirkst du eigentlich in der ersten Zeile?

Lies dir einfach die Beschreibung von JTAGD durch und dort die Hinweise
auf den configuration change protection (CCP) Mechanismus.

von Matthias F. (frank91)


Lesenswert?

> Lies dir einfach die Beschreibung von JTAGD durch und dort die Hinweise
> auf den configuration change protection (CCP) Mechanismus.

ah ok. ja hab es gefunden :P

Also die Pins scheinen sich jetzt ansprechen zu lassen.
Danke schonmal :P

Wenn ich aber beim Programmieren die Fuses auslese, ist das 
entsprechende Bit noch gesetzt.
Das ist in dem Fall normal oder? Der Controller setzt wahrscheinlich 
jedes mal wenn ich ihn neu starte das entsprechende bit neu anstatt es 
zu speichern?

: Bearbeitet durch User
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Matthias Frank schrieb:
> Das ist in dem Fall normal oder?

Ja.

> Der Controller setzt wahrscheinlich
> jedes mal wenn ich ihn neu starte das entsprechende bit neu anstatt es
> zu speichern?

Richtig.  Die Fuse würde JTAG dauerhaft abklemmen, mit dem JTAGD-Bit
wird es nur während der Programmlaufzeit deaktiviert.  Du könntest
damit folglich immer noch über JTAG programmieren, wenn den den
Controller im Reset hälst (denn dann kann er das JTAGD-Bit ja nicht
setzen).

von Matthias F. (frank91)


Lesenswert?

ah ok, wieder was gelernt :P
danke nochmal

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.