Forum: Mikrocontroller und Digitale Elektronik ATTINY817 CLKOUT funktioniert nicht


von Nils K. (flying_nils)


Angehängte Dateien:

Lesenswert?

Ich brauche für ein Projekt die UART Schnittstelle vom ATTINY817. Dabei 
bin ich allerdings auf einige Timing Probleme gestoßen und ich vermute, 
dass mein ATTINY nicht auf 20MHz läuft. Unterstützt wird dies durch den 
Takt von dem zum Test programmiert Timer TCA, der keinen Sinn ergibt. 
Ich habe den Takt des ATTINY817 zumindest theoretisch auf 20MHz gestellt 
und wollte dies mit der CLKOUT Funktion überprüfen. Allerdings habe ich 
auf dem Pin PB5 kein Signal. Habe ich etwas falsch gemacht oder die 
ganze Sache falsch verstanden, bzw. wie kann ich den ATTINY817 auf 20MHz 
stellen oder zumindest den momentan vorliegenden Takt überprüfen?
Angefügt ist ein Screenshot von dem Code und einen Ausschnitt aus dem 
Datenblatt.
Danke für die Hilfe!

von Andreas B. (bitverdreher)


Lesenswert?

Die erste Zuordnung auf MCLKCTRLA in clkInit ist korrekt.
Dann überschreibst Du das Ganze nur noch mit 0.
Lies Dir mal das AVR Tutorial, speziell die Bitoperationen durch.

von Johannes S. (Gast)


Lesenswert?

Die Bitoperationen sehen korrekt aus. Aber funktioniert das 
Schreibschutz abschalten auch bei einer Read-Modify-Write Sequenz?
Evtl. erst neuen Registerwert berechnen, CCP schreiben, Register 
schreiben.

von Nils K. (flying_nils)


Lesenswert?

Hab es jetzt einmal so probiert:
1
void clkInit(void){
2
  CPU_CCP = 0xD8;
3
  CLKCTRL.MCLKCTRLA = 0x80;
4
  CPU_CCP = 0xD8;
5
  CLKCTRL.MCLKCTRLB = 0x00;
6
  CPU_CCP = 0xD8;
7
  CLKCTRL.OSC20MCTRLA = 0x02;
8
}

Funktioniert leider immer noch nicht. :(

Trotzdem danke für die Tipps.

: Bearbeitet durch User
von Johannes S. (Gast)


Lesenswert?

Es gibt ein Makro für den sicheren Zugriff auf die geschützten Register:
https://www.microchip.com/webdoc/AVRLibcReferenceManual/group__avr__io_1gaaaa396e67cc85f68fa0474d70edf3d4c.html

Und muss das Clkout evtl per Fuse enabled werden?

von Nils K. (flying_nils)


Angehängte Dateien:

Lesenswert?

Ich habe keine Ahnung warum, aber es hat auf einmal funktioniert!
Ich habe nachträglich noch einmal bei dem Fuse Regster vorbeigeguckt und 
ein bit gefunden, dass das die Konfiguration vom Quarz verhindert (siehe 
Screenshot). Da ich in diesem Register ohnehin nur Run in Standby 
angemacht habe, sollte es eigentlich keinen unterschied machen, habe 
allerdings was interessantes an dem takt Signal gesehen. Ich habe mal 
ein Bild mit und ohne dieser Fuse angehängt. Wie dem auch sei, habe ich 
glaube ich ein 20MHz Signal vorliegen. Sollte ich es richtig berechnet 
haben, sollten auf der Einstellung von 100ns(das Schul-Oszilloskop kann 
leider nicht mehr) pro kasten zwei flanken pro Kasten zu sehen sein(50ns 
Abstand).
Danke für die Tipps!

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.