Forum: Mikrocontroller und Digitale Elektronik Attiny1614 UPDI


von Program (Gast)


Angehängte Dateien:

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.

von Tester (Gast)


Lesenswert?

Hast du ein serial-USB converter?
Du könntest dann mal mit https://github.com/mraardvark/pyupdi/ versuchen 
die Fuse auszulesen, dann bist du dir sicher dass dein MCU funktioniert 
und richtig angeschlossen ist - und die Fehlerquelle somit irgendwo 
zwischen Programmer und PC liegen muss.

von Dieter R. (drei)


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.

von Tester (Gast)


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).

von Dieter R. (drei)


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.

von Georg M. (g_m)


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?

von Tester (Gast)


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.

von Tester (Gast)


Lesenswert?

Tester schrieb:
> 443

472, war beim Datenblatt vom 1604

von Dieter R. (drei)


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.

von Tester (Gast)


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?

von Dieter R. (drei)


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.

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.