Attiny1614 UPDI

Gast #6320334
Lesenswert?

Hallo,
ich wollte gerade mal UPDI mit einem Attiny1614 testen. Dazu habe ich 
mir MPLab installiert, den MPLAB PICKIT4 gekauft und GND (PIN 14) VDD 
(PIN 1) und UPDI (PIN 10) verbunden.

Auf dem PICKIT4 ist
2 = VDD
3 = GND
4 = UPDI

Zur Orientierung ist ein Pfeil auf PIN 1 auf dem PICKIT4. Soweit müsste 
es passen..

Nun habe ich in MPLAB ein Projekt mit dem Attiny1614 und eine main.c 
angelegt.(Anhang)

Wenn ich nun versuche die Fuse zu laden, erhalte ich eine Fehlermeldung:
1
Connecting to  MPLAB PICkit 4...
2

3
Currently loaded versions:
4
Application version............1.8.146
5
Tool pack version .............1.0.61
6
Target voltage detected
7

8
The following memory area(s) will be read:
9
configuration memory
10

11
PDI physical timed out. (25)
12
UPDI pin might be configured to other functionality. Try using UPDI High Voltage Activation, configured in the tool's "Communication" property page.
13

14
Read did not complete.

UPDI mit high voltage habe ich wie vorgeschlagen eingestellt. (Zu finden 
unter File -> Project Properties -> PICKIT4 -> Communication -> High 
Voltage Activation Mode: Simples High Voltage Pulse

Das Fuse laden als auch Programmieren funktioniert leider weiterhin 
nicht. Fehlt bei der Beschaltung etwas?

Vor dem Fuse laden hab ich versucht den MCU zu flashen. Kann es sein, 
dass dabei irgendwelche Fuse gesetzt worden sind? Ich habe nicht in 
Erinnerung, dass irgendwas korrekt lief...

Freue mich über Hinweise und Hilfestellungen.
Angehängte Dateien:
#6320363
Lesenswert?

Program schrieb:

> UPDI mit high voltage habe ich wie vorgeschlagen eingestellt. (Zu finden
> unter File -> Project Properties -> PICKIT4 -> Communication -> High
> Voltage Activation Mode: Simples High Voltage Pulse

Meines Wissens funktioniert High Voltage Programming mit PICKIT4 
weiterhin nicht. Es gibt in diversen Foren diverse Diskussionen dazu, 
auch hier. Mir bekannter Status ist, dass es nur mit dem Atmel Power 
Programmer geht. PICKIT4 und Atmel ICE bieten zwar die Funktion, aber 
sie ist tatsächlich nicht implementiert.

Diese Information ist nun schon etliche Monate alt, ich vermute aber, es 
hat sich nie etwas geändert. Um es genau zu wissen, müsstest du 
Microchips Support kontaktieren.

Falls du also die entscheidende Fuse falsch gesetzt hast, bist du 
vermutlich chancenlos und kontrollieren kannst du es auch nicht mehr.
Gast #6320468
Lesenswert?

Dieter R. schrieb:
> Meines Wissens funktioniert High Voltage Programming mit PICKIT4
> weiterhin nicht. Es gibt in diversen Foren diverse Diskussionen dazu,
> auch hier. Mir bekannter Status ist, dass es nur mit dem Atmel Power
> Programmer geht. PICKIT4 und Atmel ICE bieten zwar die Funktion, aber
> sie ist tatsächlich nicht implementiert.

Man kann das ganz einfach "simulieren", indem am UPDI Pin einfach für 
eine kurze Zeit 12V angelegt wird (z.B. von einem Labornetzteil).
#6320483
Lesenswert?

Tester schrieb:

> Man kann das ganz einfach "simulieren", indem am UPDI Pin einfach für
> eine kurze Zeit 12V angelegt wird (z.B. von einem Labornetzteil).

Kann man, wenn es gelingt, das Timing einzuhalten. Daran sind allerdings 
bisher und in der Regel einschlägige Versuche gescheitert. Lt. 
Datenblatt hat man 4 ms Zeit für den Impuls und 14 ms danach muss die 
Kommunikation beginnen.
#6320489
Lesenswert?

> UPDI pin might be configured to other functionality.

Also, von allein kann das nicht passieren.


Program schrieb:
> UPDI mit high voltage habe ich wie vorgeschlagen eingestellt. (Zu finden
> unter File -> Project Properties -> PICKIT4 -> Communication -> High
> Voltage Activation Mode: Simples High Voltage Pulse

Und? Kommt danach keine UPDI-Fehlermeldung mehr?
Gast #6320507
Lesenswert?

Dieter R. schrieb:
> Kann man, wenn es gelingt, das Timing einzuhalten. Daran sind allerdings
> bisher und in der Regel einschlägige Versuche gescheitert. Lt.
> Datenblatt hat man 4 ms Zeit für den Impuls und 14 ms danach muss die
> Kommunikation beginnen.

Jein, der MCU bleibt in der UPDI configuration bis zu einen 
Power-On-Reset, d.h. man hat Zeit vom 12V zum UPDI programmer zu 
wechseln (siehe Seite 443 im Datenblatt). Hat bei mir so auch schon an 
einem attiny412 funktioniert.
#6320536
Lesenswert?

Anmerkung, um das Risiko falsch gesetzter Fuses zu verringern, habe ich 
mir angewöhnt, sie in der Source zu definieren, also z. B.:

FUSES =
{
.WDTCFG  = 0x00,
.BODCFG  = ACTIVE_ENABLED_gc | SLEEP_ENABLED_gc | LVL_BODLEVEL3_gc, // 
2.9 V
.OSCCFG  = FREQSEL_20MHZ_gc,
.TCD0CFG = 0x00,
.SYSCFG0 = CRCSRC_NOCRC_gc | RSTPINCFG_UPDI_gc, // UPDI
.SYSCFG1 = SUT_64MS_gc,
.APPEND  = 0x00,
.BOOTEND = 0x00,
};

Wichtig ist, dass alle Fuses definiert werden, auch nicht benutzte.
Gast #6320561
Lesenswert?

Dieter R. schrieb:
> Anmerkung, um das Risiko falsch gesetzter Fuses zu verringern, habe ich
> mir angewöhnt, sie in der Source zu definieren, also z. B.:

Wo landen die dann nach dem kompilieren? Liest der Programmer die aus 
und setzt sie selber, oder werden sie vom MCU beim booten gesetzt?
#6320567
Lesenswert?

Tester schrieb:
> Dieter R. schrieb:
>> Anmerkung, um das Risiko falsch gesetzter Fuses zu verringern, habe ich
>> mir angewöhnt, sie in der Source zu definieren, also z. B.:
>
> Wo landen die dann nach dem kompilieren? Liest der Programmer die aus
> und setzt sie selber, oder werden sie vom MCU beim booten gesetzt?

Im .elf-File und dann werden sie vom Programmer gesetzt. Funktioniert 
zumindest mit Atmel Studio so.

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