Danke für die Antworten, habe mittlerweile den Fehler gefunden.
Das man mit geringer Frequenz und Spannung stromsparend wird weiß ich, aber trotzdem danke.
Weil ich das erste Mal mit dem Controller arbeite habe ich nur ein ganz kleines Programm. Es gibt nur die Initialisierung (Pin auf Ausgang stellen)
und den Pin togglen lassen mit einer kleinen Pause.
Das Problem ist aber das es viel mehr Register gibt als bei den älteren Controllern. Es gibt bei dem Attiny412 4 Register für die Richtungsumschaltung (Dir, Dirset, Dirclr und Dirtgl) und nocheinmal 4 für das Umschalten (Out, Outset, Outclr und Outtgl).
Das Problem was ich hatte ist, das der Controller 16 oder 20MHz internen Takt besitzt. Ich hatte die 20MHz gewählt gehabt und diese auch für das Delay angegeben.
Es gibt aber noch ein 2tes Register mit einem Prescaler (und ein Bit Prescaler Enable). Der Controller läuft nach einem Reset mit 16MHz (oder 20MHz je nach Fusebit) und Prescaler von 6 (steht auf Seite 59 im DB).
Im Programm kann man dann den Takt umschalten. Es gibt aber ein eigenes Prozedere.
Man muss zuerst in das Register "CPU_CCP" (Konfigurationsschutzregister) den Wert 0xD8 schreiben, damit man den Takt ändern kann.
Anschließend kann man im CLKCTRL Register die Taktquelle (CLKCTRL_MCLKCTRLA) bzw den Prescaler (CLKCTRL_MCLKCTRLB) einstellen.
Als ich den Prescaler mit diesem Prozedere abgeschalten habe hat es funktioniert.
Mein Ablauf für die Schutzschaltung wird so energiesparend wie möglich. Den Takt möchte ich so niedrig wie möglich wählen (aber nur internen Takt) und zusätzlich den Controller in den Tiefschlaf versetzten. Der Watchdog weckt den Controller alle paar Sekunden auf.
MfG Hannes
Lesezeichen