mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATTINY817 CLKOUT funktioniert nicht


Autor: Nils K. (flying_nils)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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!

Autor: Andreas B. (bitverdreher)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Johannes S. (jojos)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Nils K. (flying_nils)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab es jetzt einmal so probiert:
void clkInit(void){
  CPU_CCP = 0xD8;
  CLKCTRL.MCLKCTRLA = 0x80;
  CPU_CCP = 0xD8;
  CLKCTRL.MCLKCTRLB = 0x00;
  CPU_CCP = 0xD8;
  CLKCTRL.OSC20MCTRLA = 0x02;
}

Funktioniert leider immer noch nicht. :(

Trotzdem danke für die Tipps.

: Bearbeitet durch User
Autor: Johannes S. (jojos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt ein Makro für den sicheren Zugriff auf die geschützten Register:
https://www.microchip.com/webdoc/AVRLibcReferenceM...

Und muss das Clkout evtl per Fuse enabled werden?

Autor: Nils K. (flying_nils)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.