c-hater schrieb:
>> Mike schrieb:
>>> Jetzt frage ich mich, wieso das nötig ist. Beim flashen ist der µC doch
>>> im Reset-Mode, und somit wird auch der Code, der den Prescaler
>>> verändert, gar nicht ausgeführt. Kann mir das jemand erklären?
>>
>> Ich greife diese uralte Fage nochmal auf
>
> Nein, das tust du nicht. Deine Frage ist eine eine ganz andere, eine,
> die schon im steinalten Thread vollkommen erschöpfend behandelt wurde.
Ich habe das jetzt mal real Durchgetestet.
Im Code durch eine Bedingung den Takt auf 128Khz/256 gesetzt: Die CPU
läuft dann auf ca 500Hz, danach ist in der Tat neuprogramieren nicht
mehr Möglich. Auch nach RESET oder ISP RESET nicht solange die Bedingung
true ist.
>> Oder ist es so das der letzte Zustand im CLKPR Register gehalten wird
>> wenn man RESET macht?
>
> Nein. Das nimmt wieder exakt den Zustand an, den die Fuses vorgeben. (Es
> gibt übrigens auch Devices, die auch noch was anderes als 1:1 und 1:8
> per Fuses setzen können)
Offenbar wird doch der letzte Zustand im CLKPR bei RESET hergenommen.
POWERCYCLE nehm ich hier mal explizit raus weil ich das nicht getestet
habe.
Ein Testfall für Tiny13 habe ich im Anhang abgelegt.
Dort wird zuerst mal CLKPR auf Null gesetzt und hat zur Folge das sich
der Controller per ISP noch erreichen lässt. Nur durch "Bedingung
PB3=LOW" wird auf CLK/256 geschaltet. Danach ist der Controller nicht
mehr per ISP erreichbar.
Wenn man die Bedingung nicht erfüllt, also PB3=HIGH dann kann erst nach
einem zweiten RESET wieder per ISP zugreifen.