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!
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.
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.
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
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.